离线部署Docker(可视化界面及Zfile)
- linux离线安装docker
1. 从官方下载Docker安装包并上传至虚拟机 https://download.docker.com/linux/static/stable/x86_64/
2.解压安装包
tar -xvf docker-25.0.3.tgz
3.将解压出来的docker文件内容移动到 /usr/bin/ 目录下
#移动命令 复制命令请用cp
sudo mv docker /* /usr/bin/
4.将docker注册为service服务
vi /etc/systemd/system/docker.service
在打开的docker.service 文件中写入以下代码:
[Unit]
# 服务的描述信息
Description=Docker Application Container Engine
# 服务的文档链接
Documentation=https://docs.docker.com
# 服务启动顺序,确保在网络和防火墙服务之后启动
After=network-online.target firewalld.service
# 表明该服务希望与 network-online.target 同时启动
Wants=network-online.target
[Service]
# 服务类型,notify 表示当服务准备好后,会发送一个信号给 systemd
Type=notify
# 默认情况下不使用 systemd 管理 cgroups,因为还存在代理问题,并且 systemd 目前不支持 Docker 容器所需的 cgroup 功能集
# 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
# 由于内核中的会计开销,非零的 Limit* 会导致性能问题。我们建议使用 cgroups 进行容器本地会计。
# 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
# 如果你的 systemd 版本支持,可以取消注释 TasksMax。仅 systemd 226 及更高版本支持此功能。
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
# 启动超时时间
TimeoutStartSec=0
# 设置 delegate 为 yes,以便 systemd 不重置 Docker 容器的 cgroups
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# 只杀死 Docker 进程,而不是 cgroup 中的所有进程
# kill only the docker process, not all processes in the cgroup
KillMode=process
# 如果 Docker 进程过早退出,则重新启动它
# restart the docker process if it exits prematurely
Restart=on-failure
# 在给定的时间间隔内,如果服务启动失败次数超过 StartLimitBurst 指定的值,则 systemd 会认为该服务启动失败
StartLimitBurst=3
# 在 StartLimitInterval 秒内,服务启动失败的次数达到 StartLimitBurst 指定的值后,系统会将服务标记为失败状态
StartLimitInterval=60s
[Install]
# 服务启动时想要的目标
WantedBy=multi-user.target
5.设置权限,启动docker
chmod +x /etc/systemd/system/docker.service #设置权限
systemctl daemon-reload
systemctl start docker #启动Docker
systemctl enable docker.service #设置开机自启
6.验证
systemctl status do cker #查看Docker状态
docker -v #查看Docker版本
7.添加用户权限
# 使用sudo权限添加一个新的用户组名为docker
sudo groupadd docker
# 使用sudo权限将当前用户($USER代表当前用户)附加到docker用户组中
# -a选项表示将用户添加到附加组,而不是替换用户当前所在的所有组
# -G选项后面跟的是用户组名,这里指定为docker
sudo usermod -aG docker $USER
- 导出镜像
在有网的机器上安装部署所需镜像列出已下载的镜像:导出镜像为tar文件,这里使用可视化面板的镜像导出按钮,直接将需要的镜像导出。
命令导出方法:
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
示例:
docker save offline-map -o /offlinemap.tar 镜像名:tag
- 将tar文件传输到无网络的机器
具体传输方式,因地制宜。
- 在无网络的机器上加载镜像
在有Docker但没有网络的机器上
使用以下命令导入镜像
docker load -i 包名称.tar
示例: sudo docker load -i fast-docker-可视化镜像.tar
示例: sudo docker load -i Zfile-centos-docker镜像.tar
Docker命令创建可视化容器:
sudo docker run --restart always --name fast -p 8081:8081 -d -v /var/run/docker.sock:/var/run/docker.sock wangbinxingkong/fast
这个命令的含义如下:
--restart always:如果容器退出,总是自动重启容器。
--name fast:给容器命名为fast。
-p 8081:8081:将宿主机的8081端口映射到容器的8081端口。
-d:在后台运行容器(分离模式)。
-v /var/run/docker.sock:/var/run/docker.sock:将宿主机的/var/run/docker.sock文件挂载到容器的相同位置,这通常用于让容器内的进程能够与Docker守护进程通信。
wangbinxingkong/fast:要使用的Docker镜像名称。
Docker命令创建Zfile容器:
sudo docker run -d \
--name=zfile \
--restart=always \
-p 8080:8080 \
-v /root/zfile/conf:/root/.zfile-v4 \
-v /root/zfile/data:/root/zfile/data \
stilleshan/zfile
重启docker,查看所有容器
sudo systemctl restart docker #重启docker
docker ps -a #查看所有容器