Skip to content
xiaoyang 的头像xiaoyang发布于 2025-02-081,644 字阅读约 5 分钟浏览加载中

Docker介绍 ​

image-20250208115836104

1. 为什么需要Docker? ​

环境配置一直是软件开发的痛点:

  • 开发和生产环境不一致
  • 依赖管理复杂
  • 运行环境迁移困难

Docker通过容器化技术从根本上解决了这些问题。

2. Docker vs 虚拟机 ​

虚拟机的局限 ​

  • 资源占用大:需要运行完整的操作系统
  • 启动慢:需要先启动操作系统
  • 冗余步骤多:如用户登录等系统操作无法跳过

Docker容器的优势 ​

  • 共享操作系统内核,启动秒级
  • 仅打包必要的应用和依赖
  • 资源占用小,性能接近原生
  • 可移植性强,一次构建处处运行

3. 核心概念 ​

镜像(Image) ​

  • 容器的模板文件
  • 分层存储,可以基于基础镜像扩展
  • 不可变,构建完就不能修改
  • 可以通过Dockerfile定制
  • 可在镜像仓库分享

容器(Container) ​

  • 镜像的运行实例
  • 拥有自己的文件系统、网络配置
  • 支持启动、停止、删除等生命周期管理
  • 互相隔离但可以通信
  • 退出后可以重新启动

4. Docker安装 ​

(1) 添加 Docker 官方源

bash
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

(2) 安装 Docker

bash
sudo yum install -y docker-ce docker-ce-cli containerd.io

(3) 启动并启用 Docker

bash
sudo systemctl start docker
sudo systemctl enable docker

(4) 验证 Docker

bash
docker --version
docker ps

5. 常用命令速查 ​

镜像操作 ​

bash
# 拉取镜像
docker pull [image]

# 构建镜像
docker build -t name:tag . 

# 推送镜像
docker push [image]

# 删除镜像  
docker rmi [image]

容器操作 ​

bash
# 运行容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 常用参数说明:
# -d: 后台运行容器并返回容器 ID。
# -it: 交互式运行容器,分配一个伪终端。
# --name: 给容器指定一个名称。
# -p: 端口映射,格式为 host_port:container_port。
# -v: 挂载卷,格式为 host_dir:container_dir。
# --rm: 容器停止后自动删除容器。
# --env 或 -e: 设置环境变量。
# --network: 指定容器的网络模式。
# --restart: 容器的重启策略(如 no、on-failure、always、unless-stopped)。
# -u: 指定用户

# 查看容器
docker ps [-a]

# 启动/停止
docker start/stop/restart [container]

# 进入容器
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 常用参数
# -d, --detach: 在后台运行命令。
# --detach-keys: 覆盖分离容器的键序列。
# -e, --env: 设置环境变量。
# --env-file: 从文件中读取环境变量。
# -i, --interactive: 保持标准输入打开。
# --privileged: 给这个命令额外的权限。
# --user, -u: 以指定用户的身份运行命令。
# --workdir, -w: 指定命令的工作目录。
# -t, --tty: 分配一个伪终端。

# 查看日志
docker logs [container]

# 删除容器
docker rm [container]
DISCUSSION

评论区

欢迎分享你的思考、补充或问题。

基于 VitePress 搭建