开端
这篇文章基于CentOS Stream(或类似国产系统,如统信UOS/Kylin)和Ubuntu 24.04 LTS,提供Docker的安装指南和基础命令。步骤经过2025年最新官方文档验证(Docker Engine 29.1+)。如果你是新手,放心跟随;CentOS部分兼容旧版,但推荐使用dnf(CentOS 8+已转向Stream,用dnf替换yum)。Ubuntu部分新增,以覆盖更多用户。
安装前注意:从CentOS 8+开始,默认安装podman(Docker替代品),需卸载以避免冲突。Ubuntu也可能有旧版Docker或podman-docker。生产环境勿关闭防火墙;使用ufw/firewalld时,需特殊配置以防端口暴露。
0. 卸载旧版/冲突包(所有系统通用,必做)
先移除旧Docker或podman,以避免“docker.service not found”等错误。
CentOS Stream
1 2 3
| sudo dnf remove -y podman buildah docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
sudo rm -rf /var/lib/docker /var/lib/containerd
|
Ubuntu 24.04
1 2
| for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove -y $pkg; done sudo rm -rf /var/lib/docker /var/lib/containerd
|
1. 安装Docker依赖环境
CentOS Stream
1 2
| sudo dnf install -y dnf-plugins-core device-mapper-persistent-data lvm2
|
Ubuntu 24.04
1 2
| sudo apt update sudo apt install -y ca-certificates curl
|
2. 配置Docker CE yum/apt源
推荐官方源(稳定最新)。可选阿里云源(国内加速)。
CentOS Stream(官方源)
1
| sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
阿里云源(备用):
1 2
| sudo dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
查看源文件:
1 2
| cd /etc/yum.repos.d ls | grep docker-ce.repo
|
Ubuntu 24.04(官方源)
1 2 3 4 5 6 7 8 9 10 11 12 13
| sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF Types: deb URIs: https://download.docker.com/linux/ubuntu Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") Components: stable Signed-By: /etc/apt/keyrings/docker.asc EOF
sudo apt update
|
阿里云源(备用,需调整为Ubuntu):
1 2 3 4 5
| sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
|
3. 安装Docker CE
CentOS Stream
1
| sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
如果包无匹配:
- 查看可用版本:sudo dnf list docker-ce –showduplicates | sort -r
- 安装指定:sudo dnf install -y docker-ce-
查看包信息:dnf info docker-ce
Ubuntu 24.04
1
| sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
指定版本:
- 查看:apt list –all-versions docker-ce
- 安装:VERSION_STRING=5:29.1.3-1
ubuntu.24.04noble; sudo apt install docker-ce=$VERSION_STRING …
启动并检查:
1 2
| sudo systemctl start docker sudo systemctl status docker
|
4. 开启网络转发功能
Docker默认自动开启(/proc/sys/net/ipv4/ip_forward=1)。验证:
1
| cat /proc/sys/net/ipv4/ip_forward
|
手动开启(如果为0):
1 2 3
| sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -p
|
如果报错:
5. 防火墙配置(生产推荐勿关闭)
关闭防火墙仅限测试;生产用规则允许端口。Docker会绕过ufw/firewalld,需特殊配置。
CentOS Stream(firewalld)
1 2 3 4 5
|
sudo firewall-cmd --reload sudo systemctl restart docker iptables -nL
|
Ubuntu 24.04(ufw)
1 2 3 4 5 6 7 8 9
|
sudo ufw-docker install sudo ufw allow OpenSSH sudo ufw-docker allow nginx 80 sudo ufw enable sudo ufw status sudo systemctl restart docker
|
6. 启动服务并设置开机自启
1 2
| sudo systemctl start docker && sudo systemctl enable docker sudo docker run hello-world
|
7. 后置配置(推荐)
8. 基础命令
(1) 帮助命令
1 2 3
| docker version docker info docker --help
|
(2) 镜像命令
| 命令 |
描述 |
示例 |
| docker images |
查看本地镜像 |
- |
| docker search nginx |
搜索镜像 |
- |
| docker pull nginx:alpine |
下载镜像(指定tag,默认latest) |
- |
| docker rmi nginx:alpine |
删除镜像 |
docker rmi -f $(docker images -q) 删除全部 |
| docker tag nginx:alpine my-nginx:v1 |
复制并重命名镜像 |
- |
| docker commit -a “author” -m “desc” container_id my-image:v1 |
提交容器为镜像(不推荐,优先用Dockerfile) |
- |
| docker build -f Dockerfile -t myapp:v1 . |
从Dockerfile构建 |
- |
| docker buildx build –platform linux/amd64,arm64 -t myapp:v1 . –push |
多平台构建 |
- |
| docker save -o image.tar nginx |
保存为tar |
- |
| docker load -i image.tar |
导入tar |
- |
| docker image prune -a |
清理未用镜像 |
- |
(3) 容器命令
| 命令 |
描述 |
示例 |
| docker run -d -p 80:80 –name my-nginx nginx |
启动容器(-d后台,-p端口,–name名字) |
-it 交互式 |
| docker ps -a |
列出所有容器(-a包括停止的) |
- |
| docker logs container_id |
查看日志 |
- |
| docker top container_id |
查看进程 |
- |
| docker rename old new |
重命名容器 |
- |
| docker start/restart/stop container_id |
启动/重启/停止 |
- |
| docker rm -f container_id |
删除(-f强制) |
- |
| docker kill container_id |
杀掉容器 |
- |
| docker history image_id |
查看镜像历史 |
- |
| docker exec -it container_id /bin/bash |
进入容器(新终端) |
docker attach container_id(进入当前终端) |
| docker cp container_id:/path host_path |
拷贝文件(容器↔主机) |
- |
| docker compose up -d |
用Compose启动(v2集成) |
- |
| docker system prune -a –volumes |
清理所有未用资源 |
- |
退出容器:exit(停止)或 Ctrl+P+Q(不停止)。
9. 常见故障排除
- “docker.service not found”:卸载podman/docker旧版,重装。
- “permission denied”:加docker组,非root运行。
- GPG/源错误:检查curl URL,用阿里云备用。
- 网络失败:检查ip_forward,journalctl -u docker。
- UFW绕过:用ufw-docker。
- iptables冲突(Ubuntu):切换iptables-legacy。
10. 最后
完善后支持CentOS/Ubuntu,欢迎评论指出错误或建议!下一期:镜像仓库与Compose示例。嘿嘿,bote现在醒了,继续码字。