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),包含核心组件(dockerdockerdcontainerdrunc 等)。

步骤

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核心二进制文件(containerdrunc等),确保依赖完整。
  3. 采用安全方式授权普通用户(添加到 docker 组而非修改sock权限)。
  4. 验证每步配置,通过 docker info 和测试容器确保功能正常。
相关推荐
zwjapple2 小时前
windows系统docker的mysql端口被占用解决方案
docker·云原生·eureka
CV_J8 小时前
安装kibana
java·elasticsearch·spring cloud·docker·容器
Wzx19801210 小时前
doker深学习
学习·docker
好奇心害死薛猫11 小时前
docker_tailscale
docker·容器
一只懒鱼a11 小时前
docker部署nacos (版本2.3.2)
运维·docker
青衫客3616 小时前
浅谈Kubernetes在systemd cgroup模式下的Slice/Scope组织结构
云原生·容器·kubernetes
王九思16 小时前
Podman 介绍
docker·云原生·kubernetes·podman
运维螺丝钉19 小时前
docker安装应用
运维·docker·容器
optimistic_chen19 小时前
【Docker入门】cgroups 资源控制
linux·运维·ubuntu·docker·容器·cgroup