安装卸载使用教程

🔗 常用官方网址

🛠 安装卸载

默认使用docker-ce版本,即社区版

下载

各系统下载教程都可以看官方文档下载说明页进行查询。

  • win/mac:在Docker下载页 选择系统版本下载可视化软件(一般会自动识别系统),
  • Linux:使用命令下载。

debian:10.10 buster

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#1. 安装前先尝试删除旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

#2. 安装依赖,如下链接为外网,若访问慢可替换为国内链接
#https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release

# curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#使用清华镜像
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

#echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#使用清华镜像
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

centos:7

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#1. 安装前先尝试删除旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

#2. 安装依赖,如下链接为外网,若访问慢可替换为国内链接
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#国内链接:https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

#2.1 centos系统使用国内链接下载repo后,需要将文件内部的download.docker.com 地址换成 mirrors.tuna.tsinghua.edu.cn/docker-ce,命令如下:
sudo sed -i "" "s+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+g" /etc/yum.repos.d/docker-ce.repo
#需要注意:因为在mac下,sed命令`-i`后面需要说明备份文件名称,如果不备份文件,也需要名称字段留空,所以`-i` 后面必须要加` ""`,否则会报错。

安装

debian:10.10 buster

1
2
3
4
5
6
7
8
9
#1. 安装命令,默认安装最新版
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

#1.1 指定版本进行安装,<VERSION_STRING>代表版本号,例:18.09.1
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

#2. 检查安装状态,查看版本
docker version

centos:7

1
2
3
4
5
6
7
8
#1. 安装命令,默认安装最新版
sudo yum install docker-ce docker-ce-cli containerd.io

#1.1 指定版本进行安装,<VERSION_STRING>代表版本号,例:18.09.1
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

#2. 检查安装状态,查看版本
docker version

启动

1
2
#1. 启动docker
sudo systemctl start docker

卸载

debian:10.10 buster

1
2
3
4
5
#1. 移除docker以及依赖
sudo apt-get purge docker-ce docker-ce-cli containerd.io
#2. 删除资源目录
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

centos:7

1
2
3
4
5
#1. 移除docker以及依赖
sudo yum remove docker-ce docker-ce-cli containerd.io
#2. 删除资源目录
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

国内镜像加速

📝jordy的个人账号🔗镜像加速地址

1
2
3
4
5
6
7
8
9
#可以自己先看一下是否有配置文件,没有则新建配置文件,写入镜像地址,重载 重启
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://7huwknxy.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

MacOs

  1. 在任务栏点击 Docker Desktop 应用图标 -> Perferences
  2. 在左侧导航菜单选择 Docker Engine,在右侧输入栏编辑 json 文件。
  3. 将加速地址添加到“registry-mirrors”的数组里
  4. 点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。

📝 常用命令

帮助命令

1
2
3
4
docker version    #docker版本信息
docker info #docker详细信息
docker --help #docker的所有命令说明
docker 命令 --help#可以查询对应命令的帮助说明

镜像命令

  • 查看本机上已安装的镜像docker images

解释

REPOSITORY 镜像的仓库源

TAG 镜像标签

IMAGE ID 镜像ID

CREATED 镜像创建时间

SIZE 镜像大小

1
2
3
# 可选项
-a, --all # 列出所有镜像
-q, --quiet # 只列出镜像ID
  • 搜索镜像docker search 镜像
1
2
3
# 可选项
-f # 过滤
docker search python -f=STARS=1000 # 搜索出镜像STARS数量大于1000的
  • 下载镜像docker pull
1
2
docker pull python  # 默认下载最新版
docker pull python:3.10.0-slim # 下载指定版本,镜像后面接`:version`
  • 删除镜像docker rmi 镜像ID
1
2
3
4
docker rmi -f {镜像ID}       #删除镜像
docker rmi -f {镜像ID} {镜像ID} {镜像ID} #删除多个镜像
#扩展命令
docker rmi -f $(docker images -aq) #删除查出来的所有镜像
  • 查看镜像的Dockerfile操作记录docker history {镜像ID}

容器命令

  • 启动并运行容器docker run
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker run [可选参数] {镜像}
# 参数署名
--name "RongName" # 运行的容器名称,用来区分容器
-d # 后台运行
-it # 使用交互方式运行,进入容器查看内容 docker run -it centos /bin/bash
-p # 指定容器的端口
-p 127.0.0.1:8080:8080 #iP:主机端口:容器端口
-p 8080:8080 #主机端口:容器端口 (常用)
-p 8080 #容器端口
-P # 随机指定端口

#此命令运行步骤
#1. 查找本地镜像
#2. 有->运行,无->搜索dockerhub公共镜像下载安装然后运行

# 扩展命令
docker run -it --rm python:3.10.0 #容器停止后就直接删除容器,一般测试的时候用
  • 列出当前运行的容器docker ps
1
2
3
4
docker ps # 列出当前正在运行的容器
-a # 列出当前正在运行的容器+历史运行过的容器
-n=? # 显示最近创建的?个容器
-q # 只显示容器ID
  • 退出容器
1
2
exit  # 直接停止并退出容器
ctrl+p+q # 容器不停止,退出容器
  • 删除容器docker rm
1
2
3
4
5
docker rm {容器ID}   # 删除置顶的容器,不能删除正在运行的容器
-f # 强制删除
#扩展命令
docker rm -f $(docker ps -aq) #强制删除查询出来的所有容器
docker ps -a -q|xargs docker rm #删除所有容器,将查询出来的所有容器,管道传递给过滤命令xargs,删除
  • 启动/停止容器的操作
1
2
3
4
5
docker start {容器ID}  # 启动
docker restart {容器ID} # 重启
docker stop {容器ID} # 停止
docker kill {容器ID} # 强制停止
docker stats {容器ID} # 查看容器运行状态

其它常用命令

  • 后台启动命令docker run -d centos

常见的坑:centos,nginx等 执行后台启动后,使用 docker ps查看容器运行,发现centos停止了。

说明:容器使用后台运行,需要一个前台进程,docker发现没有应用/没有提供服务,就会自动停止。 > 就是容器需要里面有操作,例如打印日志等等。

  • 查看日志命令docker logs
1
2
3
4
docker logs -f -t --tail 10 {容器ID} #实时查看容器最近10条日志

#测试方法:运行一个centos镜像,执行脚本,内容为循环打印字符串
docker run -d centos:7 /bin/sh -c "while true;do echo \"wtf????\";sleep 1;done"
  • 查看容器内的进程信息docker top {容器ID}
  • 查看镜像元数据docker inspect {镜像ID}
  • 进入当前正在运行的命令

通常容器都是后台运行的,会需要进入容器进行操作。

1
2
docker exec -it {容器ID} /bin/bash # 进入容器后,开启一个新的终端,可以进行其它操作。 -it交互
docker attach {容器ID} # 进入容器正在执行的终端,不会启动新进程
  • 拷贝文件命令docker cp
1
2
3
docker cp {容器ID}:/home/test.conf /home # 将容器内指定文件 拷贝到当前宿主机指定目录下
#说明,容器是否运行不影响数据存在,除非删除容器才会删除数据
#另外,正式运行的时候会使用-v 卷的技术,同步容器内的数据到宿主机,不需要手动去拷贝。

命令小结

常用命令图解

🚮 安装一些服务

nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
docker pull nginx:1.20-alpine
docker images

# -d 后台运行 -p 宿主:nginx端口映射
# 容器名称
# 自定义网络名称
# 挂载配置文件目录,注意需要改目录存在配置文件 否则挂载失败
# 挂载日志目录
# 配置容器内网ip
# 启动nginx的镜像版本
docker run -d -p 2333:80 \
--name ng1 \
--net netjordy \
-v /home/jordy/etc/volume/ng1:/etc/nginx:rw \
-v /home/jordy/log/volume/ng1:/var/log/nginx:rw \
--ip 172.20.0.2 \
nginx:1.20-alpine

#nginx官方镜像自带Linux内核,故运行后可以进去修改配置文件,-v挂载后,可直接在宿主机修改配置,注意需要改目录存在配置文件 否则挂载失败
docker exec -it ng1 /bin/bash

查看[[Nginx#Nginx配置文件|Nginx配置文件]]修改方式

💿 镜像操作

Commit镜像

原始镜像运行后的容器里的其它操作,如果不想每次都修改,需要更新为新的镜像,则需要用提交命令打包为新镜像。

1
docker commit -m="提交的描述信息" -a="作者" {容器ID} {镜像名}:{tag}

💾 容器卷操作

卷挂载

问题:容器运行产生的数据或运行配置,删除容器后,数据就会丢失,如何保持数据持久存在,配置可在容器外随时修改?

可使用容器卷技术,即将容器内的目录,挂载到宿主机上,这样目录就会双向绑定,任何一边的修改,另一边都会生效。 > 同时,也可以解决不同容器相互隔离的问题,不同的容器也可以共享数据。 > ⚠️只有修改数据会同步,若关闭容器/删除容器,挂载到宿主机的数据不会丢失。

容器卷挂载命令 -v 宿主机目录:容器内目录,类似端口映射命令,将容器目录映射到宿主机。

1
2
3
4
5
6
7
8
# 挂载容器卷
docker run -d -P --name nginx001 -v /home/tsts/nginx:/etc/nginx nginx

#挂载成功后,使用docker inspect,可以在 Mounts键 里查看挂载信息
docker inspect {容器ID}

#也可以查看所有的挂载容器sha256
docker volume ls

具名/匿名挂载

1
2
3
4
5
6
7
8
9
10
11
12
13
-v 容器内路径   # 匿名挂载
-v 自定义卷名:容器内路径 # 具名挂载
-v 宿主机路径:容器内路径 # 指定路径挂载

# 匿名挂载:
docker run -d -P --name nginx01 -v /etc/nginx nginx

# 具名挂载:
# 此时,容器sha256会被替换成自定义名称,查看挂载的时候可以方便区分
docker run -d -P --name nginx02 -v juming_nginx:/etc/nginx nginx

# 查看具名挂载的详细信息,包含路径等
docker vlume inspect juming_nginx

⚠️:例如nginx挂载的时候,如果指定宿主机目录,宿主机的文件与容器目录文件不一致,nginx容器会启动失败, 所以挂载前,最好找一个通用的nginx配置目录文件放在宿主机目录内

容器数据共享

容器01挂载了1个目录volume01,其它容器如果想共享容器01挂载的目录,启动时使用--volumes-from{共享容器}继承容器01的目录,大家都可以使用这个共享目录,此时容器01就是一个数据卷容器。

数据卷容器,停止或者运行,都可以被继承。如果被删除了,则不可以被继承。

1
2
3
docker run -it --name dk01 -v /home/volume01 centos:7.9.2009
docker run -it --name dk02 --volumes-from dk01 centos:7.9.2009
docker run -it --name dk03 --volumes-from dk01 centos:7.9.2009

应用场景:容器之间可以进行配置信息的传递,当配置多个容器,不需要重复配置,只需要继承.

扩展

挂载目录的权限:通过 -v [路径配置]:ro 或 :rw 可以改变挂载目录的读写权限

1
2
3
4
5
6
ro readonly  # 只读,仅宿主机可操作,容器内无法写入数据
rw readwrite # 可读写

# 一旦设置了容器权限,容器对挂载出来的内容就有了限定约束
docker run -d -P --name nginx03 -v juming_nginx03:/etc/nginx:ro nginx
docker run -d -P --name nginx03 -v juming_nginx03:/etc/nginx:rw nginx

小结

不论是具名/匿名,所有容器内的卷,若没有指定宿主机目录,一般都是在/var/lib/docker/volumes/{具名、容器sha256}/_data下。

所以通过具名挂载,可以方便在volumes目录下查找自己的挂载容器目录。

📖 Dockerfile

介绍用例

Dockerfile是用来构建docker镜像的构建文件,是一个命令脚本。文件内的每一条命令,就是每一层镜像。

基础知识

  1. 每个保留关键字(指令)都必须是大写字母
  2. 执行顺序从上到下
  3. ==#==表示注释
  4. 每一个指令都会创建提交一个新的镜像层
  5. 文件名最好用Dockerfile

使用Dockerfile构建镜像

1
2
#注意最后有一个 .
docker build -f /Users/jordydrins/JCode/DockerJordy/tsts/Dockerfile -t jordy-centos:1 .

构建过程

  1. 构建Dockerfile文件,编写源码
  2. 通过构建的文件生成镜像,打包发布
  3. 运行镜像,创建容器提供服务

指令

⚠️ Docker Hub中,99%的镜像都是从基础镜像进行构建的:FROM scratch

指令 注释
FROM 基础镜像,一切从这里开始构建
MAINTAINERLABEL 镜像时谁写的,指定维护者信息,一般写姓名,邮箱等。——命令已弃用作用同上,新写法使用key=value key=value
RUN 镜像构建的时候需要运行的命令
ADD 添加压缩包,例如需要安装nginx,需要导入压缩包运行,后面带路径会自动解压
WORKDIR 镜像的工作目录
VOLUME 挂载的目录,只能匿名挂载:VOLUME [“volume1”,“volume2”]
EXPOSE 指定对外暴露的端口,运行时就不需要写 -p命令
CMD 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被docker run 附带的命令替换
ENTRYPOINT 指定这个容器启动的时候要运行的命令,docker run附带的命令会追加在后面执行
ONBUILD 当构建一个被继承Dockerfile,此时会运行该指令。是一个触发指令
COPY 类似ADD命令,将文件拷贝到镜像中
ENV 构建的时候设置环境变量

构建用例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
FROM centos:7.9.2009
LABEL uname="jordy" mail="upfront_saloon0a@icloud.com" version="1.0"

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install epel-release
RUN yum -y install nginx

EXPOSE 80

CMD echo $MYPATH
CMD echo "------>jordy dockerfile end<------"
CMD /bin/bash

📡 Docker网络

Docker网络概述

使用 docker network ls可以查看docker的所有网络列表,使用docker network inspect {netNAME}可以查看网络名的具体配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 查看docker的网络
🐱 jordy🗂 ~ :docker network ls
NETWORK ID NAME DRIVER SCOPE
f47fb2873554 bridge bridge local
1997eb7b6c54 host host local
e3abf1a768e1 none null local
# 查看NAME为bridge网络的具体配置
🐱 jordy🗂 ~ :docker network inspect bridge
[
{
"Name": "bridge",
"Id": "f47fb2873554fdf12029f366a30d001514d58b6fbb7a200bb6dff88437cbeb75",
"Created": "2021-11-29T19:42:47.601325084+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]

网络模式

  • bridge:桥接docker(默认, 自己创建的也可以使用bridge模式)
  • null:不配置网络
  • host:和宿主机共享网络
  • container:容器网络连通(用得少,局限性很大!)

启动示例

正常启动Docker的时候,默认是bridge(注意这个是docker0的NAME),使用bridge模式。 若想指定启动的网络配置,则需要使用--net命令指定需要启动的网络NAME。

1
2
3
4
5
docker run -d -P --name ng1 --net bridge nginx:1.20-alpine
#等同于
docker run -d -P --name ng1 nginx:1.20-alpine

#docker0特点:默认使用的,不能使用域名访问,--link可以打通连接。

Docker0

Docker安装后会创建一个默认网卡 Docker0,默认ip172.17.0.1。相当于路由网关,可给容器分配内网ip,并使用网桥连接各个容器。

Dockero0的默认ip可以更改,编辑/etc/docker/daemon.json文件,添加{"bip":"192.168.0.1/16"},value自行配置网段,避免与宿主机同网段,重启Docker服务即可。

Docker0示例

每启动一个容器,Docker0就会创建一个新的网卡,宿主机与容器双向绑定,也就是每一个容器创建的网卡都是一对一对的,这里面使用到的就是==evth-pair==网桥技术,充当一个桥梁,链接各种虚拟网络设备。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#查看宿主机IP信息
~:ip addr
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:bd:6c:68:c3 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:bdff:fe6c:68c3/64 scope link
valid_lft forever preferred_lft forever
237: veth9efcd88@if236: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 82:a8:a5:a5:8a:53 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::80a8:a5ff:fea5:8a53/64 scope link
valid_lft forever preferred_lft forever
239: veth4e9db6c@if238: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 16:97:1b:53:f7:a1 brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet6 fe80::1497:1bff:fe53:f7a1/64 scope link
valid_lft forever preferred_lft forever

#查看容器1IP信息
~:docker exec -it 4b69baf5be49 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
238: eth0@if239: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
#查看容器2IP信息
~:docker exec -it b2e57bbb3695 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
236: eth0@if237: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever

Docker0连接特性

  • Docker0作为类似路由器网关的作用,链接各个容器,使各容器、Docker0之间可相互ping通,但不同的容器之间不是直接ping通,而是:容器1 – Docker0 – 容器2
  • docker0之间不能使用容器名称ping通,必须使用ip。
  • 容器启动可指定内网ip,若不指定容器启动ip,Docker0会默认自动分配内网ip。
  • 容器删除/容器停止,都会删除掉网桥对。

若想2个容器之间不通过Docker0网桥,想直接连接2个容器,--link可以在启动容器的时候,指定链接的另一个容器。

docker run -it --name ng2 --link ng1 nginx:1.20-alpine ping ng1

需要注意的是,只能正向ping通,也就是连接方ng2 ping被连接方ng1。若想双向ping,则需要双向link。link成功后,可以在容器的/etc/hosts文件中查看到绑定的dns解析。

小结

  • -link配置就是host的dns解析,真实配置不推荐使用。

同时也不推荐使用Docker0,它问题是不支持容器名的连接访问。

推荐==自定义网络==。

自定义网络

自定义网络可以ping容器名称,也不需要相互link,相当于docker0+link的完全版。

对于redis、mysql等集群来说,不同的集群使用各自的自定义网络,双方的内网相互不影响,保证集群的安全和健康。

自定义网络命令

​ –driver bridge: 指定模式

​ –subnet 172.18.0.0/16: 指定IP段

​ –gateway 172.18.0.1: 指定默认网关

docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 {mynetname}

网络连通

假如配置了2个网络,网络A网络B,此时2个网络互相不影响,各自的容器只能在网络内部互相访问。

如果需要不同网络的容器可以连通,不能直接将2个网络进行网卡打通,会影响网络。

此时需要需要使用connect命令,将网络A的容器1,启动时,配置到网络B中。

docker network connect {netNAME} {容器名}

通过查看网络的配置可以发现,网络B直接给网络A的容器1,创建了一个B里面的ip,也就是说,这个容器同时拥有了2个ip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#将默认网络的容器ng1,连接到自定义网络mynetname中
🐱 jordy🗂 ~ :docker network connect mynetname ng1
#查看自定义网络mynetname配置,新增了一个默认网络的容器1的ip
🐱 jordy🗂 ~ :docker network inspect mynetname
[
{
"Name": "mynetname",
"Id": "cac6e143e63a11904a771349444e1e45139c39c12b44b2f5a4aab5379576201a",
"Created": "2021-12-01T12:24:22.299293052+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"7218dcde91909f7a18c5e6904a7dffc6cf86caa102909208b75b7a9ea6066084": {
"Name": "ng1",
"EndpointID": "7c2e5afb748129c6d135ab9d1d2049513b4cf37b46feee0d8287b5d98ba5d646",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"7232a077946709c3c1cec200a9179fc6157ef740cda31cdc3bf600d87acc9f14": {
"Name": "ng-net1",
"EndpointID": "114f540140de449c32bfda80ba95e9a40ca327ec094176489aed62c23aab17b3",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]

📦 部署Redis集群

📎 附件

命令注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set
with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit

Management Commands:
app* Docker App (Docker Inc., v0.9.1-beta3)
builder Manage builds
buildx* Build with BuildKit (Docker Inc., v0.6.3-docker)
config Manage Docker configs
container Manage containers
context Manage contexts
image Manage images
manifest Manage Docker image manifests and manifest lists
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
scan* Docker Scan (Docker Inc., v0.9.0)
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes

Commands:
attach Attach local standard input, output, and error streams to a running container
build 用 Dockerfile 打包镜像
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec 在正在运行的容器中执行命令
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats 实时显示容器的资源使用情况
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes