Docker 基本使用

停止并删除所有容器

1
$ docker stop $(docker ps -q) docker rm $(docker ps -aq)

清理镜像

1
2
3
4
5
# 清理 dangling 镜像
$ docker rmi $(docker images -f "dangling=true" -q)

# 根据通配符查找删除指定镜像
$ docker rmi $(docker images -f "reference=*" --format "{{.Repository}}:{{.Tag}}")

创建 Swarm 集群以及其基本操作

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
# 修改 node name
$ sudo hostnamectl set-hostname {$name}
$ sudo systemctl restart docker

# manager: 创建 swarm 集群
$ docker swarm init

# 创建 swarm 集群时指定 ip 和通讯的 udp 端口 (针对云服务器上部分环境时需用到)
$ docker swarm init --advertise-addr 1.2.3.4 --data-path-port 12345

# node: 加入 swarm 集群
$ docker swarm join ......

# 获取加入token
$ docker swarm join-token [worker|manager]

# manager: 查看节点
$ docker node ls

# 部署单个服务
$ docker service create --replicas 3 -p 80:80 --name nginx nginx

# 查看服务
$ docker service ls

# 服务伸缩
$ docker service scale nginx=5

# 删除服务
$ docker service rm nginx

# 根据 yaml 文件部署包含多个服务的 stack
$ docker stack deploy -c xxxx.yml one-stack

# 根据 yaml 文件部署 stack 时能读取同层 .env 文件内设置的环境变量
$ docker stack deploy -c <(docker-compose -f xxxx.yml config) one-stack

# 根据 yaml 文件部署 stack 时能读取同层 .env 文件内设置的环境变量, 从私库拉取镜像
$ docker stack deploy --with-registry-auth -c <(docker-compose -f xxxx.yml config) one-stack

# 查看 stack
$ docker stack ls

# 查看 stack 中的服务
$ docker stack ps one-stack

# 停止删除 stack (该命令不会移除服务所使用的数据卷,移除数据卷用 docker volume rm)
$ docker stack down one-stack

# 更新 service 镜像, 从私库拉取
$ docker service update --with-registry-auth --image image-name:tag service-name

# 批量删除 service
$ docker service rm $(docker service ls -qf name=)

# 指定 service 在某个 node 运行
# 给 node 打标签
$ docker node update --label-add run-a=1 xxxxxx
# 给 service 加入约束条件
$ docker service update --constraint-add "node.labels.run-a==1" swarm_a

Docker Compose 文件相关配置

1
2
3
4
5
6
7
8
9
10
test: &base
a: 1
b: 2

use1: *base

use2:
<<: *base
b: 3
c: 4
1
2
3
4
5
6
7
8
9
10
11
12
test:
a: 1
b: 2

use1:
a: 1
b: 2

use2:
a: 1
b: 3
c: 4