本文档详细记录了在 Ubuntu 环境下(例如 WSL Ubuntu)安装 Docker 的步骤,包括配置代理、镜像加速及常用使用场景的示例。
sudo apt-get remove docker docker-engine docker.io containerd runc
说明:如果系统中没有安装旧版本,系统会提示相关包未安装,可忽略此步骤。
安装必要的工具包(支持 HTTPS 协议和添加 GPG 密钥):
sudo apt-get update sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release
下载并保存密钥(存放在/usr/share/keyrings/docker-archive-keyring.gpg):
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
注意:替换下面命令中为你的阿里云专属加速器 ID。
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
提示中可能会显示关于旧版 trusted.gpg 的警告,可忽略。
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
验证:安装完成后检查版本:
sudo docker --version示例输出:Docker version 28.0.1, build 068a01e
sudo systemctl start docker sudo systemctl enable docker
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://.mirror.aliyuncs.com"] } EOF
sudo systemctl daemon-reload sudo systemctl restart docker
注意:Docker daemon 代理需使用 HTTP/HTTPS 格式的地址,不支持 socks5 协议。
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<-'EOF' [Service] Environment="HTTP_PROXY=http://192.168.2.218:2023" Environment="HTTPS_PROXY=http://192.168.2.218:2023" Environment="NO_PROXY=localhost,127.0.0.1" EOF
sudo systemctl daemon-reload sudo systemctl restart docker
sudo systemctl show --property=Environment docker输出应包含配置的HTTP_PROXY、HTTPS_PROXY和NO_PROXY变量。
将当前用户添加到docker用户组,避免每次使用 Docker 都需要 sudo:
sudo usermod -aG docker $USER
重启或重新登录后生效,然后可测试:
docker run hello-world
拉取镜像
docker pull <镜像名>:<标签>
示例:
docker pull ubuntu:20.04
查看本地镜像
docker images
删除镜像
docker rmi <镜像ID或镜像名>
搜索镜像
docker search <关键字>
运行容器
docker run [选项] <镜像名> [命令]
示例(交互式进入 Ubuntu 容器):
docker run -it ubuntu:20.04 /bin/bash
查看运行中的容器
docker ps
查看所有容器(包括已停止的)
docker ps -a
启动/停止/重启容器
docker start <容器ID或容器名> docker stop <容器ID或容器名> docker restart <容器ID或容器名>
进入运行中的容器
docker exec -it <容器ID或容器名> /bin/bash
删除容器
docker rm <容器ID或容器名>
查看容器日志
docker logs <容器ID或容器名>
查看网络列表
docker network ls
创建网络
docker network create <网络名>
将容器连接到网络
docker network connect <网络名> <容器ID或容器名>
创建数据卷
docker volume create <卷名>
查看数据卷
docker volume ls
删除数据卷
docker volume rm <卷名>
挂载数据卷到容器
docker run -v <卷名>:<容器内路径> <镜像名>
Dockerfile 是定义如何构建自定义 Docker 镜像的脚本。
# 使用基础镜像 FROM ubuntu:20.04 # 设置环境变量 ENV MY_ENV="Hello, Docker!" # 安装软件包 RUN apt-get update && apt-get install -y curl # 复制文件到容器 COPY ./myapp /app # 设置工作目录 WORKDIR /app # 暴露端口 EXPOSE 80 # 设置启动命令 CMD ["./myapp"]
在 Dockerfile 所在目录下运行:
docker build -t myapp:1.0 .
Docker Compose 用于定义和运行多容器应用。
version: '3' services: web: image: nginx ports: - "80:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: example
docker-compose up
docker-compose down
开发环境隔离
每个项目使用独立容器,避免环境冲突。例如,用 Ubuntu 容器进行开发测试:
docker run -it ubuntu:20.04 /bin/bash
持续集成/持续部署 (CI/CD)
在 CI/CD 流水线中构建和测试 Docker 镜像,确保环境一致性。
微服务架构
各微服务运行在独立容器中,使用 Docker Compose 或 Kubernetes 进行编排管理。
快速部署应用
将应用及其依赖打包成 Docker 镜像,在生产环境中快速部署并升级。
这份笔记涵盖了 Docker 的安装、代理配置、镜像加速、基本命令和常用场景等内容,希望能帮助你更好地理解和使用 Docker。如有其他问题或需要进一步调试网络/代理问题,请继续交流!