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
    5
  • Docker 架构

  • 配置 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

# 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

# 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

# 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

# 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

# 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

# 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

# Tomcat 容器部署

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

# 镜像制作

使用dockerfile构建镜像,注意最后的点(.)
docker build -f ./centos-dockerfile -t ylx-centos:1.0 .
1
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
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
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
上次更新: 2025/02/15, 13:42:25
最近更新
01
Git问题集合
01-29
02
安装 Nginx 服务器
01-25
03
安装 Docker 容器
01-25
更多文章>
×
×