docker入门
字数 1181 2025-08-18 17:33:34

Docker 入门与进阶教程

一、Docker 基础概念

Docker 是一个开源的应用容器引擎,基于轻量级虚拟化技术,允许开发者将应用及其依赖打包到一个可移植的容器中。

核心概念:

  • 镜像(Image):类似于面向对象中的"类",是一个只读模板,用于创建容器
  • 容器(Container):镜像的运行实例,类似于"对象"
  • 仓库(Repository):集中存放镜像文件的场所

二、Docker 安装与帮助命令

1. 安装 Docker

请参考官方文档安装适合您操作系统的 Docker 版本。

2. 帮助命令

docker version      # 查看 Docker 版本信息
docker info         # 查看系统信息,包括容器和镜像数量等
docker [command] --help  # 查看特定命令的帮助信息

三、镜像操作命令

1. 查看镜像

docker images       # 列出本地镜像
docker images -a    # 列出所有镜像(包括中间层镜像)
docker images -q    # 只显示镜像ID

2. 搜索镜像

docker search mysql              # 搜索 MySQL 镜像
docker search mysql --filter=STARS=3000  # 搜索星标≥3000的 MySQL 镜像

3. 下载镜像

docker pull mysql         # 下载最新版 MySQL
docker pull mysql:5.7     # 下载指定版本的 MySQL

4. 删除镜像

docker rmi -f mysql:latest       # 强制删除指定镜像
docker rmi -f cd80881c4e0e       # 通过镜像ID删除
docker rmi -f $(docker images -aq) # 删除所有镜像

四、容器操作命令

1. 启动容器

docker run [选项] 镜像 [命令]

常用选项:

  • --name="容器名":指定容器名称
  • -d:后台运行
  • -it:交互式运行(通常配合 /bin/bash)
  • -p:端口映射(主机端口:容器端口)
  • -P:随机分配端口

示例:

docker run -it centos /bin/bash  # 启动交互式 CentOS 容器
docker run -d --name nginx1 -p 443:80 nginx  # 后台启动 Nginx

2. 查看容器

docker ps        # 查看运行中的容器
docker ps -a     # 查看所有容器(包括已停止的)
docker ps -a -n=2 # 查看最近运行的2个容器

3. 退出容器

  • exit:退出并停止容器
  • Ctrl+P+Q:退出但不停止容器

4. 删除容器

docker rm -f 容器名/ID          # 强制删除容器
docker rm -f $(docker ps -aq)  # 删除所有容器

5. 容器生命周期管理

docker start 容器ID    # 启动容器
docker restart 容器ID  # 重启容器
docker stop 容器ID     # 停止容器
docker kill 容器ID     # 强制停止容器

6. 容器信息查看

docker logs 容器ID -tf --details  # 查看容器日志(带时间戳和详情)
docker top 容器ID                 # 查看容器进程
docker inspect 容器ID             # 查看容器元数据(全部信息)

7. 进入运行中的容器

docker exec -it 容器ID /bin/bash  # 进入容器

8. 文件拷贝

docker cp 容器ID:容器内路径 宿主机路径  # 从容器拷贝到宿主机
docker cp 宿主机路径 容器ID:容器内路径  # 从宿主机拷贝到容器

五、Docker 镜像原理

1. UnionFS (联合文件系统)

Docker 镜像基于分层存储的 UnionFS 实现:

  • 分层结构:镜像由多层只读层组成
  • 写时复制:容器层在镜像层之上添加可写层
  • 资源共享:相同的基础层可以被多个镜像共享

2. 镜像组成

  • bootfs:包含 bootloader 和 kernel
  • rootfs:包含 /dev, /proc, /bin 等标准目录

六、提交镜像

docker commit -m="描述信息" -a="作者" 容器ID 新镜像名:[TAG]

示例:

docker commit -a="jess" -m="add webapps app" 容器ID tomcat02:1.0

七、数据卷(Volume)

1. 数据卷介绍

数据卷是宿主机上的目录或文件,可以绕过联合文件系统实现:

  • 数据持久化
  • 容器间数据共享
  • 数据备份和恢复

2. 数据卷管理

docker volume create my-volume  # 创建数据卷
docker volume ls               # 列出数据卷
docker volume rm my-volume     # 删除数据卷
docker volume prune            # 删除所有未使用的数据卷

默认数据卷位置:/var/lib/docker/volumes/

3. 挂载方式

# 挂载宿主机目录到容器
docker run -it -v /宿主机目录:/容器目录 镜像名 /bin/bash

# 匿名挂载(自动生成卷名)
docker run -d -P --name nginx1 -v /etc/nginx nginx

# 具名挂载(自定义卷名)
docker run -d -P --name nginx2 -v havename_nginx:/etc/nginx nginx

4. 权限设置

:ro  # 只读(readonly)
:rw  # 可读可写(readwrite,默认)

示例:

docker run -d -P --name nginx02 -v mynginx:/etc/nginx:ro nginx

八、Dockerfile 与 docker-compose

1. Dockerfile

用于自动化构建镜像的脚本文件(本教程未详细展开)

2. docker-compose

用于定义和运行多容器 Docker 应用的工具

基本命令:

docker-compose build    # 构建镜像
docker-compose up -d    # 启动容器(后台运行)
docker-compose down     # 停止并移除容器

九、实战示例

1. 部署 Nginx

docker search nginx
docker pull nginx
docker run -d --name nginx1 -p 445:80 nginx
# 访问 http://127.0.0.1:445

2. 部署 Tomcat 并自定义

docker run -d -p 8080:8080 tomcat
docker exec -it 容器ID /bin/bash
# 在容器内进行修改后提交为新镜像
docker commit -a="作者" -m="描述" 容器ID tomcat02:1.0

十、最佳实践

  1. 使用官方镜像作为基础
  2. 合理规划数据卷,确保重要数据持久化
  3. 为容器设置资源限制(CPU、内存等)
  4. 保持镜像精简,删除不必要的文件
  5. 使用多阶段构建减小镜像体积
  6. 为生产环境配置适当的日志和监控

通过本教程,您应该已经掌握了 Docker 的核心概念和基本操作。Docker 的强大之处在于其轻量级和可移植性,能够显著提高开发和部署效率。

Docker 入门与进阶教程 一、Docker 基础概念 Docker 是一个开源的应用容器引擎,基于轻量级虚拟化技术,允许开发者将应用及其依赖打包到一个可移植的容器中。 核心概念: 镜像(Image) :类似于面向对象中的"类",是一个只读模板,用于创建容器 容器(Container) :镜像的运行实例,类似于"对象" 仓库(Repository) :集中存放镜像文件的场所 二、Docker 安装与帮助命令 1. 安装 Docker 请参考官方文档安装适合您操作系统的 Docker 版本。 2. 帮助命令 三、镜像操作命令 1. 查看镜像 2. 搜索镜像 3. 下载镜像 4. 删除镜像 四、容器操作命令 1. 启动容器 常用选项: --name="容器名" :指定容器名称 -d :后台运行 -it :交互式运行(通常配合 /bin/bash) -p :端口映射(主机端口:容器端口) -P :随机分配端口 示例: 2. 查看容器 3. 退出容器 exit :退出并停止容器 Ctrl+P+Q :退出但不停止容器 4. 删除容器 5. 容器生命周期管理 6. 容器信息查看 7. 进入运行中的容器 8. 文件拷贝 五、Docker 镜像原理 1. UnionFS (联合文件系统) Docker 镜像基于分层存储的 UnionFS 实现: 分层结构:镜像由多层只读层组成 写时复制:容器层在镜像层之上添加可写层 资源共享:相同的基础层可以被多个镜像共享 2. 镜像组成 bootfs :包含 bootloader 和 kernel rootfs :包含 /dev, /proc, /bin 等标准目录 六、提交镜像 示例: 七、数据卷(Volume) 1. 数据卷介绍 数据卷是宿主机上的目录或文件,可以绕过联合文件系统实现: 数据持久化 容器间数据共享 数据备份和恢复 2. 数据卷管理 默认数据卷位置: /var/lib/docker/volumes/ 3. 挂载方式 4. 权限设置 示例: 八、Dockerfile 与 docker-compose 1. Dockerfile 用于自动化构建镜像的脚本文件(本教程未详细展开) 2. docker-compose 用于定义和运行多容器 Docker 应用的工具 基本命令: 九、实战示例 1. 部署 Nginx 2. 部署 Tomcat 并自定义 十、最佳实践 使用官方镜像作为基础 合理规划数据卷,确保重要数据持久化 为容器设置资源限制(CPU、内存等) 保持镜像精简,删除不必要的文件 使用多阶段构建减小镜像体积 为生产环境配置适当的日志和监控 通过本教程,您应该已经掌握了 Docker 的核心概念和基本操作。Docker 的强大之处在于其轻量级和可移植性,能够显著提高开发和部署效率。