本篇文章,整理docker中常用的命令,方便大家学习和命令查询。最后分享一个.NET Core 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
 
 
Repository 仓库操作
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
 
#、示例:推送到阿里云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 列,表示:镜像名称,用于标识镜像
 
#、镜像归档
将指定镜像保存成 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</root/**.tar
从归档文件中创建镜像
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:总是重启容器(eg:重启计算机后自动启动应用)。(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):删除所有停止的容器
 
#、查看容器内部信息
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]:检查容器里文件结构的更改。(相对原始镜像的文件结构)
 
#、查看容器运行日志
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
 
#、容器与主机之间的数据拷贝
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 参数的注意事项:
#、host机器的目录路径必须为全路径(准确的说需要以/或~/开始的路径)
#、如果host机器上的目录不存在,docker会自动创建该目录
#、如果container中的目录不存在,docker会自动创建该目录
#、如果container中的目录已经有内容,那么docker会使用host上的目录将其覆盖掉
#、linux下 $PWD 是一个系统环境变量,指代当前目录环境
#、windows下的路径如:D:\PycharmProjects 要写为 /d/PycharmProjects
 
 
示例:docker运行一个 .Net Core 程序
目录规划:
------container // 容器根目录
--------mk.admin // 容器名
----------Logs // 用于映射日志的目录
----------Config // 用于映射配置的目录
 
.NET Core端口设置
方式一:
     代码中绑定端口,比如新建host.json文件,如下:

{
       "urls": "http://*:44380"
     }

   
方式二、
   在Dockerfile文件中,使用Env设置环境变量

方式三、
    docker run …… -e "ASPNETCORE_URLS=http://+:44380"
 
开始进行.NET Core Docker部署:
第一步:发布.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)
内容:
  1. #第一个指令,FROM 指定基础构建镜像
  2. #基于 `microsoft/aspnet:3.1` 来构建我们的镜像
  3. FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
  4.  
  5. #拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中
  6. COPY . /publish
  7.  
  8. #设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
  9. WORKDIR /publish
  10.  
  11. #使用`dotnet ***.dll`来运行应用程序
  12. ENTRYPOINT ["dotnet", "Mk.Admin.HttpApi.Host.dll"]
 
第三步:创建镜像、容器
在发布目录 **\publish\mk.admin 目录下,执行命令:
  1. #、构建镜像
  2. docker build -t img.mk.admin .
  3. #、创建并运行容器
  4. docker run --name mk.admin -p 44380:44380 -v /usr/application/Mk.Admin/Logs:/publish/Logs -d --restart=always img.mk.admin
  5. (数据卷:将宿主机的/usr/application/Mk.Admin/Logs目录映射到容器的/publish/Logs目录,这样就可以在宿主机上查看和删除日志文件)
  6. #、查看运行中的容器
  7. docker ps

#、输入地址,查看站点运行状态

 
 
推荐阅读:
 
 

Docker 常用命令(.NET Core示例)的更多相关文章

  1. Docker 常用命令——镜像

    Docker 常用命令 帮助命令 docker version    --版本信息 docker info       --详细信息 docker --help     --帮助 镜像命令 1.doc ...

  2. Docker 常用命令和Dockerfile

    Docker 简介 官方的解释为:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现 ...

  3. 『现学现忘』Docker常用命令 — 21、容器常用命令(三)

    目录 13.进入正在运行的容器并以命令行交互 (1)方式一 (2)方式二 (3)attach和exec的区别 14.从容器内拷贝文件到主机上 15.Docker常用命令小结 (1)容器生命周期管理 ( ...

  4. 关于Docker 常用命令

    Docker 常用命令 分类列一下常用的CLI命令 仓库相关 search/ pull / push / login etc. 例:docker pull ubuntu 从仓库下载ubuntuimag ...

  5. 【Docker】(3)---linux部署Docker、Docker常用命令

    linux部署Docker.Docker常用命令 本次部署Linux版本:CentOS 7.4 64位. 说明: 因为Docker是基于Linux 64bit的 所以Docker要求64位的系统且内核 ...

  6. Docker常用命令(二)

    Docker常用命令 查看Docker所有正在运行的容器 docker ps 查看Docker已退出的容器 docker ps -a 查看Docker所有镜像 docker images 删除镜像 删 ...

  7. Docker应用二:docker常用命令介绍

     Docker常用命令使用介绍 docker中常用的命令: 1.docker search image_name:搜查镜像 2.docker pull image_name:从镜像库中拉去镜像 3.d ...

  8. Docker常用命令汇总,和常用操作举例

    Docker命令 docker 常用命令如下 管理命令: container 管理容器 image 管理镜像 network 管理网络 node 管理Swarm节点 plugin 管理插件 secre ...

  9. 1021 docker常用命令和Jenkins搭建

    docker常用命令 1.镜像管理 docker pull (镜像名) # 默认拉取最新版本的镜像 docker pull (镜像名:版本号) #拉取指定版本的镜像 docker push (镜像名) ...

  10. docker 常用 命令

    http://os.51cto.com/art/201409/451117.htm 2.1 在测试机启动容器,安装ssh docker run -i -t ubuntu /bin/bash #此方式运 ...

随机推荐

  1. 免费获取 Jetbrain 全家桶使用兑换码的正确姿势!

    自今年1月份以Jetbrain公司严厉打击旗下开发工具产品(如:IntelliJ IDEA.WebStorm.PyCharm等)的盗版破解以来.求新破解方式.分享新破解方法的帖子或信息经常可以在各技术 ...

  2. vue 阻止冒泡 @click.stop=

    vue 阻止冒泡 @click.stop= vue中处理冒泡标准姿势 事件修饰符 Vue.js 为 v-on 提供了事件修饰符,修饰符是由点开头的指令后缀来表示的.这些事件修饰符主要有以下几个: st ...

  3. 【Weiss】【第03章】练习3.7:有序多项式相乘

    [练习3.7] 编写一个函数将两个多项式相乘,用一个链表实现.你必须保证输出的多项式按幂次排列,并且任意幂次最多只有一项. a.给出以O(M2N2)时间求解该问题的算法. b.写一个以O(M2N)时间 ...

  4. C/C++、C#、JAVA(二):基本类型和转换操作

    基本类型和转换操作 数据类型 C语言中的基本类型如下. 类型 存储大小 值范围 char 1 字节 -128 到 127 或 0 到 255 unsigned char 1 字节 0 到 255 si ...

  5. 贵州省网络安全知识竞赛团体赛Writeup-phpweb部分

    0x01 混淆后门#conn.php 首先还是拖到D盾扫描 打开conn.php发现底部有那么一串代码: 对这个代码进行分析 首先可以对几个比较简单的变量输出看一下 $s输出内容为create_fun ...

  6. CF1326C Permutation Partitions 题解,

    原题链接 简要题意: 给定一个 \(1\) ~ \(n\) 的置换,将数组分为 \(k\) 个区间,使得每个区间的最大值之和最大.求这个值,和分区的方案数. 关键在于 \(1\) ~ \(n\) 的置 ...

  7. 拒绝了对对象 '***' (数据库 'BestSoftDB_P',架构 'sale')的 EXECUTE 权限。

    问题描述: 给普通用户授予读写权限,之后研发反映查询语句报错: nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: ...

  8. MySQL的死锁系列- 锁的类型以及加锁原理

    疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发现了死锁现象: ERROR 1213 (40001): De ...

  9. 给rm命令加保险

    众所周知,脑残可以学习,但是手残没法治.相信每一位喜欢用终端操作电脑的同学都曾手误使用 rm 命令把不该删除的文件删了.然而,使用 rm 删除的文件是不会进去回收站的. 所以,最好的方法就是我们自定义 ...

  10. OpenCV-Python 读取显示视频 | 六

    目标 学习读取视频,显示视频和保存视频. 学习从相机捕捉并显示它. 你将学习以下功能:cv.VideoCapture(),cv.VideoWriter() 从相机中读取视频 通常情况下,我们必须用摄像 ...