背景
最近接到项目接到甲方服务器是几台redhat服务器,软件环境都要自己装。
这种情况下用docker部署项目就会省事很多,但是发现服务器并没有联通外网,于是开始百度离线安装docker步骤...。
安装过程
实际上挺方便的,docker已经有现成的二进制包直接下载后就能直接执行。但是稍微配置下会更方便
-
下载地址Index of linux/static/stable/x86_64/ 看情况平台不一样要换对应的平台下载。 选个自己喜欢的版本并下载
-
下载下来的压缩包解压
tar xzvf docker-18.03.1-ce.tgz
- 复制二进制文件到
/usr/bin
目录下
cp docker/* /usr/bin/
- 检查是否安装
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
- 将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
- 启动dockerd服务进程
systemctl daemon-reload
systemctl start docker.service
- docker-compose 安装
github.com/docker/comp… 下载自己需要的平台版本,
直接是可执行的二进制文件
通过sudo chmod 777
赋权,然后同样cp
到/usr/bin/
目录下
镜像导出导入
安装完docker执行 docker search
才想到没有外网也无法连接docker仓库下载镜像,好在度娘说可以导出导入镜像。
我本地是通过windows docker desktop
管理wsl里的docker。准备在本地准备好需要的image后导出
- 导出镜像: 我的项目需要的镜像有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完发现无法运行。悲催!