Docker 安装

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
1.卸载 Docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

2.安装所需的包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3.设置阿里云软件存储库
阿里云:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.安装 Docker CE
sudo yum install docker-ce

5.启动 Docker
sudo systemctl start docker

6.通过运行 hello-world 映像验证是否已正确安装
sudo docker run hello-world

docker-compose 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1.下载最新版本的 Docker Compose (第一次执行提示失败,就多执行几次这个命令试试)
sudo curl -L \
https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) \
-o /usr/local/bin/docker-compose

2.对二进制文件应用可执行权限
sudo chmod +x /usr/local/bin/docker-compose

3.测试安装
docker-compose --version

4.docker-compose 命令
https://yeasy.gitbooks.io/docker_practice/compose/commands.html

5.docker-compose.yml
https://yeasy.gitbooks.io/docker_practice/compose/compose_file.html

docker-machine 安装

1
2
3
4
5
6
7
1.下载 Docker Machine 二进制文件并将其解压缩到 PATH (第一次执行提示失败,就多执行几次这个命令试试)
base=https://github.com/docker/machine/releases/download/v0.14.0 && \
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && \
sudo install /tmp/docker-machine /usr/local/bin/docker-machine

2.通过显示机器版本来检查安装
docker-machine version

搭建 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
1.新版 docker 已集成 swarm,无需单独安装

2.使用 docker swarm init 在管理节点初始化一个 Swarm 集群
docker swarm init --advertise-addr 192.168.153.150
# 如果你的 Docker 主机有多个网卡,拥有多个 IP,必须使用 --advertise-addr 指定 IP
# 执行 docker swarm init 命令的节点自动成为管理节点

3.将其他主机作为 管理节点 或 工作节点 加入 swarm 集群(以下命令在待加入节点执行)
docker swarm join --token [MANAGER-TOKEN||WORKER-TOKEN] [MANAGER-IP]:2377
# 示例:docker swarm join --token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-1awxwuwd3z9j1z3puu7rcgdbx 192.168.153.150:2377
--------------
注意:各机器之间要开启以下通信端口 或 关闭防火墙
# TCP端口2377集群管理端口
# TCP与 UDP端口7946节点之间通讯端口
# TCP与 UDP端口4789 overlay 网络通讯端口
firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --zone=public --add-port=7946/tcp --permanent
firewall-cmd --zone=public --add-port=7946/udp --permanent
firewall-cmd --zone=public --add-port=4789/tcp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
firewall-cmd --reload
关闭防火墙:
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
--------------

4.在管理节点使用 docker node ls 查看集群
docker node ls

5.向集群中添加工作节点,通过以下命令获取加入集群的 WORKER-TOKEN
docker swarm join-token worker
向集群中添加管理节点,通过以下命令获取加入集群的 MANAGER-TOKEN
docker swarm join-token manager

6.退出集群
(1)如果是 manager 先降级为 worker
docker node demote [HOSTNAME || ID] # ID前几位即可
(2)退出集群
docker swarm leave
(3)移除节点
docker node rm [HOSTNAME || ID] # ID前几位即可
# leave后该节点仍将出现在节点列表中,并将 STATUS标记为 down,已不影响 swarm操作;
# 要从列表中删除非活动节点,使用 node rm 命令即可。

使用 swarm+compose 部署集群服务

1
2
3
4
5
6
7
8
9
1.使用 swarm+compose 部署服务
docker stack deploy -c docker-compose.yml [JIQUN-NAME]

2.查看服务
docker stack ls

3.移除服务
docker stack down [JIQUN-NAME]
# 该命令不会移除服务所使用的 数据卷,如果你想移除数据卷请使用 docker volume rm

其他 Docker 常用命令

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
查看 swarm 集群中的服务:docker service ls
查看 swarm 集群中某个服务的运行状态信息:docker service ps mwp_db
查看 swarm 集群中某个服务的基础详细信息:docker service inspect mwp_db
查看 swarm 集群中某个服务的日志:docker service logs mwp_db
从 swarm 集群中移除某个服务:docker service rm mwp_db

搜索仓库镜像:docker search nginx
查找本地镜像:docker images nginx
查看本地镜像列表:docker images 或 docker image ls
删除本地镜像:docker rmi [IMAGE ID]
强制删除本地镜像:docker rmi -f [IMAGE ID] # 一般先停止相关容器,再 docker rmi [IMAGE ID] 正常删除镜像

列出本机容器 container:docker ps -a 或 docker container ls
删除 container:docker rm [CONTAINER ID] 或 docker container rm [CONTAINER ID]
清理所有处于终止状态的容器:docker container prune
进入后台运行的容器 container:docker exec -it [CONTAINER_NAME || CONTAINER_ID] /bin/sh
# docker exec 进入容器后 exit 不会导致容器停止
创建一个新的容器并运行:docker run --name web2 -d -p 81:80 nginx:v2
停止一个运行中的容器:docker stop [CONTAINER ID || NAMES]

查看所有数据卷:docker volume ls
删除指定数据卷:docker volume rm [VOLUME NAME]
清理所有无主数据卷:docker volume prune

查看 Image 或 Container 的信息:docker inspect [IMAGE || IMAGE ID || CONTAINER ID]

查看 CentOS 系统内核版本:uname -r

使用 Dockerfile 定制镜像:docker build -t nginx:v3 [DOCKERFILE PATH || URL]
# 其中 [DOCKERFILE PATH || URL] 为 Dockerfile 文件所在目录,例:docker build -t nginx:v3 .

更多命令可参考:http://www.runoob.com/docker/docker-command-manual.html

配置 Docker 加速器

1
2
3
4
5
6
7
8
9
10
11
12
13
参考:https://yeasy.gitbooks.io/docker_practice/install/mirror.html
对于使用 systemd 的系统,在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在则新建该文件)
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
之后重新启动服务。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
检查加速器是否生效:docker info
Registry Mirrors:
https://registry.docker-cn.com/

更多 daemon.json 配置项参考:https://blog.csdn.net/iaiot/article/details/84679859

Docker hub 地址:https://hub.docker.com/
Docker 官方文档地址:https://docs.docker.com/