Docker 入门
Wed Apr 02 2025
1570 label.wordCount · 8 label.readTime

Docker 入门


Table of Contents

什么是 Docker? Link to 什么是 Docker?

Docker 是一个开源的容器化平台,用于开发、部署和运行应用程序。它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,然后可以在任何支持 Docker 的环境中运行。

Docker 与虚拟机的区别 Link to Docker 与虚拟机的区别

特性Docker 容器虚拟机 (VM)
隔离进程级隔离完整的硬件级隔离
启动秒级启动分钟级启动
性能接近原生性能有性能损耗
资源轻量,共享宿主OS内核重量级,每个VM有完整OS
大小通常为MB级别通常为GB级别
移植高,跨平台兼容性好相对较低

核心概念 Link to 核心概念

1. 容器 (Container) Link to 1. 容器 (Container)

  • 是镜像的运行实例
  • 轻量级、独立、可执行的软件包
  • 包含运行应用所需的所有内容:代码、运行时、系统工具、系统库和设置
  • 容器之间相互隔离

2. 镜像 (Image) Link to 2. 镜像 (Image)

  • 容器的模板,只读文件
  • 包含创建容器所需的所有文件和配置
  • 采用分层存储结构,可复用已有层
  • 通过 Dockerfile 构建

3. Docker 引擎 Link to 3. Docker 引擎

  • Docker 的核心组件
  • 包含:
    • Docker 守护进程 (dockerd):长期运行的服务端进程
    • Docker 客户端 (docker CLI):用户与守护进程交互的接口
    • REST API:用于程序与守护进程交互

Docker 安装 Link to Docker 安装

在 Windows 上安装 Docker Link to 在 Windows 上安装 Docker

Docker 基本命令 Link to Docker 基本命令

容器生命周期管理 Link to

docker run - 创建并启动一个新容器

BASH
1
docker run [选项] 镜像名 [命令]
  • 常用选项:
    • -d:后台运行(守护态)
    • -p 主机端口:容器端口:端口映射
    • -v 主机路径:容器路径:挂载数据卷
    • --name 容器名:指定容器名称
    • -e 环境变量:设置环境变量
    • --rm:容器退出后自动删除
  • 示例:
BASH
1
docker run -d -p 8080:80 --name my_nginx nginx

docker stop - 停止运行中的容器

BASH
1
docker stop 容器ID或名称
  • 示例:
BASH
1
docker stop my_nginx

docker rm - 删除已停止的容器

BASH
1
docker rm 容器ID或名称
  • 强制删除运行中的容器:-f
  • 删除所有已停止的容器:
BASH
1
docker rm $(docker ps -aq)

容器查询与操作 Link to

docker ps - 查看容器列表

BASH
1
docker ps [选项]
  • 常用选项: -a:显示所有容器(包括已停止的) -q:仅显示容器ID
  • 示例:
BASH
1
docker ps -a

docker logs - 查看容器日志

BASH
1
docker logs 容器ID或名称
  • 实时跟踪日志:-f
  • 显示最后 N 行:--tail N
  • 示例:
BASH
1
docker logs -f my_nginx

docker exec - 在运行中的容器内执行命令

BASH
1
docker exec [选项] 容器ID或名称 命令
  • 常用选项: -it:交互式终端(进入容器)
  • 示例:
BASH
1
docker exec -it my_nginx /bin/bash

docker inspect - 查看容器/镜像的详细信息(JSON 格式)

BASH
1
docker inspect 容器ID/镜像名
  • 示例:
BASH
1
docker inspect my_nginx | grep IPAddress # 查看容器IP

镜像管理 Link to

docker images - 列出本地镜像

BASH
1
docker images [选项]
  • 常用选项: -q:仅显示镜像ID
  • 示例:
BASH
1
docker images

docker rmi - 删除本地镜像

BASH
1
docker rmi 镜像ID或名称
  • 强制删除:-f
  • 删除所有镜像(慎用!):
BASH
1
docker rmi $(docker images -aq)

docker pull - 下载镜像

BASH
1
docker pull 镜像名:标签

docker build - 通过 Dockerfile 构建镜像

BASH
1
docker build -t 镜像名:标签 Dockerfile路径

总结 Link to 总结

命令作用
docker run创建并启动容器
docker ps查看容器列表
docker stop停止容器
docker rm删除容器
docker images列出镜像
docker rmi删除镜像
docker logs查看容器日志
docker exec进入运行中的容器
docker inspect查看容器/镜像的详细信息

网络 Link to 网络

换源 Link to 换源

最推荐的方式

JSON
1
"registry-mirrors": ["http://docker.m.daocloud.io"]

Docker代理 Link to Docker代理

研究一个小时未果,放弃。

  1. 打开 Docker Desktop
  2. 点击右上角的设置齿轮图标
  3. 选择 “Resources” → “Proxies”
  4. 在 “HTTP Proxy” 和 “HTTPS Proxy” 字段中输入你的代理地址(例如 http://proxy.example.com:8080
  5. 如果需要认证,使用格式 http://username:password@proxy.example.com:8080
  6. 点击 “Apply & Restart

WSL2代理 Link to WSL2代理

修改~/.bashrc

BASH
1
2
3
4
export host_ip=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
export http_proxy="http://$host_ip:10804"
export https_proxy="http://$host_ip:10804"
echo "Proxy ON: $http_proxy"

实战测试 Link to 实战测试

拉取 Link to 拉取

从github拉取excalidraw

BASH
1
git clone https://github.com/excalidraw/excalidraw

也可以直接从dockerhub拉取

BASH
1
docker pull name:tag

构建镜像 Link to 构建镜像

BASH
1
docker build -t ec-draw .

运行容器 Link to 运行容器

BASH
1
docker run -d --name my_container -p 8080:80 ec-draw

访问 Link to 访问

BASH
1
http://localhost:8080

成功访问

停止 Link to 停止

BASH
1
docker stop my_container

注意 Link to 注意

  • 以上代码可以运行在windows和wsl2上
Thanks for reading!

Docker 入门

Wed Apr 02 2025
1570 label.wordCount · 8 label.readTime