服务器离线环境下安装并使用docker

1,658 阅读3分钟

背景

最近接到项目接到甲方服务器是几台redhat服务器,软件环境都要自己装。
这种情况下用docker部署项目就会省事很多,但是发现服务器并没有联通外网,于是开始百度离线安装docker步骤...。

安装过程

实际上挺方便的,docker已经有现成的二进制包直接下载后就能直接执行。但是稍微配置下会更方便

  1. 下载地址Index of linux/static/stable/x86_64/ 看情况平台不一样要换对应的平台下载。 选个自己喜欢的版本并下载

  2. 下载下来的压缩包解压

tar xzvf docker-18.03.1-ce.tgz
  1. 复制二进制文件到/usr/bin目录下
cp docker/* /usr/bin/
  1. 检查是否安装
docker version

显示类似如下就是ok

Version:      18.03.1-ce
API version:  1.37
Go version:   go1.9.2
Git commit:   9ee9f40
Built:        Thu Apr 26 07:12:25 2018
OS/Arch:      linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version:      18.03.1-ce
API version:  1.37 (minimum version 1.12)
Go version:   go1.9.5
Git commit:   9ee9f40
Built:        Thu Apr 26 07:23:03 2018
OS/Arch:      linux/amd64 Experimental: false
  1. 将docker添加到服务,并配置开机启动
vi /usr/lib/systemd/system/docker.service

复制粘贴
注意安装路径如果不是在/usr/bin的话ExecStart需要修改为对应的路径

[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
  1. 启动dockerd服务进程
systemctl daemon-reload
systemctl start docker.service
  1. docker-compose 安装 github.com/docker/comp… 下载自己需要的平台版本, 直接是可执行的二进制文件
    通过sudo chmod 777赋权,然后同样cp/usr/bin/目录下

镜像导出导入

安装完docker执行 docker search才想到没有外网也无法连接docker仓库下载镜像,好在度娘说可以导出导入镜像。
我本地是通过windows docker desktop管理wsl里的docker。准备在本地准备好需要的image后导出

  1. 导出镜像: 我的项目需要的镜像有java 8,nginx,mysql,redis。
docker save mysql:5.7 -o /mnt/e/docker-offline-package/mysql.tar

类似如上命令导出自己需要的镜像
ps: 度娘说可以用docker export导出container但是本次没尝试 以后需要再说
2. 上传到服务器 执行通过sftp连接服务器托上去
3. 导入上传的镜像

docker load < mysql.tar

类似如上命令依次导入几个镜像
4. 常规操作
执行docker images 就可以看到导入的images了。
然后就可以开始自由发挥了

总结

一套流程下来还是挺顺利的。但是需要系统内核支持docker。太老的系统就不行了。
后来就碰到了一个小项目想更新软件环境,也是离线环境也准备走这套流程。部署的时候安装包和images都准备好了,到地方发现是centos6。copy完发现无法运行。悲催!