有些项目的部署环境可能是内网没有互联网的,那么如果安装docker就有点麻烦,当然方法很多,但是今天要介绍是脚本和离线包的快速安装,非常的简单,下面主要是基于CentOS7的系统做的例子。
离线包
官方的一些离线安装包,选择自己的版本
https://download.docker.com/linux/static/stable/x86_64/
服务配置
创建文件:docker.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
|
安装脚本
创建安装脚本:install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!/bin/sh
echo '解压tar包...'
tar -xvf $1
echo '将docker目录移到/usr/bin目录下...'
cp docker/* /usr/bin/
echo '将docker.service 移到/etc/systemd/system/ 目录...'
cp docker.service /etc/systemd/system/
echo '添加文件权限...'
chmod +x /etc/systemd/system/docker.service
echo '重新加载配置文件...'
systemctl daemon-reload
echo '启动docker...'
systemctl start docker
echo '设置开机自启...'
systemctl enable docker.service
echo 'docker安装成功...'
docker -v
|
卸载脚本
创建卸载脚本:uninstall.sh
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/sh
echo '删除docker.service...'
rm -f /etc/systemd/system/docker.service
echo '删除docker文件...'
rm -rf /usr/bin/docker*
echo '重新加载配置文件'
systemctl daemon-reload
echo '卸载成功...'
|
脚本使用
这3个文件在同一个目录下就好了。
安装脚本使用:
1
2
|
# docker-19.03.9.tgz这个根据自己下载的定
sh install.sh docker-19.03.9.tgz
|
卸载脚本使用:
配置代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# /etc/systemd/system/docker.service 文件追击配置
[Service]
....
Environment="HTTP_PROXY=http://172.26.5.219:1087/"
Environment="HTTPS_PROXY=http://172.26.5.219:1087/"
# 执行下面的命令生效
# 重新加载配置文件
systemctl daemon-reload
# 重启docker
systemctl restart docker
# 显示是否成功
systemctl show --property=Environment docker
|
提示
这里代理软件使用的V2ray,有个小坑,如果代理服务不是在同一台机器上的话,需要把代理的机上的上配置更细下,127.0.0.1改成0.0.0.0,不过这个在局域网还是有点危险的。
因为是离线安装的,可能启动容器会出现异常:“write /proc/self/attr/keycreate: permission denied” 表示文件没有写入权限,被拒绝访问了
解决方案:
1
2
3
4
5
|
# 修改配置文件
vim /etc/selinux/config
# 更新下面的配置
SELINUX=disabled
|
重启系统就可以启动容器了