一、環境搭建
1.1 基礎包安裝(最小化系統)
# 備份Yum源配置
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ 配置Yum源示例 可以更換為阿里云鏡像
cat <<EOF > /etc/yum.repos.d/local.repo
[baseos]
name=baseos
baseurl=file:///mnt/BaseOS/
gpgcheck=0 [app]
name=app
baseurl=file:///mnt/AppStream/
gpgcheck=0
EOF # 刷新緩存并安裝工具包
yum clean all
yum install -y vim net-tools bash-completion yum-utils
📌 關鍵說明:
yum-utils
用于管理Docker倉庫bash-completion
提供命令補全(執行bash
刷新)
1.2 Docker安裝
# 添加阿里云倉庫
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安裝Docker
yum install -y docker-ce # 啟動服務
systemctl start docker
systemctl enable docker
docker -v # 驗證版本
二、鏡像操作
2.1 核心命令
命令 | 說明 |
---|---|
docker search mysql | 搜索鏡像 |
docker pull centos:7.8.2003 | 拉取指定版本 |
docker images | 查看本地鏡像 |
docker rmi mysql:latest | 刪除鏡像 |
2.2 鏡像生命周期管理
# 導出鏡像
docker save mysql:latest -o mysql.tar # 導入鏡像
docker load -i mysql.tar # 推送鏡像到倉庫
docker tag alpine:latest registry.cn-hangzhou.aliyuncs.com/your-namespace/alpine:v1
docker push registry.cn-hangzhou.aliyuncs.com/your-namespace/alpine:v1
2.3 鏡像加速配置
# 阿里云加速器
cat <<EOF > /etc/docker/daemon.json
{ "registry-mirrors": ["https://cc2d8woc.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
三、容器操作
3.1 基礎操作
# 啟動容器
docker run -tid --name os1 --restart always centos:latest # 進入容器
docker exec -ti os1 /bin/bash # 查看日志
docker logs os1
3.2 容器生命周期
docker stop os1 # 停止容器
docker start os1 # 啟動容器
docker rm -f os1 # 刪除容器
3.3 端口映射與變量傳遞
# Nginx容器
docker run -tid --name web -p 8080:80 nginx # MySQL容器
docker run -tid --name db \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=redhat \ mysql:latest
3.4 文件操作
# 主機→容器
docker cp /path/file os1:/container/path/ # 容器→主機
docker cp os1:/container/path/file /host/path/
四、實戰案例:部署WordPress
4.1 創建MySQL容器
docker run -tid --name db \ -e MYSQL_ROOT_PASSWORD=redhat \ -e MYSQL_DATABASE=wordpress \ mysql:latest
4.2 獲取MySQL IP
DB_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' db)
4.3 啟動WordPress
docker run -tid --name blog \ -e WORDPRESS_DB_HOST=$DB_IP \ -e WORDPRESS_DB_USER=root \ -e WORDPRESS_DB_PASSWORD=redhat \ -p 8080:80 \ wordpress:latest
🌐 訪問地址:
http://服務器IP:8080
五、容器網絡
5.1 網絡類型
docker network ls # 查看所有網絡
- bridge:默認網絡(推薦)
- host:共享主機網絡
- none:無網絡
5.2 自定義網絡
# 創建網絡
docker network create my-net # 容器加入網絡
docker run -tid --name web --network my-net nginx
六、容器存儲
6.1 永久卷存儲
# 具名卷(推薦)
docker volume create mysql-data
docker run -tid --name db -v mysql-data:/var/lib/mysql mysql # 主機目錄映射
docker run -tid --name web -v /host/data:/container/data nginx
七、Dockerfile入門
7.1 示例文件
FROM centos:7
LABEL maintainer="your-email@example.com"
RUN yum install -y httpd && yum clean all
COPY index.html /var/www/html/
EXPOSE 80
CMD ["httpd", "-D", "FOREGROUND"]
7.2 構建與運行
docker build -t my-apache .
docker run -tid --name myweb -p 8080:80 my-apache
八、命令速查表
功能 | 命令 |
---|---|
鏡像管理 | docker images docker pull <image> docker rmi <image> |
容器操作 | docker run [options] <image> docker exec -ti <container> /bin/bash |
日志與監控 | docker logs <container> docker ps -a |
網絡管理 | docker network create <name> docker network ls |
存儲管理 | docker volume create <name> docker run -v <volume>:<path> |
💡 最佳實踐:
- 生產環境使用固定版本標簽(如
mysql:8.0
而非latest
)- 容器應保持無狀態,關鍵數據使用卷存儲
- 多容器應用使用
docker-compose
管理- 定期清理:
docker system prune