16boke - 一路博客

Docker系列:18、在生产环境安装部署Docker环境

前提:

安装centos7镜像,软件选择“最小安装”

一、更新系统软件

yum -y update

二、安装必要的软件

yum -y install vim lrzsz gcc make gcc-c++ openssl-devel wget

三、关闭防火墙

停止防火墙:systemctl stop firewalld.service 禁止防火墙开机启动:systemctl disable firewalld.service

四、安装Docker

1、卸载老版本

$ 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、设置yum源

$ sudo yum install -y yum-utils \  device-mapper-persistent-data \  lvm2

3、添加yum源

$ yum-config-manager \    --add-repo \    https://download.docker.com/linux/centos/docker-ce.repo

3、安装docker-ce

$ sudo yum install -y docker-ce

4、启动docker

$ sudo systemctl start docker

5、设置docker服务开机启动

$ sudo systemctl enable docker

5、配置镜像加速器

使用阿里云的镜像加速器

登录阿里云控制台,进入“镜像加速器”,选择指定的操作系统,我选择的是centos,使用下面方法:

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' {  "registry-mirrors": ["https://sv7tc0ns.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

6、配置docker开启远程访问

修改docker配置文件:vim /usr/lib/systemd/sysem/docker.server,将ExecStart这一行后面加上-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

重新加载配置文件:systemctl daemon-reload

再重启docker:systemctl restart docker

五、安装Docker管理工具(portainer)

在其中一台机器上执行:docker run -d -p 9000:9000 --name portainer --restart=always portainer/portainer

会启动portainer容器,可以通过9000端口来访问。

六、安装私有仓库(可选)

选择nexus来做为docker镜像的私有仓库,如果已经安装过了则可以不用再次安装。具体安装在网上找

例如配置有三个仓库:

docker hosted:192.168.28.164:8551     (存储本地镜像,可以push和pull)

docker proxy:192.168.28.164:8552       (docker 远端仓库的代理,可以配置以阿里云为私有仓库)

docker group:192.168.28.164:8553      (docker仓库的分组管理,将上面两个仓库加入到统一的组中进行管理)

七、配置访问私有仓库的认证

在每个docker主机上修改/etc/docker/daemon.json

vi /etc/docker/daemon.json

{

  "registry-mirrors": ["https://sv7tc0ns.mirror.aliyuncs.com"],

  "insecure-registries": [

    "192.168.28.164:8551",

    "192.168.28.164:8552",

    "192.168.28.164:8553"

  ],

  "disable-legacy-registry": true

}

修改之后保存,执行下面命令:

systemctl daemon-reload

systemctl restart docker

 

八、登录私有仓库

要使用私有仓库需要先登录成功,使用下面命令

docker login 192.168.28.164:8551,然后回车后会提示输入用户名:admin,再回车后输入密码:admin123,注意输入密码是看不到的。最后回车会提示login success。

注意:任何一台机器需要从私有仓库中push和pull镜像都需要先执行配置访问私有仓库认证和登录,也就是先执行上面第八和九步骤。只要登录成功一次后以后就可以直接pull了

 

九、push镜像到私有仓库

要push一个镜像到私有仓库需要先修改镜像名,使用docker tag来重命名一个镜像:

docker tag busybox 192.168.28.164:8551/busybox

将busybox重命名为192.168.28.164:8551/busybox

执行下面命令就可以推送到私有仓库中:

docker push 192.168.28.164:8551/busybox

 

十、从私有仓库pull镜像

使用下面命令:

docker pull 192.168.28.164:8551/busybox

十一、部署Swarm

在其中一台机器上初始化Swarm集群

docker swarm init --advertise-addr 192.168.99.100 --listen-addr 192.168.99.100:2377

根据实际情况在决定是否需要将某些机器以manager的身份加入到Swarm集群中,

manager角色的token

docker swarm join-token manager

worker角色的token

docker swarm join-token worker

十二、创建swarm网络

在manager机器上执行:docker network create --driver overlay swarm_net

十三、创建服务

docker service create --replicas 2 --name nginx --network swarm_test -p 8080:80 --with-registry-auth 192.168.28.164:8551/nginx:alpine

启动2个复本,使用swarm_test网络,使本机8080映射到容器80端口,如果使用私有仓库需要添加--with-registry-auth,不然无法下载镜像

十四、更新服务

docker service update...

十五、删除服务

docker service rm nginx

十六、增加服务

docker service scale nginx=5 busybox=3

可以同时对多个服务进行扩容

十七、查看所有服务

docker service ls

十八、查看服务的容器状态

docker service ps nginx

十九、查看服务的详细信息

docker service inspect nginx

Docker