学习Docker的使用。

包括Docker的一些命令,Docker容器的使用,Docker镜像的使用,Docker容器连接等内容。

各种思维导图下载地址

Docker使用思维导图及各各种命令



相关文章:

Docker中文社区



Docker的架构

构建分发运行镜像

  • Client(客户端):是Docker的用户端,可以接受用户命令和配置标识,并与Docker daemon通信。
  • Images(镜像):是一个只读模板,含创建Docker容器的说明,它与操作系统的安装光盘有点像。
  • Containers(容器):镜像的运行实例,镜像与容器的关系类比面向对象中的类和对象。
  • Registry(仓库):是一个集中存储与分发镜像的服务。最常用的Registry是官方的Docker Hub 。

Docker deamon(Docker守护进程):

Docker deamon是一个运行在宿主机(DOCKER_HOST)的后台进程。可通过Dokcer客户端与之通信。

Client(Docker客户端):

Docker客户端是Docker的用户界面,它可以接受用户命令和配置标识,并与Docker daemon 通信。docker build等都是Docker的相关命令。

Images(Docker镜像):

Docker镜像是一个只读模板,它包含创建Docker容器的说明。它和系统安装光盘有点像——使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行Docker镜像中的程序。

Container(容器):

容器是镜像可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。可通过Docker API或者CLI命令来启停、移动、删除容器。

Registry(注册中心):

Docker Registry是一个集中存储与分发镜像的服务。构建完Docker镜像后,就可在当前宿主机上运行。但如果想要在启停机器上运行这个镜像,就需要手动复制。此时可借助Docker Registry来避免镜像的手动复制。

一个Docker Registry可包含多个Docker仓库,每个仓库可包含多个镜像标签,每个标签对应一个Docker镜像。

Docker常用命令

搜索命令:docker search [OPTIONS] TERM

参数列表:

Name,shorthand Default Description

–filter,-f 根据指定条件过滤结果

–limit 25 搜索结果的最大条数

–no-trunc false 不截断输出,显示完整的输出

Name,shorthand Default Description
–filter,-f 根据指定条件过滤结果
–limit 25 搜索结果的最大条数
–no-trunc false 不截断输出,显示完整的输出

示例:docker search java

NAME DESCRIPTION STARS OFFICIAL AUTOMATED
java Java is a concurrent,… 1281 [OK]
anapsix/alpine-java Oracle Java 8(and 7),… 190 [OK]
  • NAME:镜像仓库名称。
  • DESCRIPTION:镜像仓库描述。
  • STARS:镜像仓库收藏数,类似Git的Stars。
  • OFFICIAL:表示是否为官方仓库。
  • AUTOMATED:表示是否是自动构建的镜像仓库。

下载镜像:docker pull

使用docker pull从Docker Registry上下载镜像。

docker pull [OPTIONS] NAME [:TAG|@DIGEST]

Name,shorthand Default Description
–all-tags,-a false 下载所有标签的镜像
–disable-content-trust true 忽略镜像的校验

示例:docker pull java;docker pull reg.itmuch.com/java:7;(可以从指定Docker Registry中下载标签为7的Java镜像)

列出镜像:docker images

命令格式:docker images [OPTIONS] [REPOSITORY[:TAG]]

Name,shorthand Default Description
–all,-a false 列出本地所有的镜像(包括中间镜像层,默认情况下,过滤中间映像层)
–digests false 显示摘要信息
–filter,-f 显示满足条件的镜像
–format 通过Go语言模板文件展示镜像
–no-trunc false 不截断输出,显示完整的镜像信息
–quiet,-p false 只显示镜像ID

示例:

docker images

docker images java

docker images java:8

docker images --digests

docker images --filter “dangling=true” #展示虚悬镜像

执行该命令后,会看到类似如下表格:

REPOSITORY TAG IMAGE ID CREATED SIZE
java latest 861e95c114d6 4 weeks ago 643.1MB

该表格包含5列,含义如下:

  • REPOSITORY:镜像所属仓库名称
  • TAG:镜像标签。默认是latest,表示最新。
  • IMAGE ID:镜像ID,表示镜像唯一标识。
  • CREATED:镜像创建时间。
  • SIZE:镜像大小。

删除本地镜像:docker rmi

命令格式:docker rmi [OPTIONS] IMAGE [IMAGE…]

Name,shorthand Default Description
–force,-f false 强制删除
–no-prune false 不移除该镜像的过程镜像,默认移除

示例1:删除指定名称的镜像。

docker rmi hello-world

表示删除hello-world这个镜像

示例2:删除所有镜像

docker rmi -f $(docker images)

保存镜像:docker save

命令格式:docker save [OPTIONS] IMAGE [IMAGE…]

Name,shorthand Default Description
–output,-o 输出到文件,而非标准输出

示例:

#将busybox保存为busybox.tar

docker save busybox > busybox.tar

docker save --output busybox.tar busybox

加载镜像:docker load

命令格式:docker load [OPTIONS]

Name,shorthand Default Description
–input,-i 从文件加载而非标准输入
–quiet,-q false 静默加载

示例:

#从busybox.tar 文件中加载镜像

docker load < busybox.tar

docker load --input busybox.tar

构建镜像:通过Dockerfile构建镜像

命令格式:docker build [OPTIONS] PATH | URL | -

docker build命令参数

Name,shorthand Default Description
–add-host 添加自定义从host到IP的映射,格式为(host:ip)
–build-arg 设置构建时的变量
–cache-from 作为缓存源的镜像
–cgroup-parent 为容器指定可选的父cgroup
–compress false 使用gzip亚索构建上下文
–cpu-period 0 限制CPU CFS周期
–cpu-quota 0 限制CPU CFS配额
–cpu-shares,-c 0 CPU使用权重(相对权重)
–cpuset-cpus 指定允许执行的CPU(0-3,0,1)
–cpuset-mems-arg 指定允许执行的内存(0-3,0,1)
–disable-content-trust true 忽略校验
–file,-f 指定Dockerfile的名称,默认是PATH/Dockerfile
–force-rm false 删除中间容器
–isolation 指定容器隔离技术
–label 为镜像设置元数据
–memory,-m 0 设置内存限制
–memory-swap 0 设置swap的最大值为内存+swap,如果设置为-1,表示不限swap
–network default 在构建期间设置RUN指定的网络模式
–no-cache false 构建镜像过程中不适用缓存
–pull false 总是尝试去下载更新版本的镜像
–quiet,-q false 静默模式,构建成功后只输出镜像ID
–rm true 构建成功后立即删除中间容器
–security-opt 安全选项
–shm-size 0 指定/dev/shm目录的大小
–squash false [实验]将构建的层压缩成一个新的层
–stream [实验]连接到服务器的流,用于协商构建上下文
–tag,-t 设置标签,格式为name:tag,其中tag可选
–target 设置构建时的目标构建阶段
–ulimit 设置构建时的目标构建阶段

示例:

docker build -t itmuch/some-repo:some-tag .

Docker容器常用命令

新建并启动容器:docker run

使用docker run 命令即可新建并启动一个容器。

Name,shorthand Default Description
–detach,-d 后台运行容器,并打印容器ID
–punish-all,-p 随机映射所有端口
–punish,-p 指定端口映射,该选项有以下四种格式:
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
–network 指定网络模式,该选项有以下四种可选参数:
–network=bridge:默认选项,表示连接到默认的网桥
–network=host:容器使用宿主机的网络
–network=container:NAME_or_ ID:告诉Docker让新建的容器使用已有容器的网络配置
–network=none:不配置该容器的网络,用户可自定义网络配置

示例:

docker run -d -p 01:80 nginx

启动一个Nginx容器,访问http://Docker宿主机IP:91/就可以访问。

docker run [-i -t -d -p -P -c] [--name]:在容器内运行一个应用程序
-t :在新容器内指定一个伪终端或终端
-i:允许你对容器内的标准输入进行交互
-d:以进程方式运行容器,让容器在后台运行
-p:设置端口
-P:将容器内部使用的网络端口映射到我们使用的主机,就是让我们访问我们使用的主机就等同于访问到容器内部
-c:command,后面接命令
--name container name:指定容器名字

列出容器:docker ps

命令格式:docker ps [OPTIONS]

Name,shorthand Default Description
–all,-a false 列出所有容器,包括未运行的容器。默认只展示运行的容器。
–filter,-f 根据条件过滤显示内容
–format 通过Go语音模板文件展示镜像
–last,-n -1 显示最近创建的n个容器(包含所有状态)
–latest,-l false 显示最近创建的容器(包含所有状态)
–no-trunc false 不截断输出
–quiert,-q false 静默模式,只展示容器的ID
–size,-s false 显示总文件大小

示例:docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
  • CONTAINER_ID:表示容器ID
  • IMAGE:表示镜像名称
  • COMMAND:表示启动容器时运行的命令
  • CREATED:表示容器的创建时间
  • STATUS:表示容器运行的状态。UP表示运行中,Exited表示已停止
  • PORTS:表示容器对外的端口号
  • NAME:表示容器名称。该名称默认由Docker自动生成,也可使用docker run命令的-name选项自行指定。

停止容器:docker stop

使用docker stop命令即可停止容器。

命令格式:docker stop [OPTIONS] CANTAINER [CANTAINER…]

Name,shorthand Default Description
–time,-t 10 强制停止容器前等待的时间,单位是s

示例:docker stop [容器ID]

强制停止容器:docker kill

可使用docker kill命令发送SIGKILL信号来强制停止容器。

命令格式:docker kill [OPTIONS] CONTAINER [CONTAINER…]

Name,shorthand Default Description
–signal,-s KILL 向容器发送一个信号

示例:

docker kill [容器ID]

启动已停止的容器:docker start

使用docker run命令即可新建并启动一个容器,对于已停止的容器,可使用docker start命令来启动。

命令格式:docker start [OPTIONS] CONTAINER [CONTAINER…]

Name,shorthand Default Description
–attach,-a false 连接STDOUT/STDERR并转发信号
–detach-keys 覆盖断开容器的关键顺序
–interactive,-i false 连接容器的STDIN

示例:docker start [容器ID]

重启容器:docker restart

可使用docker restart命令来重启容器,该命令实际上是先执行了docker stop,然后执行了docker start。

命令格式:docker restart [OPTIONS] CONTAINER [CONIAINER…]

Name,shorthand Default Description
–time,-t 10 关闭容器前等待的时间,单位是s

进入容器:docker attach

某些场景下,可能需要进入运行中的容器。

使用docker attach进入容器;例如

docker attach [容器ID]

在很多场景下,使用docker attach命令并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示。同理,如果某个窗口发生阻塞,其他窗口也无法执行操作。

使用neenter进入容器;

使用docker exec命令进入容器;

示例:

docker exec -it 容器id /bin/bash

删除容器:docker rm

docker rm 即可删除指定容器;

命令格式:docker rm [OPTIONS] CONTAINER [CONTAINER…]

Name,shorthand Default Description
–force,-f false 通过SIGKILL信号强制删除正在运行中的容器
–link,-l false 删除容器间的网络连接
–volumes,-v false 删除与容器关联的卷

示例1:删除指定容器。

docker rm [容器ID]

该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数。

示例2:删除所有容器

docker rm -f ${docker ps -a -q}

导出容器:docker export

使用docker export命令可将容器导出成一个压缩包文件。

命令格式:docker export [OPTIONS] CONTAINER

Name,shorthand Default Description
–output,-o 将内容写到文件而非标准输出

示例:

将red容器到处城latest.tar文件

docker export red > latest.tar

docker export --output=“latest.tar” red

导入容器:docker import

使用docker import命令即可从归档文件导入内容并创建镜像。

命令格式:

Name,shorthand Default Description
–change,-c 将Dockerfile指令应用到创建的镜像
–message,-m 为导入的镜像设置提交信息

示例:

从nginx2.tar文件导入,并创建nginx镜像

docker import nginx2.tar nginx

查看进程并干掉进程

jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。非常简单实用。

命令格式:jps [options ] [ hostid ]

[options]选项 :

-q:仅输出VM标识符,不包括classname,jar name,arguments in main method

-m:输出main method的参数

-l:输出完全的包名,应用主类名,jar的完全路径名

-v:输出jvm参数

-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件

-Joption:传递参数到vm,例如:-J-Xms512m

jps

jps –l:输出主类或者jar的完全路径名

jps –v :输出jvm参数

jps –q :仅仅显示java进程号

jps -mlv10.134.68.173

干掉进程

kill - 9 表示强制杀死该进程;而 kill 则有局限性,例如后台进程,守护进程等;

kill -9 id:一般不加参数kill是使用15来杀,这相当于正常停止进程,停止进程的时候会释放进程所占用的资源;他们的区别就好比电脑关机中的软关机(通过“开始”菜单选择“关机”)与硬关机(直接切断电源),虽然都能关机,但是程序所作的处理是不一样的。

执行kill命令,系统会发送一个SIGTERM信号给对应的程序。SIGTERM多半是会被阻塞的。kill -9命令,系统给对应程序发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。

kill命令格式:

kill -Signal pid

pid是进程号,可以用 ps 命令查出

signal是发送给进程的信号,TERM(或数字9)表示“无条件终止”;

因此 kill - 9 表示强制杀死该进程;

而 kill 则有局限性,例如后台进程,守护进程等;

思维导图

docker常用命令:

一张图总结 Docker 的命令

Docker运维流程图

Docker及其使用思维导图的更多相关文章

  1. 在为知笔记中使用Markdown和思维导图

    为知笔记Wiz是一款很好的网摘和笔记工具,作为为知的忠实用户,我在为知收费后第一时间就购买了两年的授权,毕竟这么多年积累的资料都在为知上,我也习惯了使用Wiz来做些工作相关的笔记.为知笔记自带Mark ...

  2. Hexo使用思维导图插件

    进入Hexo博客的根目录,执行下面命令安装插件 npm install hexo-simple-mindmap 添加思维导图格式,按层级顺序 {% pullquote mindmap mindmap- ...

  3. 测开之Python自动化全栈工程师+性能专项(送思维导图)

    测开之Python自动化全栈工程师+性能专项 功能测试基础 接口测试基础接口的通信原理与本质cookie.session.token详解接口测试的意义与测试方法接口测试用例的设计 app测试 app流 ...

  4. Photoshop、Illustrator思维导图笔记

    半年前学习Photoshop时记得的思维导图笔记,可能不是很全,常用的基本都记下了.

  5. "Becoming Functional" 阅读笔记+思维导图

    <Becoming Functional>是O'Reilly公司今年(2014)7月发布的一本薄薄的小册子,151页,介绍了函数式编程的基本概念.全书使用代码范例都是基于JVM的编程语言, ...

  6. IT技术思维导图

    在网上看到有个人总结的java技术的东东,觉得很好,就保存下来了,码农还真是累啊,只有不断的学习才能有所提高,才能拿更多的RMB啊. java技术思维导图 服务端思维导图 前端思维导图

  7. XMind共享未保存的思维导图的教程

    我们在XMind 6对导图进行局域网共享时,一般都是对XMind文件先进行保存再共享,那样是忘记保存呢,该如何共享.局域网共享功能是XMind 6特有的功能之一,自是较为完善,性能强大的功能,当然有办 ...

  8. 思维导图FreeMind安装问题及简单使用

    思维导图软件使用的坎坷之路 一直想将思维导图加入到工作环境当中 最开始使用的是 MindManager(http://www.mindmanager.cc/) ,而且感觉利用它制作出来的导图外观也比较 ...

  9. 【干货】jsMind思维导图整合Easyui的右键菜单

    原材料: 1.web版本的JavaScript思维导图(BSD开源协议)[戳这里去官网]. 2.easyui最新版[戳这里去官网]. 这里是原本的jsMind: 在线测试地址 :http://hizz ...

随机推荐

  1. 我是这样理解EventLoop的

    我是这样理解EventLoop的 一.前言   众所周知,在使用javascript时,经常需要考虑程序中存在异步的情况,如果对异步考虑不周,很容易在开发中出现技术错误和业务错误.作为一名合格的jav ...

  2. 源码编译搭建LNMP环境

    LNMP源码编译 1.LNMP介绍 LNMP=Linux Nginx Mysql PHP Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器.Ng ...

  3. Java入门随手记-DOS命令

    DOS 打开cmd的方式 开始+系统+命令提示符 win键+r 输入cmd打开控制台(推荐使用) 在任意的文件夹下面,按住shift键+鼠标右键点击,在此次打开命令窗口 资源管理器的地址栏前面加上cm ...

  4. MySQL 标识符到底区分大小写么——官方文档告诉你

    最近在阿里云服务器上部署一个自己写的小 demo 时遇到一点问题,查看 Tomcat 日志后定位到问题出现在与数据库服务器交互的地方,执行 SQL 语句时会返回 指定列.指定名 不存在的错误.多方查证 ...

  5. 直播预告 | 开源的云原生开发环境 —— Nocalhost

    直播来啦!本次云原生学院邀请到腾讯云 CODING DevOps 后端工程师王炜为大家分享<开源的云原生开发环境 -- Nocalhost>. 直播信息 讲师:王炜 - 腾讯云 CODIN ...

  6. PAT甲级练习 1087 All Roads Lead to Rome (30分) 字符串hash + dijkstra

    题目分析: 这题我在写的时候在PTA提交能过但是在牛客网就WA了一个点,先写一下思路留个坑 这题的简单来说就是需要找一条最短路->最开心->点最少(平均幸福指数自然就高了),由于本题给出的 ...

  7. paramunittest参数化测试基础

    samples: import paramunittestimport unittest@paramunittest.parametrized( (10,20), (30,40), # (100,20 ...

  8. MySQL常用的数据类型和字段属性

    数据类型 数值 tinyint 十分小的数据 1个字节 smallint 较小的数据 2个字节 mediumint 中等大小的数据 3个字节 int 标准的整数 4个字节 常用 bigint 较大的数 ...

  9. 基于numpy.einsum的张量网络计算

    张量与张量网络 张量(Tensor)可以理解为广义的矩阵,其主要特点在于将数字化的矩阵用图形化的方式来表示,这就使得我们可以将一个大型的矩阵运算抽象化成一个具有良好性质的张量图.由一个个张量所共同构成 ...

  10. 使用CDN访问免备案网站

    如何使用CDN绕过服务器域名备案 前言 不得不说,大陆需要备案,时间真的有点长,至少得5天~20天起步,对于我们这些火急火燎的站长还是比较难受的.这里教大家如何使用cdn绕过备案, 访问速度很快,亲测 ...