docker简易入门(极简,纯干货)

简介

Docker是一种容器化平台,它可以用来轻松地创建、部署和运行应用程序和服务。Docker使用容器技术来管理应用程序的运行环境,它将应用程序和服务打包到一个易于移植的容器中,然后在任何地方运行这个容器,无需担心不同环境之间的差异。使用Docker,您可以轻松地构建、测试、部署和扩展应用程序,从而大大提高了开发和部署的效率。Docker的核心是Docker引擎,它是一个轻量级的运行时环境,可以在任何操作系统上运行。Docker还提供了一系列命令行工具和API,使开发人员和系统管理员可以轻松地管理Docker容器和镜像。

核心

Docker的核心是Docker引擎(Docker Engine),它是一个开源的容器化技术,能够简化应用程序的开发、部署和管理。

Docker Engine包括以下几个核心组件:

1. Docker守护进程(Docker daemon):Docker守护进程是运行在主机上的长期运行的进程,用于管理Docker容器、镜像、网络、数据卷等资源。

2. Docker客户端(Docker client): Docker客户端是Docker命令行工具,用于与Docker守护进程进行通信,同时也是用户与Docker交互的主要方式。

3. Docker镜像(Docker image): Docker镜像是一个只读的模板,它包含了用于创建Docker容器的文件系统和应用程序。

4. Docker容器(Docker container): Docker容器是由Docker镜像创建的运行实例,可以运行应用程序及其依赖项,同时具有隔离和可移植性。

5. Docker仓库(Docker registry): Docker仓库是用于存储Docker镜像的中央存储库,可以是公共的或私有的,用户可以从中拉取Docker镜像来创建和运行容器。

以上组件结合在一起就形成了Docker的整体架构,帮助用户快速、高效地构建、发布和管理软件应用程序。

实战

docker安装

linux自动安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

或者

curl -sSL https://get.daocloud.io/docker | sh

或者通过宝塔控制面板

......

linux离线安装

离线安装包下载

Index of linux/static/stable/x86_64/

你可以先找一个顺眼些的包下载(结合实际情况,不建议使用最新版本,相对不稳定)

可以直接下载到你本地电脑再上传到测试机,也可以直接在你的测试机上下载

wget https://download.docker.com/linux/static/stable/x86_64/docker-17.12.1-ce.tgz  

解压

tar -zxvf docker-17.12.1-ce.tgz

cp docker/* /usr/bin/

cd /etc/systemd/system/

vi docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
  
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
  
[Install]
WantedBy=multi-user.target

保存并退出:wq

然后授权

chmod +x /etc/systemd/system/docker.service
# 重新加载配置文件(每次有修改docker.service文件时都要重新加载下)
systemctl daemon-reload
# 启动
systemctl start docker
# 设置开机启动
systemctl enable docker.service

 如果出现意外情况,请自行百度吧,很多情况就不说了哈,这里只讲成功的情况

控制面板

当然有很多这个控制面板,我这里就直接选择了SimpleDocker,当然你也可以忽略直接使用命令

 docker pull registry.cn-hangzhou.aliyuncs.com/seven-tao/simple-docker:0.0.7.1

创建一个进入某个文件夹创建docker-compose.yaml

然后编辑

version: '3'
services:
  redis:
    image: redis:latest
    restart: always
  web:
    image: registry.cn-hangzhou.aliyuncs.com/seven-tao/simple-docker:0.0.7.1
    restart: always
    ports:
      - "9091:4050"
    volumes:
      - /tmp/simple-docker/back:/tmp/back
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - redis

然后在该文件所在文件夹执行

docker compose up -d

 我这里有很多,你们先忽略哈哈,你们应该只有最后两条

docker常见命令

pull拉取镜像
push推送镜像

search查询镜像

run创建并运行
start/stop/restart启动已被停止的容器/停止容器/重启
kill杀死运行中的某个进程
rm删除一个或多个容器
rmi删除一个或多个镜像
pause暂停容器中的所有进程
unpause恢复所有进程
create创建一个信容器但不启动
exec容器中执行
images镜像
ps列出运行中的容器
stop停止
inspect查看容器或镜像的详细信息。
build使用Dockerfile文件构建一个新的Docker镜像。
docker-compose使用docker-compose.yml文件管理多个容器的运行和停止

 以上就是比较常见的命令了,相对不常见我就不列出来了

配置加速器

linux

/etc/docker/daemon.json

{
  "registry-mirrors" : [
    "https://hub-mirror.c.163.com"
  ]
}
windows

找到你的docker安装目录进入\.docker,我这里装的是docker desktop

它不让选择地址,默认就是我的C:\Users\Administrator\.docker这个位置

编辑它就对了

我这里地址不一样哈

例子

安装软件

docker ps

可以看到我现在没有运行中的容易,好的

那我加一个容器

就拿redis来做例子吧

可以看到仓库中存在这些redis镜像

你可以选择某一个镜像进行下载,可以拉取

docker pull ~~~~~~~

我这里就直接一点直接运行

docker run -d -p 6379:6379 --name redis redis:latest

 可以看到redis直接给跑起来了,实际上你直接用docker run  它会检测你本地存不存在这个镜像,不存在它会pull拉取到你所指定的版本,存在就直接创建容器运行

目录挂载
volume挂载数据卷

我创建了一个为redis的数据卷

然后查询了这个数据卷的信息

docker run -d -p 6379:6379 --name redis-2 -v redis:/data redis:latest --appendonly yes --requirepass zkb.com

然后用可视化工具连接这个redis试试

可以看到连接成功,但是没有什么数据,数据卷里面肯定也是空的,那我们造点数据

docker exec -it redis-2 bash

redis-cli

auth zkb.com

set zxs 123456

get zxs

bind mount挂载主机目录

可以看到我们的宿主机是window操作系统

我在宿主机里面创建了  conf与data两个文件夹

conf里面创建了redis.conf配置文件

这个配置你们可以使用默认的也可以根据自己的实际情况配置

docker run -p 6379:6379 --name redis -v /E/docker/redis/conf:/etc/redis/redis.conf  -v /E/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

这样我们的宿主机挂载就成功了

这里主要说明一下,如果宿主机挂载的宿主机为window则需要把 你的盘符修改为   /你的盘名/~~

例如我挂载的目录在E盘   那么我的挂载路径应为

/E/docker/redis/conf:/etc/redis/redis.conf  -v /E/docker/redis/data:/data

 我们经常download别人工程是不是总是看到别人带了一个Dockerfile文件,是不是不明白它是干嘛的,别着急我来说说

 我这边就随便写个访问计数吧

然后我这个demo需要发布到docker里面,怎么搞

创建Dockerfile
# 设置基础镜像
FROM adoptopenjdk/openjdk11

# 将JAR文件添加到镜像中
ADD target/demo1-0.0.1-SNAPSHOT.jar demo.jar

# 定义容器启动命令
ENTRYPOINT ["java", "-jar", "/demo.jar"]

这边我就在本地pack了,那怎么执行这个Dockerfile呢

创建镜像
docker build -t demo-image .

 注意最后面的 “ .”  这个是不能忽略的

 

 已经做成镜像放到docker里面了哈

执行
docker run -d -p 6333:6333 demo-image

测试

已经ok了,当然我这里写的是最简单的Dockerfile

Docker-compose

当我们有多个服务,依赖又非常多,那么我们需要把这些服务聚合到一起,就需要写一个

docker-compose.yml

就如之前我们的控制面板,依赖了redis。。。。,那我们要把它集合到一起,就写了一个docker-compose.yml,当然也可以分开,你得提前做好容器直接的通讯,我这里只做例子

制作docker-compose.yml
version: '3'
services:
  redis:
    image: redis:latest
    restart: always
  web:
    image: registry.cn-hangzhou.aliyuncs.com/seven-tao/simple-docker:0.0.7.1
    restart: always
    ports:
      - "9091:4050"
    volumes:
      - /tmp/simple-docker/back:/tmp/back
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - redis
执行docker-compose.yml
docker compose up -d

容器间通讯

都知道docker容器直接都是互相隔离的,应此容器之间无法ping信息,那么这些容器之间维护一套网络模式,是不是可以通讯呢

创建网络

docker network create zxs-net
docker run -d --name redis --network zxs-net --network-alias redis redis:latest

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/139230.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一篇文章带你全面了解地埋一体机(雨水净化消毒一体机)

一、地埋一体机(雨水净化消毒一体机) 此设备集雨水过滤、消毒、排污于一体,通过六向阀手柄位置切换可实现过滤、消毒、反冲洗、排污等不同功能。 二、产品参数 三、产品功能介绍 地埋一体机由不锈钢壳体、砂缸、六向阀、消毒装置等部分组成。…

2023年CKA考试真题及注意事项

2023年CKA考试真题及注意事项 注意事项考试题目原题解析1.RBAC2.节点维护3.K8S组件升级 1.28.0升级到1.28.14.Etcd备份与恢复5.NetworkPolicy6.Service7.Ingress8.指定节点部署9.检查Node节点健康状态10.一个Pod多个容器11.监控Pod度量指标12.监控Pod日志13.PersistentVolumeCl…

淘宝开放平台订单接口免申请审核接入规则

大家都知道,想要实现自动化批量获取淘宝的商品订单数据,离不开淘宝开放平台API接口。想要获取API调用权限,需要经过淘宝开放平台的严苛审核流程。并且,现在平台基本不开放新的应用权限了。像很多做ERP的公司,他们的客户…

Qt 线程串口

文章目录 ui设置创建线程函数初始串口run函数接收发送数据读取数据处理读取的数据写入数据写入启动的命令 主线程 ui设置 创建线程函数 #include <QObject> #include <QThread> #include <QSerialPort> #include <QSerialPortInfo>class SerialPort :…

Leetcode刷题详解——解数独

1. 题目链接&#xff1a;37. 解数独 2. 题目描述&#xff1a; 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能…

微信小程序_02

能够使用WXML模版语法渲染页面结构 数据绑定 1、数据绑定的基本原则 在data中定义数据在WXML中使用数据 2、在data中定义页面的数据 ​ 在页面对应的.js文件中&#xff0c;把数据定义到data对象中即可&#xff1a; Page({data:{//字符串类型的数据info:init data,//数组类…

【python自动化】Playwright基础教程(七)Keyboard键盘

【python自动化】Playwright基础教程(七)Keyboard键盘 playwright模拟键盘操作 键盘事件提供了用于管理虚拟键盘的API&#xff0c;高级API是keyboard.type()&#xff0c;它使用的是原始字符再页面上生成对应的keydown 、 keypress / input 和 keyup 事件。 模拟真实键盘操作进行…

【网络奇幻之旅】那年我与大数据的邂逅

&#x1f33a;个人主页&#xff1a;Dawn黎明开始 &#x1f380;系列专栏&#xff1a;网络奇幻之旅 ⭐每日一句&#xff1a;循梦而行&#xff0c;向阳而生 &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️ 文章目录 &#x1f4…

Python GUI - Tkinter 添加应用程序图标(程序左上角)

将ico图标文件放在py文件同级目录&#xff0c;然后加上以下代码 root.iconbitmap("./test.ico")

Linux centos安装SQL Server数据库,结合cpolar内网穿透实现公网访问

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库&#xff0c;并结合cpolar内网穿透工具&#xff0…

西部数码的域名如何实现DDNS功能

功能简介&#xff1a; 动态域名解析&#xff08;Dynamic DNS&#xff0c;简称DDNS&#xff09;可以让用户使用固定的域名来访问动态IP地址&#xff0c;解决因IP地址变化造成服务无法访问的情况。 本文将介绍如何使用西部数码的API实现DDNS功能&#xff0c;使您的域名始终指向您…

MySQL索引优化

EXPLAIN详解 优先了解EXPLAIN&#xff0c;文章链接在下面。 EXPLAIN详解&#xff08;MySQL&#xff09; 索引数据结构 MySQL主要有两种结构&#xff1a;hash索引和BTree索引&#xff0c;InnoDB引擎默认是BTree索引。 索引分类 聚簇索引&#xff1a; 指索引的键值的逻辑顺…

乡镇村污水处理智慧水务智能监管平台,助力污水监管智慧化、高效化

一、背景与需求 随着城市化进程的加速&#xff0c;排放的污水量也日益增加&#xff0c;导致水污染严重。深入打好污染防治攻坚战的重要抓手&#xff0c;对于改善城镇人居环境&#xff0c;推进城市治理体系和治理能力现代化&#xff0c;加快生态文明建设&#xff0c;推动高质量…

Facebook个人主页和公共主页的区别

Facebook个人主页和公共主页是两种不同类型的页面&#xff0c;它们在功能、用途和管理方面上都是存在着一些明显的区别。本文小编则对他们的区别介绍一下。 首先&#xff0c;个人主页是供普通用户使用的&#xff0c;用于展示个人信息和与朋友、家人保持联系。个人主页通常包括…

阿里云国际站:专有网络vpc

文章目录 一、阿里云专有网络的概念 二、专有网络的组成部分 三、专有网络的优势 一、阿里云专有网络的概念 专有网络VPC是阿里云用户在云上创建的私有网络&#xff0c;用户自己掌控&#xff0c;可以自定义IP地址段、创建交换机、配置路由表和网关等操作。用户可以在自己的专…

VR建筑仿真场景编辑软件有助于激发创作者的灵感和创造力

随着VR虚拟现实技术的不断发展和普及&#xff0c;VR虚拟场景编辑器逐渐成为了VR场景开发重要工具。它对于丰富和完善VR虚拟现实内容的创建和呈现具有重要的意义&#xff0c;为我们的工作和教学带来了许多变化和可能性。 首先&#xff0c;VR虚拟场景编辑器对于提升用户体验具有重…

ChatGPT重磅升级 奢侈品VERTU推出双模型AI手机

2023年11月7日,OpenAI举办了首届开发者大会,CEO Sam Altman(山姆奥尔特曼)展示了号称“史上最强”AI的GPT-4 Turbo。它支持长达约10万汉字的输入,具备前所未有的长文本处理能力,使更复杂的互动成为可能。此外,GPT-4 Turbo还引入了跨模态API支持,可以同时处理图片、视频和声音,从…

springboot运维篇--springboot项目打包

1.springboot项目jar方式部署 直接使用idea 直接使用命令 跳过测试用例快速打包 mvn clean -D skipTests package将这个应用打成jar包&#xff0c;直接使用java-jar的命令执行 需要注意的是&#xff0c;需要 jar 命令行启动需要依赖 Maven 插件的支持&#xff0c;必须确认在…

软考网络工程师知识点总结(三)

目录 41、特殊地址 42、子网划分 43、CIDR路由汇聚 44、IP数据报 45、ARP协议 46、ICMP协议 47、IPv6地址表示及类型 48、IPv6地址前缀 49、IPv4过渡IPv6 50、UDP传输层协议 51、TCP传输层协议 52、TCP头部中常见字段的含义&#xff1a; 53、TCP的流量控制和拥塞控…

浏览器插件实现国税网自动登录,以及解决浏览器记住密码会自动填充表单无法修改的问题

公司的做账系统&#xff0c;用户在系统里设置保存了国税网的账号密码以后&#xff0c;下次点击进入国税网&#xff0c;能够直接进入国税系统。 之前的解决方案是pupptteer模拟登录一遍拿到cookie等登录凭证后&#xff0c;保存到数据库&#xff0c;然后插件请求接口拿到cookie&…