为统一环境部署,减少linux开发环境的重复安装Nginx,Mysql,MongoDB,Redis,RabbitMQ,PostgreSQL,尤其是Python版本和项目依赖第三方库。

在内网搭建一个私有的docker仓库,将几个项目的开发环境都做好镜像推到私有仓库,供开发下载部署。

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

仓库机器:部署registry存储docker镜像的仓库机器。
镜像机器:制作镜像,推到私有仓库的机器。
客户端机器:从私有仓库拉取镜像,部署docker容器的机器。

仓库机器

  • 安装好docker,配置docker镜像仓库地址,拉取registry镜像:
$ docker pull registry
  • 启动registry:
$ docker run -i -t -d --restart=always \
--privileged=true \
--name docker-hub \
-p 5000:5000 \
-v /docker-hub:/var/lib/registry \
registry:latest

复制使用,请转成一行

  • 查看容器是否启动:
    $ docker ps -a
    

    镜像机器

  • 安装好docker, docker配置非 https 仓库地址 : 需要访问私有仓库的机器都需要配置私有仓库地址
    $ vim /etc/docker/daemon.json
     {
    "registry-mirror": [
      "https://reg-mirror.qiniu.com/",
      "https://hub-mirror.c.163.com",
      "https://mirror.baidubce.com"
    ],
    "insecure-registries": [
      "192.168.0.88:5000"
    ]
    }
    
  • 重新加载docker配置:
    $ systemctl daemon-reload
    
  • 重启docker:
    $ systemctl restart docker
    
  • 拉取 centos8 docker镜像:
    $ docker pull centos:centos8
    
  • 启动centos8 容器:
    $ docker run -itd --net='bridge' --privileged=true --name centos8 centos:8 /sbin/init
    
  • 进入容器:
    $ docker exec -it centos8 /bin/bash
    
  • 安装项目需要的软件和Python及依赖库
    $ 
  • 环境部署完成后,将容器保存为新的镜像,并添加提交人信息和说明信息:
    $ docker commit -a "ooc" -m "env" 容器ID  gServer:v1
    
  • 标记本地镜像,打个tag: 如果需要调整部署,直接在容器488406ff141b中调整,重新打tag。
    $ docker tag gServer:v1 192.168.0.88:5000/gServer:v1
    
  • 将镜像上传到镜像仓库
    $ docker push 192.168.0.88:5000/gServer:v1
    
  • 查询镜像:
    $ curl 192.168.0.88:5000/v2/_catalog
    {"repositories":["gServer"]}
    
  • 查询镜像tag(版本):
    $ curl 192.168.0.88:5000/v2/gServer/tags/list
    {"name":"gServer","tags":["v1"]}
    

客户端机器

  • 安装好docker, docker配置非 https 仓库地址 :

    需要访问私有仓库的机器都需要配置私有仓库地址

    $ vim /etc/docker/daemon.json
     {
    "registry-mirror": [
      "https://reg-mirror.qiniu.com/",
      "https://hub-mirror.c.163.com",
      "https://mirror.baidubce.com"
    ],
    "insecure-registries": [
      "192.168.0.88:5000"
    ]
    }
    
  • 重新加载docker配置:
    $ systemctl daemon-reload
    
  • 重启docker:
    $ systemctl restart docker
    
  • 从私有仓库,拉取镜像:
    $ docker pull 192.168.0.88:5000/gServer:v1
    
  • 启动容器:
    $ docker run -itd --privileged=true --net='bridge' --name gServerA -p 8080:80 -p 17650:17650 192.168.0.88:5000/gServer:v1 /sbin/init
    
  • 查看容器是否启动:
    $ docker ps -a
    
  • 进入容器,查看制作镜像时安装的东西是否都在:
    $ docker exec -it gServerA /bin/bash