安装 Docker

  • Linux 系统:不同 Linux 发行版安装命令不同。对于 Ubuntu/Debian 系统,使用apt-get安装,命令如下:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

对于 CentOS/RHEL 系统,使用yum安装,命令如下:

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

安装后需要启动 docker 服务:sudo systemctl start docker

  • Windows/Mac 系统:从 Docker 官网下载 Docker Desktop 安装包,然后按照安装向导进行安装即可。

常用命令

  • 镜像操作
    • 拉取镜像:使用docker pull <image_name>命令从指定镜像仓拉取镜像到本地,如docker pull ubuntu:20.04
    • 查看镜像:通过docker images命令可以列出本地已下载的镜像。
    • 删除镜像docker rmi <image_name>用于删除指定镜像,但删除镜像前需确保没有容器在使用该镜像。
  • 容器操作
    • 运行容器docker run <image_name>可以从镜像创建并运行一个新的容器。例如docker run --name my - nginx - p 8080:80 - d nginx,其中--name用于给容器起一个自定义的名字,-p用于端口映射,-d表示在后台运行容器。
    • 查看容器docker ps用于列出当前运行的容器,docker ps --all可以列出当前运行和已停止的所有容器。
    • 启动、停止和删除容器docker start <container_name>用于启动一个现有的容器,docker stop <container_name>用于停止一个现有的容器,docker rm <container_name>用于删除一个已停止的容器。

构建镜像

可以通过编写Dockerfile来构建自定义镜像。Dockerfile是一个文本文件,其中包含了一系列指令,用于描述如何构建镜像。例如:

FROM ubuntu:20.04
RUN apt - get update && apt - get install - y python3 python3 - pip
COPY. /app
WORKDIR /app
RUN pip3 install - r requirements.txt
CMD ["python3", "app.py"]

编写好Dockerfile后,在包含该文件的目录下执行docker build -t my - python - app.命令来构建镜像,其中-t用于给镜像指定一个标签。

数据卷操作

数据卷是一种用于在容器和宿主机之间共享数据的机制。可以使用-v参数来创建数据卷。例如,docker run -d --name my - nginx - v /host/path:/container/path nginx,这将把宿主机上的/host/path目录挂载到容器内的/container/path目录。

容器网络

Docker 支持多种网络模式,如桥接网络、主机网络等。可以使用--network参数来指定容器使用的网络模式。例如,docker run -d --name my - nginx --network my - network nginx,其中my - network是一个自定义的网络。

容器编排

当需要管理多个容器时,可以使用 Docker Compose。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。首先需要编写一个docker - compose.yml文件,例如:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: mysecretpassword

然后在包含docker - compose.yml文件的目录下执行docker - compose up - d命令来启动所有容器。

遇到问题:

Failed to initialize: unable to resolve docker endpoint: open C:\Users\1\.docker\machine\machines\default\ca.pem: The system cannot find the path specified. (base)

现代 Docker Desktop(Windows 版)默认使用 WSL2 作为后端,而非 Docker Machine,

步骤 1:检查并切换 Docker 上下文

Docker 上下文(Context)决定了命令连接的 Docker 主机,你的环境可能默认指向了不存在的default Machine。

  1. 打开 PowerShell,查看当前所有上下文:

    docker context ls
    
     

    正常情况下,应显示类似以下结果(重点看NAMESTATUS):

    NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT                  KUBERNETES ENDPOINT   ORCHESTRATOR
    default             docker              Current DOCKER_HOST based configuration   unix:///var/run/docker.sock
    desktop-linux *     docker                                                      npipe:////./pipe/docker_engine
    
     

    *表示当前活跃的上下文)

  2. 如果当前上下文是default(且状态异常),切换到正确的上下文:

    # 切换到Docker Desktop默认的WSL2后端上下文(通常是desktop-linux)
    docker context use desktop-linux
    

步骤 2:删除无效的 Docker Machine 上下文(如果存在)

如果docker context ls中存在default上下文且无法使用,直接删除它:

# 删除无效的default上下文
docker context rm default

步骤 3:确认 WSL2 后端正常工作

Docker Desktop 在 Windows 上推荐使用 WSL2 作为后端,检查 WSL2 是否启用:

  1. 打开 PowerShell,执行:

    wsl --list --verbose
    
     

    应显示至少一个 WSL2 发行版(如Ubuntu),状态为RunningStopped(stopped 也可,Docker 会自动启动)。

  2. 若未安装 WSL2,按以下步骤启用:

    # 启用WSL功能
    wsl --install
    # 安装完成后重启电脑

步骤 4:重启 Docker Desktop 并验证

  1. 完全关闭 Docker Desktop(右键托盘图标→"Quit Docker Desktop")
  2. 重新启动 Docker Desktop,等待其完全初始化(托盘图标稳定)
  3. 再次运行测试命令:
    docker run hello-world
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐