内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
风哥提示:
本文档介绍Docker容器的创建和管理方法。
Part01-容器生命周期
1.1 创建与运行容器
[root@docker ~]# docker run -d –name fgedu-nginx -p 80:80 nginx:latest
Unable to find image ‘nginx:latest’ locally
latest: Pulling from library/nginx
a2abf6c4d29d: Already exists
a9edb18cadd1: Already exists
589b7251471a: Already exists
Digest: sha256:0d17b565c37bcbd895e9d92315a05ed186083e3d3b3a8d1f9f5d3b9d5d5d5d5d
Status: Downloaded newer image for nginx:latest
abc123def456789012345678901234567890123456789012345678901234
# 查看运行中的容器
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123def456 nginx:latest “/docker-entrypoi更多学习教程公众号风哥教程itpux_comnt.…” 5 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp fgedu-nginx
# 查看所有容器
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123def456 nginx:latest “/docker-entrypoint.…” 1 minute ago 学习交流加群风哥微信: itpux-com Up 1 minute 0.0.0.0:80->80/tcp fgedu-nginx
# 查看容器详情
[root@docker ~]# docker inspect fgedu-nginx
[
{
“Id”: “abc123def456789012345678901234567890123456789012345678901234”,
“Created”: “2026-04-04T05:00:00.123456789Z”,
“Path”: “/docker-entrypoint.sh”,
“Args”: [
“nginx”,
“-g”,
“daemon off;”
],
“State”: {
“Status”: “running”,
“Running”: true,
“Paused”: false,
“Restarting”: false,
“Pid”: 12345,
“ExitCode”: 0,
“StartedAt”: “2026-04-04T05:00:00.123456789Z”
},
“Name”: “/fgedu-nginx”,
“Config”: {
“Image”: “nginx:latest”,
“ExposedPorts”: {
“80/tcp”: {}
}
},
“NetworkSettings”: {
“Ports”: {
“80/tcp”: [
{
“HostIp”: “0.0.0.0”,
“HostPort”: “80”
}
]
},
“IPAddress”: “172.17.0.2”
}
}
]
# 停止容器
[root@docker ~]# docker stop fgedu-nginx
fgedu-nginx
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123def456 nginx:latest “/docker-entrypoint.…” 2 minutes ago Exited (0) 3 seconds ago fgedu-nginx
# 启动容器
[root@docker ~]# docker start fgedu-nginx
fgedu-nginx
# 重启容器
[root@docker ~]# docker restart fgedu-nginx
fgedu-nginx
# 暂停容器
[root@docker ~]# docker pause fgedu-nginx
fgedu-nginx
# 恢复容器
[root@docker ~]# docker unpause fgedu-nginx
fgedu-nginx
# 删除容器
[root@docker ~]# docker rm -f fgedu-nginx
fgedu-nginx
Part02-容器操作
2.1 容器交互
[root@docker ~]# docker exec -it fgedu-nginx bash
root@abc123def456:/# hostname
abc123def456
root@abc123def456:/# cat /etc/os-release
PRETTY_NAME=”Debian GNU/Linux 12 (bookworm)”
NAME=”Debian GNU/Linux”
VERSION_ID=”12″
VERSION=”12 (bookworm)”
root@abc123def456:/# exit
exit
# 查看容器日志
[root@docker ~]# docker logs fgedu-nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
# 实时查看日志
[root@docker ~]# docker logs -f –tail 100 fgedu-nginx
# 查看容器资源使用
[root@docker ~]# docker stats fgedu-nginx
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
abc123def456 fgedu-nginx 0.00% 2.5MiB / 7.5GiB 0.03% 1.2kB / 0B 0B / 0B 2
# 查看容器进程
[root@docker ~]# docker top fgedu-nginx
UID PID PPID C STIME TTY TIME CMD
root 12345 12344 0 05:00 ? 00:00:00 nginx: master process nginx -g daemon off;
101 12400 12345 0 05:00 ? 00:00:00 nginx: worker process
# 容器与主机文件复制
[root@docker ~]# docker cp /etc/hosts fgedu-nginx:/tmp/hosts
Successfully copied 2.56kB to fgedu-nginx:/tmp/hosts
[root@docker ~]# docker cp fgedu-nginx:/etc/nginx/nginx.conf /tmp/nginx.conf
Successfully copied 4.61kB to /tmp/nginx.conf
# 查看容器端口映射
[root@docker ~]# docker port fgedu-nginx
80/tcp -> 0.0.0.0:80
# 查看容器变更
[root@docker ~]# docker diff fgedu-nginx
C /var/cache/nginx
A /var/cache/nginx/client_temp
A /var/cache/nginx/proxy_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/scgi_temp
# 导出容器
[root@docker ~]# docker export fgedu-nginx -o fgedu-nginx.tar
# 导入容器为镜像
[root@docker ~]# docker import fgedu-nginx.tar fgedu/nginx:v1.0
sha256:abc123def456789012345678901234567890123456789012345678901234
# 提交容器为镜像
[root@docker ~]# docker commit -m “Custom nginx” -a “fgedu” fgedu-nginx fgedu/nginx:v1.0
sha256:abc123def456789012345678901234567890123456789012345678901234
- 使用有意义的容器名称
- 合理配置资源限制
- 定期清理停止的容器
- 使用日志驱动管理日志
- 配置健康检查机制
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
