Docker 以輕量級容器技術重塑應用交付。本文實戰演示 CentOS 7 上 Docker 核心操作:鏡像管理、容器生命周期、網絡架構、數據持久化,構建從零上手的完整知識鏈。
# CentOS 7 安裝 Docker
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker && systemctl enable docker
docker run -it ubuntu:20.04 /bin/bash
# -i: 交互模式保持 STDIN 開啟
# -t: 分配偽終端
# ubuntu:20.04: 指定鏡像標籤(不指定默認 latest)
首次運行自動從 Docker Hub 拉取鏡像,輸出層下載進度。
root@8c342c0c275c:/# hostname
8c342c0c275c # 容器 ID 作為主機名
root@8c342c0c275c:/# cat /etc/hosts
172.17.0.2 8c342c0c275c # Docker 自動添加容器 IP 解析
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
root@8c342c0c275c:/# ip a
# eth0: 172.17.0.2/16 ← docker0 橋接網絡分配
# lo: 127.0.0.1/8
| 操作 | 命令 | 示例 |
|---|---|---|
| 列出運行中容器 | docker ps | docker ps -a 含停止 |
| 啟動/停止/重啟 | docker start/stop/restart | docker restart webapp |
| 進入運行容器 | docker exec -it | docker exec -it webapp bash |
| 查看日誌 | docker logs | docker logs -f --tail 100 webapp |
| 刪除容器 | docker rm | docker rm -f webapp 強制刪除運行中 |
| 查看資源佔用 | docker stats | docker stats --no-stream |
# 匿名卷
docker run -v /data --name db mysql:5.7
# 綁定掛載(指定宿主路徑)
docker run -v /host/data:/var/lib/mysql --name db mysql:5.7
# 只讀掛載
docker run -v /host/config:/etc/app:ro --name app nginx
# 發布端口到宿主機
docker run -p 8080:80 --name web nginx
# 宿主機 8080 → 容器 80
# 指定綁定地址
docker run -p 127.0.0.1:8080:80 --name web nginx
# 自定義網絡
docker network create mynet
docker run --network mynet --name app myimage
# Dockerfile
FROM ubuntu:20.04
RUN apt update && apt install -y python3 nginx
COPY app.py /app/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
# 構建
docker build -t myapp:v1 .
--restart unless-stopped 實現自動重啟--memory=512m --cpus=1.0--log-driver json-file --log-opt max-size=10m --log-opt max-file=3--read-only --security-opt no-new-privileges --cap-drop ALL| 現象 | 排查命令 |
|---|---|
| 容器啟動即退出 | docker logs container_name |
| 端口衝突 | netstat -tlnp | grep 8080 |
| 掛載權限問題 | ls -ld /host/path; docker exec -it c ls -ld /container/path |
| 鏡像拉取失敗 | docker pull image:tag 手動拉取查看詳情 |
掌握 Docker 核心操作,開啟雲原生應用部署新篇章。