Docker环境配置步骤

Docker环境配置步骤(离线二进制方式)

一、关闭 SELinux(永久和临时)

步骤说明

bash 复制代码
# 永久关闭(重启生效):修改配置文件
sed -i 's/enforcing/disabled/' /etc/selinux/config

# 临时关闭(立即生效):设置当前模式为Permissive
setenforce 0

验证

bash 复制代码
sestatus  # 临时关闭后显示 "Permissive",重启后显示 "Disabled"

二、关闭 Swap(永久和临时)

步骤说明

bash 复制代码
# 临时关闭:立即释放Swap空间
swapoff -a

# 永久关闭(重启生效):注释fstab中所有Swap挂载项
sed -ri 's/.*swap.*/#&/' /etc/fstab

验证

bash 复制代码
free -h  # 确认Swap行值为0
cat /etc/fstab  # 确认Swap行已被注释(以#开头)

三、安装 Docker(离线二进制方式)

前提

已获取Docker离线包(如 docker-27.1.2.tgz),包含核心组件(docker、dockerd、containerd、runc 等)。

步骤

1. 解压二进制包
bash 复制代码
tar -zxvf docker-27.1.2.tgz
2. 复制核心文件到系统路径
bash 复制代码
# 复制关键二进制文件到/usr/bin(确保PATH可访问)
cp docker/{docker,dockerd,containerd,containerd-shim,runc} /usr/bin/
3. 创建 systemd 服务文件
bash 复制代码
cat > /etc/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock --default-ulimit nofile=65536:65536
ExecReload=/bin/kill -s HUP \$MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

四、启动 Docker 服务

bash 复制代码
# 确保服务文件可执行
chmod +x /etc/systemd/system/docker.service

# 重新加载systemd配置并启动
systemctl daemon-reload
systemctl start docker
systemctl enable docker  # 可选:设置开机自启

# 验证状态(确保Active: active (running))
systemctl status docker

五、安装 Docker Compose(二进制方式)

bash 复制代码
# 假设离线文件为 docker-compose-linux-x86_64(需与系统架构匹配)
mv docker-compose-linux-x86_64 /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose

# 验证安装
docker-compose --version  # 应输出版本号

六、配置 Docker Daemon(daemon.json)

步骤

1. 前置准备
bash 复制代码
# 创建数据存储目录(若配置data-root)
mkdir -p /data/docker-data

# 创建用户命名空间映射用户(若启用userns-remap)
useradd -m lsrm  # -m:自动创建家目录
2. 创建配置文件
bash 复制代码
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],  # 镜像加速地址
  "data-root": "/data/docker-data",  # 数据存储路径
  "userns-remap": "lsrm",  # 用户命名空间映射(需提前创建lsrm用户)
  "storage-driver": "overlay2",  # 推荐存储驱动
  "log-driver": "json-file",
  "log-opts": {"max-size": "100m", "max-file": "3"},  # 日志轮转配置
  "default-ulimits": {"nofile": {"Name": "nofile", "Hard": 65536, "Soft": 65536}}  # 默认文件描述符限制
}
EOF

七、重启 Docker 并验证配置

bash 复制代码
# 重启服务使配置生效
systemctl restart docker

# 验证关键配置(镜像加速、数据路径、存储驱动等)
docker info | grep -E "Registry Mirrors|Data Root|Storage Driver|User Namespace"

八、允许普通用户执行 Docker 命令(安全最佳实践)

推荐方法:添加用户到 docker 组

bash 复制代码
# 1. 确保docker组存在(不存在则创建)
getent group docker || groupadd docker

# 2. 将用户(如lsrm)添加到docker组
usermod -aG docker lsrm

# 3. 刷新用户组(无需注销,临时生效)
newgrp docker

# 验证:普通用户执行docker命令
su - lsrm -c "docker ps"  # 无权限错误则成功

风险提示:

  • 禁止使用 chmod 666 /var/run/docker.sock(任何用户可执行Docker命令,等同于root权限,严重不安全)。
  • docker 组用户拥有类似root权限,需严格控制组内用户。

九、功能验证

bash 复制代码
# 验证Docker基础功能
docker run --rm hello-world  # 应输出"Hello from Docker!"

# 验证Docker Compose
docker-compose version  # 应输出版本信息

总结

关键优化点:

  1. 提前创建 lsrm 用户和 /data/docker-data 目录,避免启动失败。
  2. 明确复制Docker核心二进制文件(containerd、runc等),确保依赖完整。
  3. 采用安全方式授权普通用户(添加到 docker 组而非修改sock权限)。
  4. 验证每步配置,通过 docker info 和测试容器确保功能正常。
相关推荐
kaixin_啊啊1 小时前
飞牛部署Mtab完整实战:Docker安装、MySQL建库与固定地址访问
mysql·docker·容器
程序员老赵14 小时前
Docker 部署 Wiki.js:轻松搭建私有化维基知识库
docker·容器·开源
灯澜忆梦16 小时前
【Docker】#5 | 网络配置
网络·docker·容器
刘胡子大叔16 小时前
docker build 跑了 92 分钟还是失败了
docker·容器
她说可以呀17 小时前
Docker 镜像的两种创建方式
java·分布式·docker
虎头金猫17 小时前
从上传PPT到观众远程打开互动页面:Claper在CentOS 7上的Docker部署、互动组件设置与固定访问地址实战
linux·运维·网络·人工智能·docker·centos·powerpoint
%KT%19 小时前
ubuntu系统部署docker
运维·docker·容器
十二同学啊20 小时前
Docker 容器化技术详解:镜像、容器、网络与应用部署设计
网络·docker·eureka
I'mChloe20 小时前
不再逐台装Docker:我用Ansible Playbook批量统一服务器环境
服务器·docker·ansible
江湖有缘20 小时前
Docker实战 | 使用Docker部署Readeck书签管理工具
java·docker·eureka