答案:在CentOS上部署Docker容器需先更新系统并安装Docker CE,配置防火墙与SELinux解决网络问题,通过镜像拉取、容器运行及数据卷挂载实现应用部署,利用资源限制、安全策略和日志管理优化性能与安全,结合Docker Compose进行多容器编排,并通过定期清理、监控和备份完成日常维护。

在CentOS上部署Docker容器,核心在于安装Docker引擎、拉取所需的镜像,然后基于这些镜像创建并运行你的应用程序实例。这听起来可能有点像搭积木,但每一块积木的放置都需要一些考量。简而言之,就是环境准备、Docker安装、镜像操作、容器运行与管理。
说实话,在CentOS上部署Docker容器,我个人觉得它提供了一种相当稳健且灵活的部署方式。我们先从最基础的Docker引擎安装开始,这几乎是所有操作的前提。
首先,确保你的CentOS系统是最新的,这能避免很多不必要的兼容性问题。一个简单的
sudo yum update -y
yum-utils
yum-config-manager
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
然后,添加Docker的稳定版仓库。我通常会选择稳定版,因为它经过了充分的测试,虽然新特性可能不会第一时间拥有,但对于生产环境来说,稳定性是压倒一切的。
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
仓库添加完毕后,就可以安装Docker CE(Community Edition)了。有时候,系统可能会提示你确认GPG密钥,直接同意就行。
sudo yum install docker-ce docker-ce-cli containerd.io -y
安装完成后,别忘了启动Docker服务并设置开机自启。不然每次重启服务器后,你都得手动去启动它,那可真是太麻烦了。
sudo systemctl start docker sudo systemctl enable docker
为了验证Docker是否安装成功,可以运行一个简单的
hello-world
sudo docker run hello-world
如果一切顺利,你会看到一条消息,大致意思是Docker已经成功安装并运行了。
接下来,就是我们实际的应用部署了。比如,我需要部署一个Nginx服务。
sudo docker pull nginx:latest # 拉取最新版Nginx镜像 sudo docker run --name my-nginx -p 80:80 -d nginx # 运行Nginx容器,映射80端口,后台运行
这里的
-p 80:80
-d
--name my-nginx
当然,如果你的应用需要持久化数据,比如数据库,那就得用到数据卷(Volumes)。这块内容挺重要的,因为容器本身是无状态的,一旦删除,容器内的数据也就没了。
sudo docker volume create my-data # 创建一个数据卷 sudo docker run --name my-app-with-data -v my-data:/app/data -d my-app-image # 运行容器并挂载数据卷
这样,
my-app-image
/app/data
my-data
这确实是初学者在CentOS上部署Docker容器时常遇到的一个“坑”。容器的网络问题,说起来复杂,但很多时候症结在于CentOS特有的防火墙(firewalld)和SELinux策略。我记得有一次,我折腾了半天容器间的通信,结果发现是firewalld把端口给堵死了。
首先,最常见的原因是
firewalld
iptables
firewalld
firewalld
sudo systemctl stop firewalld sudo systemctl disable firewalld
如果禁用后网络正常,那么问题就在
firewalld
firewalld
docker0
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp sudo firewall-cmd --reload
另外,Docker在CentOS上默认使用的是
bridge
docker0
ip a
docker0
SELinux也是一个潜在的麻烦制造者。CentOS的SELinux策略默认比较严格,有时会阻止容器访问宿主机的特定文件或网络资源。如果你在容器日志中看到
Permission denied
setenforce 0
z
z
sudo docker run -v /host/path:/container/path:z my-image
这里的
:z
优化Docker容器的性能和安全性,这绝对是个值得深思的话题。在我看来,这不仅仅是技术细节,更是一种权衡和策略的选择。
性能方面:
overlay2
devicemapper
overlay2
/etc/docker/daemon.json
{
"storage-driver": "overlay2"
}然后重启Docker服务。
--cpus
--memory
sudo docker run --name my-app --cpus="0.5" --memory="512m" -d my-image
这会限制容器最多使用半个CPU核心和512MB内存。
json-file
log-driver
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}这样每个容器的日志文件最大10MB,最多保留3个。
macvlan
ipvlan
安全性方面:
alpine
Dockerfile
# Dockerfile 示例 FROM alpine:latest RUN adduser -D myuser USER myuser CMD ["my-app"]
--privileged
--cap-add
--cap-drop
容器部署后,日常的管理和维护才是真正考验运维功力的地方。我个人觉得,这就像是养宠物,你得定期喂食、清理、检查健康状况,才能让它活蹦乱跳。
容器生命周期管理:
docker start/stop/restart [container_name_or_id]
docker rm [container_name_or_id]
docker rm -f
docker system prune
sudo docker system prune -a # 清理所有停止的容器、未使用的网络、悬挂镜像和构建缓存
多容器编排(Docker Compose): 当你的应用由多个服务(如Web服务器、数据库、缓存)组成时,手动管理这些容器会变得非常繁琐。
Docker Compose
YAML
# docker-compose.yml 示例
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
db:
image: postgres:13
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:然后只需
sudo docker-compose up -d
日志与监控:
docker logs [container_name_or_id]
-f
-t
docker stats
备份与恢复:
sudo docker run --rm --volumes-from [data_container_name] -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /data
或者直接备份宿主机上数据卷的物理路径(通常在
/var/lib/docker/volumes/
docker save -o my_image.tar my-image:tag
tar
docker load -i my_image.tar
更新与升级:
docker-compose
docker-compose.yml
docker-compose up -d --build
yum update docker-ce
日常管理维护,说到底就是一套规范化的流程,加上一些趁手的工具。熟练运用这些,能让你在容器的世界里游刃有余。
以上就是CentOS容器部署怎么操作_CentOS部署Docker容器教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号