Docker部署(Windows)

1,739 阅读5分钟

使用 Docker Desktop 可以让你在 Windows 系统上轻松地构建、运行和管理 Docker 容器。以下是一些基本的步骤和提示,帮助你开始使用 Docker Desktop:

1.安装 Docker Desktop

  1. 下载 Docker Desktop:访问Docker官网并下载适用于Windows的Docker Desktop。
  2. 安装 Docker Desktop:运行下载的安装程序。请注意,Docker Desktop要求你的系统是Windows 10 64位:1607周年更新(Build 14393)及以上版本,并且需要启用Hyper-V和容器功能。如果在安装过程中遇到问题,请确保这些功能已经启用。
  3. 启动 Docker Desktop:安装完成后,启动Docker Desktop。初次启动时可能需要登录你的Docker账号。
  4. 配置 Docker Desktop:根据需求调整设置,比如资源限制(CPU、内存等)、Docker Engine配置等。对于大多数应用,默认设置就足够了。

2.基本操作

(1). 命令行界面 (CLI)

  • 打开命令提示符或 PowerShell。
  • 使用 docker --version 检查 Docker 是否正确安装。
  • 使用 docker ps 查看当前正在运行的容器。
  • 使用 docker images 查看本地已有的镜像。

(2). 构建和运行容器

  • 创建一个 Dockerfile 来定义如何构建你的应用镜像。

    # 使用官方 ASP.NET 运行时镜像作为基础镜像
    FROM mcr.microsoft.com/dotnet/aspnet:3.1
    
    # 设置工作目录
    WORKDIR /app
    
    # 将当前目录下的所有文件复制到容器内的 /app 目录中
    COPY . .
    
    # 配置容器启动时执行的命令
    ENTRYPOINT ["dotnet", "AuthCenter.dll"]
    
  • 在包含 Dockerfile 的目录中打开命令提示符或 PowerShell。

  • 使用 docker build -t your-image-name . 构建镜像,其中 your-image-name 是你给镜像起的名字。

  • 使用 docker run -d -p host-port:container-port your-image-name 运行容器。例如,docker run -d -p 8080:80 my-web-app

(3). 使用 Docker Compose

如果你有多个服务需要一起管理,可以使用 Docker Compose。

每个API服务都需要一个Dockerfile来定义其构建过程。假设每个服务的目录结构如下:

/your-project/
├── ApiGateway/
│   ├── publish-files/  # 直接放在这里或直接放在ApiGateway目录下
│   └── Dockerfile
├── AuthCenter/
│   ├── publish-files/  # 或者直接放在AuthCenter目录下
│   └── Dockerfile
├── TransferPlatform.Api/
│   ├── publish-files/  # 或者直接放在TransferPlatform.Api目录下
│   └── Dockerfile
└── User.Api/
    ├── publish-files/  # 或者直接放在User.Api目录下
    └── Dockerfile
└── docker-compose.yml  # 使用 Docker Compose
  • 创建一个 docker-compose.yml 文件来定义你的服务。

    services:
      apigateway:
        image: apigateway
        build:
          context: ./ApiGateway
          dockerfile: Dockerfile
        ports:
          - "5000:80"
      authcenter:
        image: authcenter
        build:
          context: ./AuthCenter
          dockerfile: Dockerfile
        ports:
          - "5008:80"
      transferplatformapi:
        image: transferplatformapi
        build:
          context: ./TransferPlatform.Api
          dockerfile: Dockerfile
        ports:
          - "8765:80"
      userapi:
        image: userapi
        build:
          context: ./User.Api
          dockerfile: Dockerfile
        ports:
          - "5071:80"
        
    
  • 在包含 docker-compose.yml 文件的目录中打开命令提示符或 PowerShell。

  • 使用 docker-compose up 启动所有定义的服务。添加 -d 参数可以在后台运行这些服务。

    # 启动所有服务
    docker-compose up 
    # 后台启动所有服务
    docker-compose up -d
    # 构建服务后启动所有服务
    docker-compose up --build
    # 后台构建服务后启动所有服务
    docker-compose up -d --build
    

(4). 使用 Docker 命令检查日志

使用以下命令查看特定容器的日志输出,以获取更多关于为什么接口不可达的信息:

# 查看正在运行的服务状态
docker-compose ps
# 查看特定容器的所有日志
docker logs <container_id_or_name>
# 实时跟踪日志
docker logs -f <container_id_or_name>
# 显示时间戳
docker logs --timestamps <container_id_or_name>
# 查看最后几行日志
docker logs -n 100 <container_id_or_name>

3.Docker Desktop 界面

  1. 状态栏图标:安装并启动后,你会在任务栏右侧的状态栏看到 Docker 图标。点击它可以查看 Docker Desktop 的状态,包括正在运行的容器数量、资源使用情况等。
  2. 仪表板:点击状态栏图标,选择“Dashboard”可以查看和管理所有正在运行的容器。你可以在这里停止、重启容器,或者查看容器的日志。
  3. 设置:通过状态栏图标进入设置页面,你可以配置 Docker Desktop 的各种选项,比如资源限制(CPU、内存)、代理设置、网络设置等。
  4. Kubernetes:如果你对 Kubernetes 感兴趣,可以在设置中启用 Kubernetes 支持,从而在本地测试和部署 Kubernetes 应用。

4.清理

1. 清理未运行的容器

你可以使用以下命令删除所有已经停止的容器:

docker container prune

如果你想强制删除所有不区分是否正在运行的容器(谨慎使用),可以加上-f参数:

docker container prune -f

2. 清理未使用的镜像

移除所有未被任何容器使用的镜像:

docker image prune

如果还想删除悬空镜像(即没有标签且不在任何容器中使用的镜像),可以添加 -a 参数:

docker image prune -a

同样地,使用 -f 可以跳过确认提示直接执行。

3. 清理未使用的卷

删除所有未被使用的本地卷:

docker volume prune

使用 -f 参数可避免确认提示:

docker volume prune -f

注意:小心使用此命令,因为某些卷可能用于备份或共享数据,即使它们当前没有被容器使用。

4. 清理未使用的网络

移除所有未被任何容器使用的网络:

docker network prune

加上 -f 参数可以自动确认删除操作:

docker network prune -f

5. 综合清理

如果你想要一次性清理所有类型的未使用资源,可以使用 docker system prune 命令:

docker system prune

为了也清理掉未使用的镜像(不仅仅是悬空镜像),请使用 -a 参数:

docker system prune -a

同样,-f 参数可用于跳过确认提示。