Docker 学习
1. Pull a image
$> docker pull mcr.microsoft.com/powershell
Using default tag: latest
latest: Pulling from powershell
7b1a6ab2e44d: Pull complete
f2664bfe00f4: Pull complete
6c32701b9784: Pull complete
990872d4a1e1: Pull complete
Digest: sha256:c07466c498fb7e23623802f527c3d8dd2c7dffa1ac980a8f147c7756dc574703
Status: Downloaded newer image for mcr.microsoft.com/powershell:latest
mcr.microsoft.com/powershell:latest
2. List image
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mcr.microsoft.com/powershell latest aed5a594c80f 5 weeks ago 338MB
3. List container
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5456b6ba0849 mcr.microsoft.com/windows/servercore/iis "C:\\ServiceMonitor.e…" 6 minutes ago Up 6 minutes 0.0.0.0:8080->80/tcp serene_hofstadter
8054144de73f todoapi:dev "C:\\remote_debugger\\…" 44 hours ago Up 44 hours 0.0.0.0:60921->80/tcp, 0.0.0.0:60920->443/tcp TodoApi
4. Run
docker run -it -p 8080:80 mcr.microsoft.com/windows/servercore/iis
Service 'w3svc' has been stopped
Service 'w3svc' started
CTRL signal received. The process will now terminate.
Stopping service 'w3svc'
Service 'w3svc' has been stopped
PS C:\WINDOWS\system32> docker run -d -p 8080:80 --name mysite mcr.microsoft.com/windows/servercore/iis
244d4a7a2b433fd407616805bf50b23de3e2dc7d4aa2d91b1fb39bc648e58fb9
docker container run -it --name ps mcr.microsoft.com/powershell pwsh.exe
PowerShell 7.2.1
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
PS C:\> pwd
Path
----
C:\
PS C:\> ls
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r-- 12/16/2021 4:56 AM Program Files
d---- 5/5/2021 5:30 AM Program Files (x86)
d-r-- 5/5/2021 5:41 AM Users
d---- 12/16/2021 4:57 AM Windows
-a--- 10/8/2019 4:32 AM 5510 License.txt
6. Stop/start container
PS C:\WINDOWS\system32> docker container stop web
web
PS C:\WINDOWS\system32> docker container cp c:\temp/index.html web:c:\inetpub\wwwroot\index.html
PS C:\WINDOWS\system32> docker container start web
10. docker Windows /Linux container切换
此版本的docker可同时运行Windows container和Linux container切换命令
$>"C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon
C:\Users\Yiming>docker version
Client:
Cloud integration: v1.0.22
Version: 20.10.12
API version: 1.41
Go version: go1.16.12
Git commit: e91ed57
Built: Mon Dec 13 11:44:07 2021
OS/Arch: windows/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.24)
Go version: go1.16.12
Git commit: 459d0df
Built: Mon Dec 13 11:42:13 2021
OS/Arch: windows/amd64
Experimental: false
$>"C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon
C:\Users\Yiming>docker version
Client:
Cloud integration: v1.0.22
Version: 20.10.12
API version: 1.41
Go version: go1.16.12
Git commit: e91ed57
Built: Mon Dec 13 11:44:07 2021
OS/Arch: windows/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.16.12
Git commit: 459d0df
Built: Mon Dec 13 11:43:56 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.12
GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc:
Version: 1.0.2
GitCommit: v1.0.2-0-g52b36a2
docker-init:
Version: 0.19.0
GitCommit: de40ad0
========== 容器必备项检查 ==========
正在验证是否安装了 Docker Desktop...
安装了 Docker Desktop。
========== 正在验证 Docker Desktop 是否正在运行... ==========
正在验证 Docker Desktop 是否正在运行...
Docker Desktop 正在运行。
========== 正在验证 Docker OS ==========
正在验证 Docker Desktop 的操作系统模式是否匹配项目的目标操作系统...
正在将 Docker 切换为使用 Windows 容器...
C:\Program Files\Docker\Docker\DockerCli.exe -SwitchDaemon
Docker 正在使用 Windows 容器。
Docker Desktop 的操作系统模式与项目的目标操作系统匹配。
========== 拉取所需的映像 ==========
正在检查缺少的 Docker 映像...
正在拉取 Docker 映像。要取消此下载,请关闭命令提示符窗口。
docker pull mcr.microsoft.com/dotnet/aspnet:6.0
Docker 命令失败,退出代码为 1。
Docker pull 失败。
Docker 映像准备就绪。
========== 正在为 TodoApi 预热容器 ==========
正在启动容器...
docker build -f "C:\Users\Yiming\source\repos\TodoApi\Dockerfile" --force-rm -t todoapi:dev --target base --label "com.microsoft.created-by=visual-studio" --label "com.microsoft.visual-studio.project-name=TodoApi" "C:\Users\Yiming\source\repos\TodoApi"
Sending build context to Docker daemon 16.38kB
Step 1/6 : FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
6.0: Pulling from dotnet/aspnet
9fe77f388d9b: Pulling fs layer
a229c8bfbb45: Pulling fs layer
5900e8be836c: Pulling fs layer
c5842bccb0c6: Pulling fs layer
fbec070f0389: Pulling fs layer
ecae3d2ce50e: Pulling fs layer
697315adfce9: Pulling fs layer
ba4b29471029: Pulling fs layer
c5842bccb0c6: Waiting
fbec070f0389: Waiting
ecae3d2ce50e: Waiting
697315adfce9: Waiting
ba4b29471029: Waiting
5900e8be836c: Verifying Checksum
5900e8be836c: Download complete
a229c8bfbb45: Verifying Checksum
a229c8bfbb45: Download complete
fbec070f0389: Verifying Checksum
fbec070f0389: Download complete
c5842bccb0c6: Verifying Checksum
c5842bccb0c6: Download complete
697315adfce9: Verifying Checksum
697315adfce9: Download complete
ba4b29471029: Verifying Checksum
ba4b29471029: Download complete
9fe77f388d9b: Verifying Checksum
9fe77f388d9b: Download complete
9fe77f388d9b: Pull complete
a229c8bfbb45: Pull complete
5900e8be836c: Pull complete
c5842bccb0c6: Pull complete
fbec070f0389: Pull complete
ecae3d2ce50e: Verifying Checksum
ecae3d2ce50e: Download complete
ecae3d2ce50e: Pull complete
697315adfce9: Pull complete
ba4b29471029: Pull complete
Digest: sha256:bb2428448b9bbc46171905a7a3e8dbdb696a5583e8ba10307f15be4fea8483e9
Status: Downloaded newer image for mcr.microsoft.com/dotnet/aspnet:6.0
---> 52ae8008aff2
Step 2/6 : WORKDIR /app
---> Running in 4c20c1c8be01
Removing intermediate container 4c20c1c8be01
---> 07ba13dabace
Step 3/6 : EXPOSE 80
---> Running in 099fe03bf404
Removing intermediate container 099fe03bf404
---> 495abd558438
Step 4/6 : EXPOSE 443
---> Running in 5759d30dad58
Removing intermediate container 5759d30dad58
---> 88a53c466218
Step 5/6 : LABEL com.microsoft.created-by=visual-studio
---> Running in 80bd550cc68f
Removing intermediate container 80bd550cc68f
---> 0c6279c8e9c2
Step 6/6 : LABEL com.microsoft.visual-studio.project-name=TodoApi
---> Running in b42666359bcb
Removing intermediate container b42666359bcb
---> 06ed0fad1c4a
Successfully built 06ed0fad1c4a
Successfully tagged todoapi:dev
docker run -dt -v "C:\Users\Yiming\onecoremsvsmon\17.0.1222.0:C:\remote_debugger:ro" -v "C:\Users\Yiming\AppData\Roaming\Microsoft\UserSecrets:C:\Users\ContainerUser\AppData\Roaming\Microsoft\UserSecrets:ro" -v "C:\Users\Yiming\AppData\Roaming\ASP.NET\Https:C:\Users\ContainerUser\AppData\Roaming\ASP.NET\Https:ro" -v "C:\Users\Yiming\source\repos\TodoApi:C:\app" -v "C:\Users\Yiming\source\repos\TodoApi:c:\src" -v "C:\Users\Yiming\.nuget\packages\:c:\.nuget\fallbackpackages3" -v "C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages:c:\.nuget\fallbackpackages" -v "C:\Program Files (x86)\Microsoft\Xamarin\NuGet\:c:\.nuget\fallbackpackages2" -e "ASPNETCORE_LOGGING__CONSOLE__DISABLECOLORS=true" -e "ASPNETCORE_ENVIRONMENT=Development" -e "ASPNETCORE_URLS=https://+:443;http://+:80" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "NUGET_PACKAGES=c:\.nuget\fallbackpackages3" -e "NUGET_FALLBACK_PACKAGES=c:\.nuget\fallbackpackages;c:\.nuget\fallbackpackages2;c:\.nuget\fallbackpackages3" -P --name TodoApi --entrypoint C:\remote_debugger\x64\msvsmon.exe todoapi:dev /noauth /anyuser /silent /nostatus /noclrwarn /nosecuritywarn /nofirewallwarn /nowowwarn /fallbackloadremotemanagedpdbs /timeout:2147483646 /LogDebuggeeOutputToStdOut
8054144de73f355eaacd6712bbdce137a5ea0ecee14456a4a3f25c10d2734b6d
已成功启动容器。
========== 已完成 ==========
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["TodoApi.csproj", "."]
RUN dotnet restore "./TodoApi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "TodoApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "TodoApi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "TodoApi.dll"]
PS C:\WINDOWS\system32> docker pull mcr.microsoft.com/windows/servercore/iis
Using default tag: latest
latest: Pulling from windows/servercore/iis
18ae6bebe21d: Pull complete
835e32b39436: Pull complete
257ed9d41b5e: Pull complete
ab1ac4494b0b: Pull complete
282b1b0294f1: Pull complete
Digest: sha256:21a28f28f7aa189897387dddd68c1a822180a3899ec1e6622c083cc8c03d1710
Status: Downloaded newer image for mcr.microsoft.com/windows/servercore/iis:latest
mcr.microsoft.com/windows/servercore/iis:latest