CentOS7 安装 Docker
# Docker 简介与安装
官方网站下载地址: https://www.docker.com
Docker可以解决项目跨环境迁移问题
Docker 概念
安装 Docker
yum update yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce docker -v
1
2
3
4
5Docker 架构
配置 Docker 镜像加速器
docker 镜像地址配置 sudo vim /etc/docker/daemon.json cat /etc/docker/daemon.json {stry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com", "https://hub-mirror.c.163.com", "https://mirror.ccs.tencentyun.com", "http://f1361db2.m.daocloud.io" ] } service docker restart
1
2
3
4
5
6
7
8
9
10
11
12
# Docker 服务相关命令

systemctl start docker #启动docker服务
systemctl stop docker #停止docker服务
systemctl restart docker #重启docker服务
systemctl status docker #查看docker服务状态
systemctl enable docker #开机启动docker服务
1
2
3
4
5
2
3
4
5
# Docker 镜像相关命令

docker images #查看本地镜像
docker images -q #查看所用镜像的ID
docker search 镜像名称 #从网络中搜索所需的镜像
docker pull 镜像名称 #拉取镜像,从Docker仓库下载镜像到本地,镜像名称格式为,名称:版本号(如果版本号不指定那么就是最新版本),如果不知道镜像版本可以到Docker hub 搜索对应镜像查看
docker rmi 镜像id #删除指定本地镜像
docker rmi `docker images -q` #删除本地所有镜像
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# Docker 容器相关命令


docker ps #查看正在运行的容器
docker ps -a #查看所有容器
docker run -i -t --name=c1 centos:7 /bin/bash #创建并运行容器
docker run -i -d --name=c1 centos:7 #创建后台运行的容器
docker exec -i -t c1 /bin/bash #进入容器,退出容器容器不会关闭
docker start 容器名称 #启动容器
docker stop 容器名称 #停止容器
docker rm 容器名称 #删除容器,如果容器是运行状态则删除失败,需要停止容器才能删除
docker inspect 容器名称 #查看容器信息
docker container update --restart=always 实例名 #开机自启动容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# Docker 数据卷概念





[root@192 ~]# docker run -it --name=c3 -v /volume centos:7 /bin/bash 创建容器数据卷
[root@192 ~]# docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash 创建容器并绑定数据到容器数据卷上
[root@192 ~]# docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash 创建容器并绑定数据到容器数据卷上
以上是c1,c2容器的数据绑定到c3容器的数据卷上。
1
2
3
4
2
3
4



# MySql容器部署


命令与步骤:
搜索mysql镜像
docker search mysql
拉取mysql镜像
docker pull mysql:5.6
创建容器,设置端口映射、目录映射
docker run -p 3306:3306 --name mysql -v /etc/mysql/my.cnf:/etc/mysql/my.cnf -v /etc/mysql/logs:/logs -v /etc/mysql/data:/mysql_data -e MYSQL_ROOT_PASSWORD=xxx -d mysql:5.7
或者下面的
#在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
docker exec -it c_mysql /bin/bash
进入mysql容器
$PWD相当于: /root/mysql
mysql的一个固定环境变量: MYSQL_ROOT_PASSWORD
登录mysql : mysql -uroot -p123456
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
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


# Redis 容器部署

docker run -id --name=c_redis -p 6379:6379 redis:5.0
cd进入redis客户安装目录,执行 redis-cli.exe -h 192.168.5.130 -p 6379
1
2
2
# Nginx 容器部署

创建目录及配置文件
先在/opt目录下创建nginx目录: mkdir /opt/nginx
进入创建好的目录: cd /opt/nginx
创建conf目录: mkdir conf
进入conf目录: cd conf
创建nginx.conf配置文件: vi nginx.conf。
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
创建容器命令
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
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
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

# Tomcat 容器部署


创建容器命令:
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/localtomcat/webapps \
tomcat:9
1
2
3
4
5
2
3
4
5
# 镜像制作






使用dockerfile构建镜像,注意最后的点(.)
docker build -f ./centos-dockerfile -t ylx-centos:1.0 .
1
2
2



安装很简单,只需要执行下面的命令即可
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
上面的安装一般会较慢
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
较慢可以使用这个
等待安装完毕后,执行下面的命令,为docker-compose添加可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
查看安装是否成功
docker-compose --version
卸载compose
sudo rm /usr/local/bin/docker-compose
pip安装
sudo pip install docker-compose
docker-compse结构示例
version: "3"
services:
redis:
image: redis:alpine
ports:
- "6379"
networks:
- frontend
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
db:
image: postgres:9.4
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
deploy:
placement:
constraints: [node.role == manager]
vote:
image: dockersamples/examplevotingapp_vote:before
ports:
- 5000:80
networks:
- frontend
depends_on:
- redis
deploy:
replicas: 2
update_config:
parallelism: 2
restart_policy:
condition: on-failure
result:
image: dockersamples/examplevotingapp_result:before
ports:
- 5001:80
networks:
- backend
depends_on:
- db
deploy:
replicas: 1
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
worker:
image: dockersamples/examplevotingapp_worker
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 1
labels: [APP=VOTING]
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
placement:
constraints: [node.role == manager]
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
frontend:
backend:
volumes:
db-data:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105

vim docker-compse.yml
version: '3'
services:
nginx:
image: nginx
ports:
- 80:80
links:
- app
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
redis:
image: redis
app:
image: app
expose:
- "8080"
esc
:wq
由于本次写的springboot里使用了redis,所以需要添加redis镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

docker pull registry
docker run -it --name=registry -p 5000:5000 registry
http://192.168.5.130:5000/v2/_catalog 返回 repositories [] 表示成功
// 没有配置加速器的
// 单个私服的写法
{
"insecure-registries": ["registry的IP地址:端口号"]
}
// 多个私服的写法
{
"insecure-registries": ["registry1的IP地址:端口号","registry2的IP地址:端口号"]
}
vim /etc/docker/daemon.json
{"insecure-registries":["ip:端口"]}
esc
:wq
systemctl restart docker
docker start registry
docker tag centos:7 192.168.5.130:5000/centos:7 给需要上传到私有仓库的镜像打上tag
docker push 192.168.5.130:5000/centos:7 将镜像上传到私有仓库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


编辑 (opens new window)
上次更新: 2025/02/15, 13:42:25