一、环境搭建
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