Docker 常用命令
Docker 是一种用于构建、打包和运行应用程序的容器化工具,以下是一些常用的 Docker 命令及其说明:
1. Docker 基础命令
docker version # 查看 Docker 的版本信息
docker info # 查看 Docker 系统信息
docker build -t <image_name> . #构建镜像
docker pull nginx # 从 Docker Hub 下载nginx镜像
docker images #列出本地的镜像
docker run -d nginx # 以后台模式运行 nginx
docker ps # 显示正在运行的容器
docker ps -a # 显示所有容器(包括已停止的)
docker stop <container_id> #停止运行中的容器
docker start <container_id> # 启动已经停止的容器
docker restart <container_id> #重启容器
docker rm <container_id>#删除一个容器
docker rmi <image_id> #删除镜像
docker logs <container_id> #查看容器日志
docker exec -it <container_id> /bin/bash # 进入容器的终端
docker run -it ubuntu bash # 运行 ubuntu 容器并进入交互模式
打包 .NET 应用为 Docker 镜像
打包 .NET 应用为 Docker 镜像需要创建一个 Dockerfile,定义构建和运行应用的步骤。
1. 创建一个 .NET 项目
用VS创建一个Net8.0的web api项目,勾选启用容器支持.
2. 创建 Dockerfile
在项目根目录创建一个名为 Dockerfile
的文件,这个是一个用在Linux下创建镜像的文件,要注意下Dockerfile是在解决方案文件夹还是项目文件夹,文件在不同的地方,下面COPY命令的路径会不一样,我这里是项目文件夹
内容如下:
# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080# 此阶段用于生成服务项目
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WebApplication10.csproj", "."]
RUN dotnet restore "./WebApplication10.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "./WebApplication10.csproj" -c $BUILD_CONFIGURATION -o /app/build# 此阶段用于发布要复制到最终阶段的服务项目
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WebApplication10.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication10.dll"]
3. 构建 Docker 镜像
使用以下命令构建 Docker 镜像:
docker build -t mywebapp .
4. 运行 Docker 容器
镜像构建完成后,使用以下命令运行容器:
docker run -d -p 8088:80 --name mywebapp_container mywebapp
--name
容器的名字。-d
表示以后台模式运行容器。-p 8088:80
表示将容器的 80 端口映射到主机的 8080 端口。
访问 http://localhost:8080
应该可以看到 .NET Core 应用运行的结果。