linux:离线/无网环境安装docker
以centos7系列为例,整个安装在root用户下进行。
先在有网机器上下载对应操作系统和CPU架构的docker二进制安装包,随后,传输到无网机器的root用户下,下载网址。
# x86
https://download.docker.com/linux/static/stable/x86_64/
# arm
https://download.docker.com/linux/static/stable/aarch64/
创建一个docker用户,我们后面可以把docker的数据目录放到该用户的家目录下。
useradd -m -s /bin/bash docker
系统会自动帮 docker 用户创建一个家目录 /home/docker。
将二进制安装包解压到/usr/local/
下
tar xzvf docker-20.10.7.tgz -C /usr/local/
解压后会有 /usr/local/docker/
目录,里面全是二进制文件。
建立软链接,让命令能直接用:
ln -s /usr/local/docker/* /usr/bin/
准备 systemd service 文件 /etc/systemd/system/docker.service
[Unit]
Description=Docker Daemon
After=network.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s SIGTERM $MAINPID
Restart=always
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity[Install]
WantedBy=multi-user.target
也可以直接将下面两个文件放到
/etc/systemd/system/
https://github.com/moby/moby/blob/master/contrib/init/systemd/docker.service
https://github.com/moby/moby/blob/master/contrib/init/systemd/docker.socket
创建docker配置文件
mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
{"data-root": "/home/docker/data"
}
EOF
如果你还需要设置镜像加速器、registry、log 驱动等,都放到这个 JSON 里。把所有运行参数只放在 daemon.json,docker.service 的 ExecStart 只保留 /usr/bin/dockerd,然后 daemon-reload + start,基本就能起。
docker的数据目录通常比较占空间,一般放到大容量的磁盘上(/home挂载到一个大容量SSD/disk上),而不是放到系统盘上。
创建好数据目录
mkdir -p /home/docker/data
启动docker进程
systemctl daemon-reload
# 启动docker进程
systemctl start docker
# 查看docker进程状态
systemctl status docker
systemd扩展:
修改了 service 配置文件:比如你刚改了 docker.service 里的 ExecStart,一定要 daemon-reload 才能让 systemd 知道配置变了。
新建了一个自定义 service:比如 /etc/systemd/system/myapp.service,写完文件后也要 reload,否则 systemctl 会提示找不到。
删除了一个 service 文件:reload 后 systemd 会更新内部状态,把它从可用列表里移除。
daemon-reload 只是重新加载配置,不会影响正在运行的服务。
如果你修改了 unit 文件内容,通常的完整操作是:systemctl daemon-reload # 让 systemd 读到新配置systemctl restart xxx # 让服务进程按新配置重启
其他常用命令:
# 设置docker引擎开机自启动
systemctl enable docker
#关闭docker引擎
systemctl stop docker