(给DotNet加星标,提升.Net技能)

转自:滴答的雨cnblogs.com/heyuquan/p/docker-cmd-and-dotnetcore.html

前言

本篇文章,整理docker中常用的命令,方便大家学习和命令查询。

最后分享一个.NET Core docker部署的示例。

Docker安装

  • CentOS Docker 安装

  • 安装 Docker Desktop for Mac、Docker Desktop for Windows

  • 设置docker仓库镜像加速器

  • 迁移Docker默认存储目录

Docker运行基本命令

docker [--helper]:显示所有docker命令

docker [command] --help:显示指定命令的帮助文档

docker info:显示docker系统信息

docker version:显示docker版本信息

docker stats:显示运行的容器占用的容器资源(eg:容器名、cpu、内存、io等)(Ctrl+C退出)

systemctl status docker:显示docker的运行状态

systemctl start docker:启动docker

systemctl stop docker:关闭docker

systemctl restart docker:重启docker

Docker仓库

Docker Hub:https://hub.docker.com/

  • docker login -u 用户名 -p 密码 [仓库地址]:登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

  • docker logout:推出仓库

  • docker search [image id or name]:从Docker Hub查找镜像

  • docker pull [image id or name]:拉取镜像

  • docker tag [local image id or name]:[tag] [registry host]/[镜像仓库]/[image name][:tag]:标记本地镜像,将其归入某一仓库。

  • docker push [image id or name]:推送镜像到Docker Hub

1、示例:推送到阿里云images仓库

  • sudo docker login --username=*** registry.cn-shenzhen.aliyuncs.com

  • sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/mk-application/mk.admin:[镜像版本号]

  • sudo docker push registry.cn-shenzhen.aliyuncs.com/mk-application/mk.admin:[镜像版本号]

    (registry.cn-shenzhen.aliyuncs.com/mk-application/mk.admin 为images仓库地址)

images 操作

docker tag [image id] REPOSITORY:TAG(仓库:标签):重命名镜像名

docker images [options]:显示所有镜像文件

常用OPTIONS说明:

  • -a :列出本地所有的镜像

  • -f :显示满足条件的镜像;

  • -q :只显示镜像ID

docker image inspect : 获取镜像的元数据。

docker build [options] [image id or name] .:构建一个镜像。(注意:最后空格后面有一个.)。

常用OPTIONS说明:

  • --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;

  • -f :指定要使用的Dockerfile路径;(默认当前目录的Dockerfile)

  • -m :设置内存最大值;

docker rmi [-f] [image id or name]:删除指定镜像(-f :强制删除)

docker rmi $(docker images -q):删除所有镜像

docker commit [container id or name] [image id or name[:tag]]:从容器创建一个新的镜像。

docker images | grep "redis" :查询所有包含redis的镜像

示例:

注意:REPOSITORY 列,表示:镜像名称,用于标识镜像

1、镜像归档

将指定镜像保存成 tar 归档文件

  • docker save -o /root/**.tar [image id or name]:

  • docker save [image id or name]>/root/**.tar

导入使用 docker save 命令导出的镜像

  • docker load -i /root/**.tar

  • docker load

从归档文件中创建镜像

  • docker import /root/**.tar [image id or name]:从镜像归档文件创建指定命名的镜像

container操作

docker ps:查看当前运行的容器

docker ps [OPTIONS]

常用OPTIONS说明:

  • -a:显示所有的容器

  • --filter,-f:根据条件过滤显示的内容(eg:-f name=imc.user,过滤容器名字为"imc.user")

  • -n:列出最近创建的n个容器

docker container inspect : 获取容器的元数据。

docker rename [container id or name] [new Name]:重命名容器名

docker run [OPTIONS] [image id or name]:创建一个新的容器并运行

常用OPTIONS说明:

  • -d: 后台运行容器,并返回容器ID;

  • -p(小写): 指定端口映射,格式为:主机(宿主)端口:容器端口

  • -name: 为容器指定一个名称;

  • -m :设置容器使用内存最大值;

  • --volume , -v: 绑定一个卷

  • --restart=always:总是重启容器。(Docker容器的重启策略及docker run的--restart选项详解)

docker update [options] [container id or name]:更新容器配置

常用options说明

  • -m:内存限制

  • --restart=no|always|on-failure:重启策略

docker stop [container id or name]:停止运行指定容器

docker stop $(docker ps -q -f status=running):停掉所有正在运行的容器

docker start [container id or name]:开启指定容器

docker restart [container id or name]:重启指定容器

docker rm [-f] [container id or name]:删除指定容器,加-f参数强制删除

docker rm $(docker ps -a -q):删除所有停止的容器

1、查看容器内部信息

docker exec -it [container id or name] bash:在运行的容器中执行bash命令,比如执行ls命令列出目录或者查看文件。(退出容器:Ctrl + D 或 exit)

docker top [options] [container id or name]:查看容器中运行的进程信息,支持 ps 命令参数。(能否用exec命令代替?不能,因为容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令)

docker pause [container id or name]:暂停容器中所有的进程

docker unpause [container id or name]:恢复容器中所有的进程

docker diff [container id or name]:检查容器里文件结构的更改。(相对原始镜像的文件结构)

2、查看容器运行日志

docker启动后默认日志位置:/var/lib/docker/containers/容器ID/容器ID-json.log

docker logs [options] [container id or name]:查看指定容器Id的的运行日志

OPTIONS说明:

  • -f : 跟踪日志输出

  • --since :显示某个开始时间的所有日志

  • -t : 显示时间戳

  • --tail :仅列出最新N条容器日志

示例:

查看容器mynginx从2016年7月1日后的最新10条日志。

  • docker logs --since="2016-07-01" --tail=10 mynginx

3、容器与主机之间的数据拷贝

docker cp:用于容器与主机之间的数据拷贝。

docker cp [container id or name]:src_path dest_path

docker cp src_path [container id or name]:dest_path

volume(数据卷)

Docker Image可以理解成多个只读文件叠加而成,因此Docker Image是只读的。当我们将其运行起来,就相当于在只读的Image外包裹了一层读写层变成了容器。

当你删除容器之后,使用这个镜像重新创建一个容器,此时的镜像的只读层还和原来的一样,但是你在读写层的修改全部都会丢失。

docker使用volume实现数据的持久化,实现容器和容器之间,容器和host之间共享数据。volume的大小不会被加到容器本身上。

命令

docker volume create --name [volume name]:创建命名的volume,创建目录默认:/var/lib/docker/volumes/[volume name]/_data/

docker volume ls:查看当前所有volume

docker volume inspect [volume name]:查看volume详细信息

docker volume rm [volume name]:删除volume(没有被容器使用的volume才能被删除)

docker run .... -v 宿主目录\文件:容器目录\文件 :建立目录或文件的映射

docker run .... -v [volume name]:容器目录

docker run .... -v 容器目录 :[自管理卷模式]docker自动创建匿名的volume。默认目录/var/lib/docker/volumes/[container id]/_data。(自管理卷的volume删除方式:删除容器时,加 -v)

-v 参数的注意事项:

1、host机器的目录路径必须为全路径(准确的说需要以/或~/开始的路径)

2、如果host机器上的目录不存在,docker会自动创建该目录

3、如果container中的目录不存在,docker会自动创建该目录

4、如果container中的目录已经有内容,那么docker会使用host上的目录将其覆盖掉

5、linux下 $PWD 是一个系统环境变量,指代当前目录环境

6、windows下的路径如:D:\PycharmProjects 要写为 /d/PycharmProjects (试试原始目录行不信)

docker运行一个 .NET Core程序

目录规划:

------container          // 容器根目录

--------mk.admin       // 容器名

----------Logs            // 用于映射日志的目录

----------Config         // 用于映射配置的目录

.NET Core端口设置

host.json文件{"urls": "http://*:44380"}

第一步:发布.NET Core应用程序

在要发布的项目目录执行如下命令:(或使用vs工具执行发布)

dotnet publish -f netcoreapp3.1 -o **\publish\mk.admin

第二步:创建 Dockerfile 定制镜像

找 dotnet core 需要的运行时:docker image:ASP.NET Core Runtime

将Dockerfile放在发布目录下(**\publish\mk.admin)

内容:

#第一个指令,FROM 指定基础构建镜像#基于 `microsoft/aspnet:3.1` 来构建我们的镜像FROM mcr.microsoft.com/dotnet/core/aspnet:3.1

#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中COPY . /publish

#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹WORKDIR /publish

EXPOSE 44380

#使用`dotnet ***.dll`来运行应用程序ENTRYPOINT ["dotnet", "Mk.Admin.HttpApi.Host.dll"]

第三步:创建镜像

在发布目录 **\publish\mk.admin 目录下,执行命令:

1、构建镜像docker build -t img.mk.admin .

2、运行容器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目录,这样就可以在宿主机上查看和删除日志文件)

3、查看运行中的容器docker ps

第四步:输入地址,查看站点运行状态

推荐阅读

Docker 资源汇总 

https://www.runoob.com/docker/docker-resources.html

Docker 容器连接 

https://www.runoob.com/docker/docker-container-connection.html

推荐阅读  点击标题可跳转ASP.NET Core 3.0跨平台开发体验: Docker看完此文,你还会担心Docker入不了门?Docker部署ASP.NET Core应用

看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能

好文章,我在看❤️

bash: dotnet: 未找到命令..._Docker 常用命令(.NET Core示例)相关推荐

  1. centos6重启网络命令_Docker常用命令详解

    docker命令的使用,总的来说分为以下几种: Docker环境信息 -- docker [info |version] Docker生命周期管理 -- docker [create |exec |r ...

  2. docker常用命令_docker常用命令整理

    docker常用命令整理 代码狂魔 • 5 天前 • 技术积累 • 14 • 0 前面已经把docker是什么和 docker怎么安装已经写了,现在我将常用命令做一个整理,方便日后查阅 常用命令 do ...

  3. centos 关机命令_Docker 常用命令速查手册

    记录一下 docker 的日常使用命令,本文主要针对 linux + mac 操作系统而言,window 是否适用不太确定,谨慎使用 1. docker 进程 docker 进程启动.停止.重启,常见 ...

  4. 报错:“-bash: git: 未找到命令”

    报错:"-bash: git: 未找到命令" 解决方法: 安装git命令即可解决问题,Linux百科网是以CentOS 7 64位系统为例,在安装git命令之前需要先启用EPEL存 ...

  5. -bash: lsb_release: 未找到命令

    今天在centos7.3的系统中使用lsb_release -a查看系统版本的时候,没有如预期一样给我出现系统版本号的相关信息,而是报错了, -bash: lsb_release: 未找到命令 后来一 ...

  6. 解决:-bash redis-server 未找到命令

    解决:-bash: redis-server: 未找到命令 //安装完redis 以下命令可以运行 /usr/local/redis/bin/redis-server /usr/local/redis ...

  7. Nginx启动不了报错未找到命令的解决方法(- bash: nginx: 未找到命令)

    故障现象 nginx stop - bash: nginx: 未找到命令 解决方法 1,打开环境变量所在的文件 vim /etc/profile 2,在profile文件末尾,加上一行 用来指向你的n ...

  8. bash:bison未找到命令

    今天在一台新的计算机中编译android源码时候,输入make命令之后,终端提示 bash:bison未找到命令 解决的办法很简单, $ sudo apt-get install bison 即可!

  9. # tree bash: tree: 未找到命令...

    今天使用CentOS7想查看tree,现象如下: [root@localhost 桌面]# tree bash: tree: 未找到命令- 显示找不到命令,后来发现原因是部分linux系统没有tree ...

最新文章

  1. 猎豹MFC--TH_双管道--对管道的操作就想对文件的操作一样
  2. MySql 查询同一字段多个结果合并到一行显示 GROUP_CONCAT
  3. Python的3种字符串格式化,做个超全对比!
  4. 微软Edge扩展工具箱旨在将Chrome扩展带至Edge
  5. 基于JAVA+SpringBoot+Mybatis+MYSQL的贷款审批系统
  6. 亚马逊自动化仓库事故,机器人失手戳破有毒喷雾,24名工人被送医院
  7. Java分布式锁的概念以及使用优点
  8. 《重构-改善既有代码的设计》学习笔记----Extract Method(提炼函数)
  9. python实现图片拼接长图_用Python实现长截图拼接
  10. Java集成云打印机(芯烨云)——文档篇
  11. 南师大GIS考研数据库2015年第三题
  12. Captain Flint and Crew Recruitment
  13. 轩小陌的Python笔记-day03 Python基础
  14. 遵义二十一中2021高考成绩查询入口,遵义第二十一中学2021年招生简章
  15. 【全文】狼叔:如何正确的学习Node.js
  16. 如何去理解同花顺l2接口?
  17. http://cn.bing.com/ 微软的搜索引擎“bing 必应” 终于开通了……
  18. UJN_c++_Contest4735
  19. JavaScript五子棋
  20. Meter Bus解析1:概述

热门文章

  1. CVPR2020中关于3D点云分割
  2. go kegg_零基础 GO 与 KEGG 分析,手把手教你用多种途径实现!
  3. 机器人3D互动展品开发计划——飞拍视觉伺服
  4. OpenCV | 分水岭算法进行图像分割
  5. Python—pandas中DataFrame类型数据操作函数
  6. 罹患各种癌晚期,无法救治
  7. 低调的,我们改名字了!
  8. 零基础入门学习Python(8)-了不起的分支和循环3
  9. GB:徐健/王师/黄适合作开发微生物组测序新方法2bRAD-M
  10. MPB:林科院袁志林组-利用acdSf3/acdSr4引物快速鉴定产ACC脱氨酶细菌