一文掌握 Docker 常用命令
<p> </p><p> 本篇文章,整理docker中常用的命令,方便大家学习和命令查询。最后分享一个.NET Core docker部署的示例。</p>
<p> 容器在整个应用程序生命周期工作流中提供以下优点:隔离性、可移植性、灵活性、可伸缩性和可控性。 最重要的优点是可在开发和运营之间提供隔离。</p>
<p><img src="https://img2020.cnblogs.com/blog/106337/202103/106337-20210327233418344-1665965522.png" alt="" loading="lazy"></p>
<p> </p>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="color: rgba(0, 0, 128, 1)"><strong><span style="line-height: 1.75; font-size: 18pt">Docker安装</span></strong></span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">Docker Hub</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">CentOS Docker 安装</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">ubuntu docker离线安装docker(.deb包方式)</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left">如何使用国内源安装 Docker 的方法</div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">Docker Compose linux安装</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left">Docker 安装或升级</div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left">安装 Docker Desktop for Mac、Docker Desktop for Windows</div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left">加速</div>
<div style="line-height: 1.75; margin-left: 58px; white-space: pre-wrap" align="left">docker国内镜像加速</div>
<div style="line-height: 1.75; margin-left: 58px; white-space: pre-wrap" align="left">.Net Core:Docker无法拉取mcr.microsoft.com相关镜像解决办法</div>
<div style="line-height: 1.75; margin-left: 58px; white-space: pre-wrap" align="left">windows版 docker 配置镜像加速</div>
<div style="line-height: 1.75; margin-left: 58px; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="color: rgba(0, 0, 128, 1); font-size: 18pt"><strong><span style="line-height: 1.75">Docker运行基本命令</span></strong></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker [--helper]:显示所有docker命令</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker --help:显示指定命令的帮助文档</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker info:显示docker系统信息</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker version:显示docker版本信息</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker stats:显示运行的容器占用的容器资源(eg:容器名、cpu、内存、io等)(Ctrl+C退出)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">systemctl status docker:显示docker的运行状态</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">systemctl start docker:启动docker</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">systemctl stop docker:关闭docker</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">systemctl restart docker:重启docker</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="color: rgba(0, 0, 128, 1); font-size: 18pt"><strong><span style="line-height: 1.75">Repository 镜像仓库操作</span></strong></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">Docker Hub</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker login -u 用户名 -p 密码 [仓库地址]<span style="line-height: 1.75">:</span>登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker logout:退出仓库</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker search :从Docker Hub查找镜像。(返回的name,可以执行docker pull name拉去镜像)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt"><span style="font-size: 10.5pt"><span style="font-size: 10.5pt"><img src="https://img2020.cnblogs.com/blog/106337/202111/106337-20211127124341490-806419278.png" alt="" loading="lazy"></span></span></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker pull :拉取镜像</span></div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">Docker中latest标签引发的困惑</span></div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">关于docker latest tag (docker image有一个tag叫做latest,latest通过最近一次没有指定版本的build或tag来生成)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker tag : /[镜像仓库]/[:tag]: 标记本地镜像,将其归入某一仓库。</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker push :推送镜像到Docker Hub</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="line-height: 1.75"><span style="font-size: 13.5pt">#、示例:推送到阿里云images仓库</span></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">sudo docker login --username=*** registry.cn-shenzhen.aliyuncs.com</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">sudo docker tag registry.cn-shenzhen.aliyuncs.com/mk-application/mk.admin:[镜像版本号]</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">sudo docker push registry.cn-shenzhen.aliyuncs.com/mk-application/mk.admin:[镜像版本号]</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">(registry.cn-shenzhen.aliyuncs.com/mk-application/mk.admin 为images仓库地址)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="color: rgba(0, 0, 128, 1); font-size: 18pt"><strong><span style="line-height: 1.75">images 操作</span></strong></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker tag 账户名/REPOSITORY:TAG(仓库:标签):给镜像重命名和打新的tag</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker images :显示所有镜像文件</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">常用OPTIONS说明:</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-a :列出本地所有的镜像</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-f :显示满足条件的镜像;</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-q :只显示镜像ID</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="line-height: 1.75"><span style="font-size: 10.5pt">docker inspect : 获取镜像的元数据。</span></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker build . :构建一个镜像。 (注意:最后空格后面有一个.)。</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">常用OPTIONS说明:</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-f :指定要使用的Dockerfile路径;(默认当前目录的Dockerfile)</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-m :设置内存最大值;</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker build 后面的 . ,实际上是镜像构建上下文。</span></div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">参考:docker 镜像构建上下文理解</span></div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">想查看docker构建时上下文的临时文件,在windows中可以查看目录:C:\ProgramData\Docker\tmp</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker rmi [-f] :删除指定镜像(-f :强制删除)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker rmi $(docker images -q):删除所有镜像</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker commit ]:从容器创建一个新的镜像。</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker images | grep "redis" :查询所有包含redis的镜像</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker run -it --entrypoint sh <image name>:<span style="color: rgba(255, 0, 0, 1)">进入镜像</span>,可以查看里面有些什么文件。eg:ls</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker history :查看镜像构建历史</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">示例:</span></div>
<div style="line-height: normal; float: none" align="left"><img src="https://img2020.cnblogs.com/blog/106337/202004/106337-20200414222700768-998213447.png" alt="clipboard" width="1061" height="100" title="clipboard" border="0" style="border: 0 currentColor; border-image: none; display: inline; max-width: none; background-image: none" data-media-type="image" data-attr-org-src-id="DAF362B8C84E406DBBC229719979AA71"></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">注意:REPOSITORY 列,表示:镜像名称,用于标识镜像</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="line-height: 1.75"><span style="font-size: 13.5pt">#、镜像归档</span></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">最好用name来save。不然可能出现load的时候tags丢失。docker-compose 的images是根据tags来使用镜像的,就找不到镜像了</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker save完的镜像 load没有标签的解决方法</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> eg:docker save -o node.tar prom/node-exporter:latest</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">将指定镜像保存成 tar 归档文件</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker save -o /root/**.tar </span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker save >/root/**.tar</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">导入使用 docker save 命令导出的镜像</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker load -i /root/**.tar</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker load</root/**.tar</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">从归档文件中创建镜像</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker import /root/**.tar :从镜像归档文件创建指定命名的镜像</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="color: rgba(0, 0, 128, 1); font-size: 18pt"><strong><span style="line-height: 1.75">container 操作</span></strong></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker ps:查看当前运行的容器</span></div>
<div style="line-height: 1.6666; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker ps </span><span style="line-height: 1.6666"><span style="font-size: 9pt">[</span></span><span style="font-size: 9pt"><span style="line-height: 1.6666">OPTIONS</span></span><span style="line-height: 1.6666"><span style="font-size: 9pt">]</span></span></div>
<div style="line-height: 1.6666; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">常用OPTIONS说明:</span></div>
<div style="line-height: 1.6666; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-a:显示所有的容器</span></div>
<div style="line-height: 1.6666; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">--filter,-f:根据条件过滤显示的内容(eg:-f name=imc.user,过滤容器名字为"imc.user")</span></div>
<div style="line-height: 1.6666; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-n:列出最近创建的n个容器</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="line-height: 1.75"><span style="font-size: 10.5pt">docker inspect : 获取容器的元数据。(eg:容器ip地址)</span></span></div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left"><span style="line-height: 1.75"><span style="font-size: 10.5pt">如查到 /var/lib/docker/containers/a057a6bb84d0f8f118c04b4a1f078fa54d5e17a48e9aeea759e0bd7284781469 (/var/lib/docker/containers/<容器id>)日志文件占磁盘大,却不知道是那个容器,</span></span></div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left"><span style="line-height: 1.75"><span style="font-size: 10.5pt">就可以使用 docker inspect container_id 来确认</span></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="line-height: 1.75"><span style="font-size: 10.5pt">docker top : 查容器中进程 在宿主机上映射后的进程信息</span></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker rename :重命名容器名 </span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker run :创建一个新的容器并运行</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">常用OPTIONS说明:</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-d: 后台运行容器,并返回容器ID;</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-p(小写): 指定端口映射,格式为:主机(宿主)端口:容器端口</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-name: 为容器指定一个名称;</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-m :设置容器使用内存最大值;</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">--volume , -v: 绑定一个卷</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">--restart=always:总是重启容器(eg:重启计算机后自动启动应用)。(Docker容器的重启策略及docker run的--restart选项详解)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt"> docker run的--rm选项详解</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker update :更新容器配置</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">常用options说明</span></div>
<div style="line-height: 1.75; text-indent: 56px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-m:内存限制</span></div>
<div style="line-height: 1.75; text-indent: 56px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">--restart=no|always|on-failure:重启策略</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker stop :停止运行指定容器</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker stop $(docker ps -q -f status=running):停掉所有正在运行的容器</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker start :开启指定容器</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker restart :重启指定容器</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker rm [-f] :删除指定容器,加-f参数强制删除</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker rm $(docker ps -a -q):删除所有停止的容器</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="line-height: 1.75"><span style="font-size: 13.5pt">#、查看容器内部信息</span></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker exec -it bash:<span style="color: rgba(255, 0, 0, 1)">进入容器</span>,在运行的容器中执行bash命令(一些docker没有安装bash,可以改为sh),比如执行ls命令列出目录或者查看文件。(退出容器:Ctrl + D 或 exit)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker top :查看容器中运行的进程信息,支持 ps 命令参数。(能否用exec命令代替?不能,因为容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker pause :暂停容器中所有的进程</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker unpause :恢复容器中所有的进程</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker diff :检查容器里文件结构的更改。(相对原始镜像的文件结构)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="line-height: 1.75"><span style="font-size: 13.5pt">#、查看容器运行日志</span></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker启动后默认日志位置:/var/lib/docker/containers/容器ID/容器ID-json.log</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker logs :查看指定容器Id的的运行日志</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">OPTIONS说明:</span></div>
<div style="line-height: 1.75; margin-left: 56px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-f : 跟踪日志输出</span></div>
<div style="line-height: 1.75; margin-left: 56px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">--since :显示某个开始时间的所有日志</span></div>
<div style="line-height: 1.75; margin-left: 56px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-t : 显示时间戳</span></div>
<div style="line-height: 1.75; margin-left: 56px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">--tail :仅列出最新N条容器日志</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">示例:</span></div>
<div style="line-height: 1.75; margin-left: 56px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">查看容器mynginx从2016年7月1日后的最新10条日志。</span></div>
<div style="line-height: 1.75; margin-left: 56px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker logs --since="2016-07-01" --tail=10 mynginx</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 18px">#、容器与主机之间的数据拷贝</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">对于没有运行的容器,或者运行失败的容器,可以通过cp命令把文件拷贝到本机,再查问题</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker cp:用于容器与主机之间的数据拷贝。</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker cp :src_path dest_path</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker cp src_path :dest_path</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="color: rgba(0, 0, 128, 1); font-size: 18pt"><strong><span style="line-height: 1.75">volume(数据卷)</span></strong></span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">Docker Image可以理解成多个只读文件叠加而成,因此Docker Image是只读的。当我们将其运行起来,就相当于在只读的Image外包裹了一层读写层变成了容器。当你删除容器之后,使用这个镜像重新创建一个容器,此时的镜像的只读层还和原来的一样,但是你在读写层的修改全部都会丢失。</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker使用volume实现数据的持久化,实现容器和容器之间,容器和host之间共享数据。volume的大小不会被加到容器本身上。</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">命令</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker volume create --name :创建命名的volume,创建目录默认:/var/lib/docker/volumes//_data/</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker volume ls:查看当前所有volume</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker volume inspect :查看volume详细信息</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker volume rm :删除volume(没有被容器使用的volume才能被删除)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker volume rm $(docker volume ls -qf dangling=true):删除所有volume</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker run .... -v 宿主目录\文件:容器目录\文件 :建立目录或文件的映射</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker run .... -v :容器目录</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker run .... -v 容器目录 :[自管理卷模式]docker自动创建匿名的volume。默认目录/var/lib/docker/volumes//_data。(自管理卷的volume删除方式:删除容器时,加 -v)</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">-v 参数的注意事项:</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">#、host机器的目录路径必须为全路径(准确的说需要以/或~/开始的路径)</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">#、如果host机器上的目录不存在,docker会自动创建该目录</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">#、如果container中的目录不存在,docker会自动创建该目录</span></div>
<div style="line-height: 1.75; margin-left: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">#、如果container中的目录已经有内容,那么docker会使用host上的目录将其覆盖掉</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">#、linux下 $PWD 是一个系统环境变量,指代当前目录环境</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">#、windows下的路径如:D:\PycharmProjects 要写为 /d/PycharmProjects</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">docker desktop 挂在文件时:exception Filesharing has been cancelled</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">Docker volume 挂载时文件或文件夹不存在</div>
<div style="line-height: 1.75" align="left">
<p style="margin-left: 30px">文件夹挂载<br> #、允许不存在的文件夹或者存在的空文件夹挂载进container, container中对应的文件夹将被清空<br> #、非空文件夹挂载进container将会覆盖container中原有文件夹<br>文件挂载<br> #、禁止将不存在的文件挂载进container中已经存在的文件上<br> #、存在的文件挂载进container中将会覆盖container中对应的文件, 若文件不存在则新建</p>
</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="color: rgba(0, 0, 128, 1); font-size: 18pt"><strong><span style="line-height: 1.75">迁移操作</span></strong></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">docker镜像容器目录迁移</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">win10上修改docker的镜像文件存储位置</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">镜像迁移</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">Docker容器中的备份、恢复、迁移、导入、导出</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">Docker迁移与备份</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">Docker中Image、Container与Volume的迁移</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="color: rgba(0, 0, 128, 1); font-size: 18pt"><strong><span style="line-height: 1.75">示例:docker运行一个 .Net Core 程序</span></strong></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">目录规划:</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">------container // 容器根目录</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">--------mk.admin // 容器名</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">----------Logs // 用于映射日志的目录</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">----------Config // 用于映射配置的目录</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">Visual Studio 中的容器工具</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: large">.NET Core端口设置</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="color: rgba(0, 0, 0, 1)">方式一:</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> 代码中绑定端口,比如新建host.json文件,如下:</div>
<p> {<br> "urls": "http://*:44380"<br> }</p>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> <img src="https://img2020.cnblogs.com/blog/106337/202004/106337-20200415001915542-690765668.png" alt="image" width="816" height="445" title="image" border="0" style="display: inline; background-image: none"></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">方式二、</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> 在Dockerfile文件中,使用Env设置环境变量</div>
<p><img src="https://img2020.cnblogs.com/blog/106337/202004/106337-20200415234340217-915135692.png" alt="clipboard" width="571" height="157" title="clipboard" border="0" style="display: inline; background-image: none"></p>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">方式三、</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> docker run …… -e "ASPNETCORE_URLS=http://+:44380"</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: x-large">开始进行.NET Core Docker部署:</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt"><strong>第一步:发布.net core应用程序。</strong></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">在要发布的项目目录执行如下命令:(或使用vs工具执行发布)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">dotnet publish -f netcoreapp3.1 -o **\publish\mk.admin</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt"><strong>第二步:创建 Dockerfile 定制镜像</strong></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">找 dotnet core 需要的运行时基础镜像:</span><span style="font-size: 10.5pt">docker image:ASP.NET Core Runtime </span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">将Dockerfile放在发布目录下(**\publish\mk.admin)</span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">内容:</span></div>
<pre class="brush: bash;html-script: false;quick-code: true;smart-tabs: true;auto-links: false;toolbar: true;gutter; false;light: false;ruler: false;pad-line-numbers: 2;collapse: false;tab-size: 4;first-line: 1;">#第一个指令,FROM 指定基础构建镜像
#基于 `microsoft/aspnet:3.1` 来构建我们的镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中
COPY . /publish
#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
WORKDIR /publish
#使用`dotnet ***.dll`来运行应用程序
ENTRYPOINT ["dotnet", "Mk.Admin.HttpApi.Host.dll"]</pre>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt"><strong>第三步:创建镜像、容器</strong></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">在发布目录 **\publish\mk.admin 目录下,执行命令:<br></span></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">
<pre class="brush: bash;html-script: false;quick-code: true;smart-tabs: true;auto-links: false;toolbar: false;gutter; true;light: false;ruler: false;pad-line-numbers: 2;collapse: false;tab-size: 4;first-line: 1;">#、构建镜像
docker build -t img.mk.admin .
#、创建并运行容器
docker run --name mk.admin -p 44380:44380 -v /usr/application/Mk.Admin/Logs:/publish/Logs -d --restart=always img.mk.admin
(数据卷:将宿主机的/usr/application/Mk.Admin/Logs目录映射到容器的/publish/Logs目录,这样就可以在宿主机上查看和删除日志文件)
#、查看运行中的容器
docker ps
</pre>
<span style="font-size: 10.5pt">#、输入地址,查看站点运行状态</span></div>
<div style="line-height: normal; float: none" align="left"><img src="https://img2020.cnblogs.com/blog/106337/202004/106337-20200414224220217-819084247.png" alt=""></div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">另外: 《传统.NET Framework容器化》,使用docker和Windows容器</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">容器的内存相关</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">优化 ASP.NET Core Docker 镜像的大小</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">.NET 6 的 docker 镜像可以有多小</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">Docker查看应用的实际内存</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left">其他设置</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">限制</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 60px" align="left">通过docker-compose对docker容器资源进行限制(cpu、内存)</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 60px" align="left">Docker 容器达到 Memory Limit 后的行为(容器被Kill并重启)</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">docker网络模式(host,bridge,none,container,overlay)</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">如何优雅的关闭容器</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">容器的退出方式和差异</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 30px" align="left">容器内操作命令报权限问题;容器挂在目录报权限问题等</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 60px" align="left">在docker容器中执行apt install安装报错(13: Permission denied)</div>
<div style="line-height: 1.75; white-space: pre-wrap; margin-left: 60px" align="left">docker 命令报异常permission denied的解决方案</div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">推荐阅读:</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">Iaas、Saas、Paas服务模式</span> </div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left">Docker镜像构建:技术深度解析与实践指南</div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left">.dockerignore 文件的作用</div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">Docker可视化管理工具:Portainer</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">优化您的部署:Docker 镜像最佳实践</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">docker volume</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">Docker Dockerfile</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">dockerfile中ENTRYPOINT与CMD的结合</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">清理</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left"><span style="text-indent: 0; font-style: italic">docker system prune 清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left"><span style="text-indent: 0; font-style: italic">docker system prune -a 清理得更加彻底,可以将没有容器使用Docker镜像都删掉。</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">Docker磁盘占用与清理问题</span> (未使用、none、占用过高等)</div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left">Docker清理Overlay2占用磁盘空间的问题</div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left">docker system df -v :列出所有容器、镜像、本地卷的磁盘使用情况。(如容器运行久了,有时log会占用很大,可以用此命令确认是哪个容器)</div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">网络</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">docker容器网络</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left">Docker 容器连接<span style="font-style: italic">((1)映射到主机localhost端口。(2)连接到同一个network)</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left">Docker 容器抓包</div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left">容器互联互通<span style="font-style: italic">(network connect)</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"><span style="font-size: 10.5pt">Docker Compose</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">Docker Compose常用命令<br></span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">Docker 与 Docker Compose版本对应关系</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">docker-compose yml文件详解</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">在docker compose中更改文件夹名称前缀做为容器名称</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">docker-compose 多个-f 参数以及config命令(多个配置文件)</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 30px" align="left"><span style="font-size: 10.5pt">两种方法在docker-compose.yml中使用参数</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 60px" align="left"><span style="font-size: 10.5pt">第一种:在.env文件中定义它</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap; margin-left: 60px" align="left"><span style="font-size: 10.5pt">第二种:运行docker-compose命令时,以命令行参数发送.例如 docker-compose up -d --build-arg key=val...</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 30px" align="left"><span style="font-size: 10.5pt">docker compose 服务启动顺序控制</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 30px" align="left"><span style="font-size: 10.5pt">docker compose 启动部分服务</span></div>
<div style="line-height: 1.75; text-indent: 28px; margin-left: 30px" align="left"><span style="font-size: 10.5pt">ASP.NET CORE在docker中的健康检查(healthcheck)</span></div>
<div style="line-height: 1.75; text-indent: 28px" align="left"><span style="font-size: 10.5pt">都知道不建议在Docker中运行MySQL,你知道为什么吗?</span></div>
<div style="line-height: 1.75; text-indent: 28px" align="left"><span style="font-size: 10.5pt">Abp Dockerfile</span></div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"> </div>
<div style="line-height: 1.75; text-indent: 28px; white-space: pre-wrap" align="left"> </div>
</div>
<div id="MySignature" role="contentinfo">
<br>
<div>
<p id="PSignature" style="border-top: #e0e0e0 1px dashed; border-right: #e0e0e0 1px dashed; border-bottom: #e0e0e0 1px dashed; border-left: #e0e0e0 1px dashed; padding-top: 5px; padding-right: 10px; padding-bottom: 10px; padding-left: 150px; background: url("https://images.cnblogs.com/cnblogs_com/heyuquan/395414/r_IMG_sign.jpg") #e5f1f4 no-repeat 1% 50%; font-family: 微软雅黑; font-size: 11px">
<br>
作者:<span style="font-weight: bold; font-size: large">滴答的雨</span>
<br>
出处:http://www.cnblogs.com/heyuquan/
<br>
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
<br>
<br>
<span style="font-size: large; color: #F00">欢迎园友讨论下自己的见解,及向我推荐更好的资料。
<br>
本文如对您有帮助,还请多帮 <b>【推荐】</b> 下此文。
<br>
谢谢!!! (*^_^*)</span><br>
<span style="font-size: 150%; font-weight: bold">技术群:<img border="0" src="http://pub.idqqimg.com/wpa/images/group.png" alt="广西IT技术交流" title="广西IT技术交流">(339322839广西IT技术交流),欢迎你的加入</span>
</p>
</div><br><br>
来源:https://www.cnblogs.com/heyuquan/p/docker-cmd-and-dotnetcore.html
頁:
[1]