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