开启虚拟化Hyper V Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -ALL 镜像是只读的。容器是读写 容器=镜像+读写层 docker hub 一个docker的社区 创建一个容器: docker container run nginx nginx是镜像名字,这个容器里面是'nginx' docker container run ubuntu 查看我们的容器里的镜像 docker container ls (注意:这个只是罗列出已经开启的镜像,并不会罗列所有的镜像) docker container ps -a (可以罗列所有的) CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 17f03113bf98 nginx:latest "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp wonderful_aryabhata 0428ab45c62f ubuntu:latest "bash" 7 minutes ago Up 7 minutes sweet_kilby 要暂停某个镜像: docker container stop 17 (stop后面可以加ID,也可以加名字,虽然ID有点长,但是一般加前两个数字就够了) 启动某个镜像: docker container run nginx:latest 删除镜像 docker container rm 17 显示所有的ID docker container ps -aq 暂停所有的镜像: docker container stop $(docker container ps -aq) 删除所有容器: docker container rm $(docker container ps -aq) 注意:正在运行的container 直接rm 是会报错的。 PS C:Windowssystem32> docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 55b0ae6402bb nginx "/docker-entrypoint.…" 42 seconds ago Up 41 seconds 80/tcp wonderful_gates PS C:Windowssystem32> docker container rm 55 Error response from daemon: You cannot remove a running container 55b0ae6402bb0e63b3c94ca6d18b7f4b72aa6cbdc2ebec46e9c028df6256ee43. Stop the container before attempting removal or force remove 但是也是可以强制删除: docker container rm 55 -f 先删除所有的容器: docker container rm -f $(docker container ls -aq) 给容器绑定端口:前台运行模式(attached)(当把powershell 关闭了,在浏览器中就链接不到服务了) docker container run -p 90:80 nginx 90是host 80是container http://127.0.0.1:90/ 给容器绑定端口:后台运行模式(当把powershell 关闭了,在浏览器中刷新还可以链接到服务) docker container run -d -p 90:80 nginx http://127.0.0.1:90/ 把后台模式改为前台模式:一个显著的特点就是(前台模式刷新会有日志.后台模式刷新没有日志) docker attach 2af(ID) 映射一个detached模式的端口 docker container run -d -p 90:80 nginx 94a29f3b8a49a74e5ce6759cacb96b7f345f1e6b47a0b5f20c1a0a0225ee59f4 但是是不显示日志: 那么怎么才能在detached模式下显示日志呢: docker container logs -f 94a 这样我们再去浏览器刷新 后台就有logs 记录了 ctrl+c 就推出logs的跟踪 docker的交互模式: 使用Ubuntu镜像并开启交互模式 docker container run -it ubuntu sh -it代表启用交互模式,sh代表可以使用Shell脚本。当你输入玩这个脚本后,Docker就会进入到交互模式。可以使用ls来得到目录下的文件,也可以使用hostname来查看计算机名称。 这时候你想退出容器和交互模式可以输入exit命令。需要重点说明的是,随着命令退出后,容器也会跟着退出,变成Exited模式。 然后再用detached模式创建一个nginx镜像的容器 开启一个detached模式的端口: PS C:Windowssystem32> docker container run -d -p 90:80 nginx 93cd8214cd9d9d62146dd37fcab94112482fa4c561c245f024d312e4909bc7d8 exec是执行的意思,-it交互模式 , sh交互的方式,用shell脚本进行交互 PS C:Windowssystem32> docker exec -it 93cd sh # ls bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var # hostname 93cd8214cd9d # pull from registry(https://hub.docker.com/) dockerfile online 自有文件导入 查看所有的镜像: docker image ls 查看某个镜像的信息: docker image inspect baf 删除镜像: docker image rm baf5 导出自己的镜像: PS C:Windowssystem32> docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE webdockerpublish latest 4846890ab9f1 17 minutes ago 212MB webdockerpublish dev 58df3b85377a 38 minutes ago 208MB ubuntu latest 1318b700e415 2 weeks ago 72.8MB nginx latest 08b152afcfae 3 weeks ago 133MB quay.io/presslabs/wordpress-operator latest 1eb192deaf67 17 months ago 45.5MB PS C:Windowssystem32> d: PS D:> mkdir test 目录: D: Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2021/8/13 7:38 test PS D:> cd test PS D: est> docker image save webdockerpublish:dev -o zkbwebdockerpublish.image PS D: est> 导入镜像:load -i docker image load -i D: estzkbwebdockerpublish.image https://registry.hub.docker.com/prozkb 发布遇到错误。 运行 docker.exe tag 命令失败。 Current context "desktop-linux" is not found on the file system, please check your config file at C:Usersob_zhuAppDataLocalTempad792db87eaa4bda9dd75538ddc37ca3config.json 已将诊断日志写入以下位置: “C:Usersob_zhuAppDataLocalTemp mpF90F.tmp”。 <myrepo>.azurecr.io <prozkbrepo>.azurecr.io prozkbrepo.azurecr.io
1:进入发布文件目录 cd D:dockerpublish 2: PS D:dockerpublish> ls 目录: D:dockerpublish Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2021/8/15 9:46 wwwroot -a---- 2021/8/15 9:30 162 appsettings.Development.json -a---- 2021/8/15 9:30 192 appsettings.json -a---- 2021/8/15 9:35 133 Dockerfile -a---- 2021/8/15 9:46 106806 dockertest.deps.json -a---- 2021/8/15 9:45 8704 dockertest.dll -a---- 2021/8/15 9:45 174592 dockertest.exe -a---- 2021/8/15 9:45 19928 dockertest.pdb -a---- 2021/8/15 9:46 311 dockertest.runtimeconfig.json -a---- 2021/8/15 9:46 36352 dockertest.Views.dll -a---- 2021/8/15 9:46 21388 dockertest.Views.pdb -a---- 2021/8/15 9:46 554 web.config 3:开始build PS D:dockerpublish> docker build -t mydockerdemo . 4:docker images REPOSITORY TAG IMAGE ID CREATED SIZE mydockerdemo latest fee3c515c175 About a minute ago 212MB 5: docker run -d mydockerdemo -p 9999:80 mydockerdemo 791a32b801af058741e1cc986b6996a8f5c9320fbb82ff8c6bcf2b5475672ff5 -d:后台模式运行; --name:给运行中的容器指定一个名字; -p:指定端口映射, 主机的端口9999映射到容器的端80,因为在容器里面我们的项目是以80 端口启动的; 最后一个参数是上一步生成的镜像名称, 即根据此镜像启动一个容器实例。 6:docker container run mydockerdemo It was not possible to find any installed .NET Core SDKs Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from: https://aka.ms/dotnet-download