在 CentOS 上使用 Docker 制作镜像,通常有以下几种常见方式。下面从基础到实战一步一步讲清楚。
# 卸载旧版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安装依赖
sudo yum install -y yum-utils
# 添加 Docker 源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker
docker version
适合临时测试、快速生成镜像
docker run -it centos:7 /bin/bash
yum install -y httpd
exit
docker commit <容器ID> my-centos:httpd
docker images
✅ 优点:简单
❌ 缺点:不可重复、不推荐生产使用
mkdir myimage
cd myimage
FROM centos:7
RUN yum install -y httpd && yum clean all
EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
docker build -t my-centos:httpd .
docker run -d -p 8080:80 my-centos:httpd
✅ 优点:可版本控制、可重复构建
✅ 生产环境标准做法
FROM centos:7
RUN yum update -y && yum clean all
CMD ["/bin/bash"]
docker save my-centos:httpd -o my-centos.tar
docker load -i my-centos.tar
docker tag my-centos:httpd username/my-centos:httpd
docker login
docker push username/my-centos:httpd
yum install -y --disablerepo=* --enablerepo=local httpd
tail -f /dev/null| 方式 | 适用场景 |
|---|---|
| docker commit | 临时测试 |
| Dockerfile | 生产标准 |
| save/load | 离线部署 |
如果你有具体需求(比如:CentOS + Java、CentOS + Nginx、内网环境、ARM 架构),可以直接告诉我,我可以帮你写完整 Dockerfile。