运维人员都知道,docker的安装可以使用yum安装,当有的时候,特别是机房无外网情况下,需要我们准备好安装包,自己安装。假如安装好了docker,我们经常用的docker pull拉取镜像是需要外网访问的,这个时候我们又将怎么把我们的镜像下载下来呢?我们可以导入镜像(准备好即可)。

上述这段话,苛刻的无外网环境,我们可以采用如下方式解决生产上线部署问题。

先在有网络的虚拟机准备好docker安装包,并拉取镜像,保存镜像文件。

通过下载的docker安装包,在目标服务器上进行安装

wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.11.tgz
tar xzvf docker-19.03.11.tgz
cp docker/* /usr/bin/

编写服务

vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

设置开机自启

systemctl daemon-reload
systemctl start docker && systemctl enable docker

查看docker安装信息

docker info

这样我们就在目标服务器安装好了docker。
在另外一台有网环境,并且安装好了docker,拉取我们的镜像,比如我们拉取一个mysql。

docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -d mysql:8.0 \
      --character-set-server=utf8 --collation-server=utf8_bin \
      --default-authentication-plugin=mysql_native_password

保存我们的镜像,把这个文件通过ftp,或者U盘挂载等方式放到目标服务器上,执行导入即可。
无外网情况安装docker,并导入镜像_无外网环境安装docker
有了镜像,我们执行导入,在这里,我只有一台虚拟机,故手工删除mysql8镜像,模拟新环境。
无外网情况安装docker,并导入镜像_无外网环境安装docker_02