运维人员都知道,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盘挂载等方式放到目标服务器上,执行导入即可。
有了镜像,我们执行导入,在这里,我只有一台虚拟机,故手工删除mysql8镜像,模拟新环境。