Dcoker命令详解

本章主要讲述Docker命令的各项配置,目的是以学习为主,如果转载请注明出处. -博客园:玲珑骰子安红豆

目录

名词解释

1.镜像仓库

2.本地镜像管理

3.容器生命周期管理

4.容器操作

5.容器rootfs命令

6.其他操作

?
?

名词解释(可能会让人产生误解)

REPOSITORY

仓库(是注册服务器与镜像名称组合起来的,)

NAME

名称(镜像的name属性,不包含注册服务器)

IMAGE

镜像,通常代指REPOSITORY+NAME的组合

TAG

标签(通常代表了镜像的版本)

CONTAINER

容器唯一标识(通常是ID或者简短ID,或者容器的names),可以通过dockers ps -a查看

DIGEST

文摘,通常指镜像的摘要

OPTIONS

选项

Usage

命令格式(用法,语法)

?
?

1.镜像仓库

  • search

    • 从docker hub 查找镜像
    • Usage:????????docker search [OPTIONS] TERM
    • OPTIONS:

--automated=false


只列出 automated build类型的镜像


--help=false


Print usage


--no-trunc=false


显示完整的镜像描述


-s, --stars=0


列出收藏数不小于指定值的镜像

  • pull

    • 从镜像仓库中拉取或者更新指定镜像
    • Usage:????????docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    • OPTIONS:

-a, --all-tags=false


下载所有tegged的镜像(下载所有标签不同的镜像)


--help=false


Print usage

  • push

    • 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
    • Usage: docker push NAME[:TAG]
    • 推送的镜像要重新将注册服务器添加到镜像名称中
  • login

    • 登录到服务器/私服,默认是登录到docker hub
    • Usage:????????docker login [OPTIONS] [SERVER]
    • SERVER默认为"https://index.docker.io/v1/"
    • OPTIONS:

-e, --email=


Email


--help=false


Print usage


-p, --password=


Password


-u, --username=


Username

  • logout

    • 登出仓库
    • Usage:????????docker logout [SERVER]
    • SERVER默认为"https://index.docker.io/v1/"

    ?
    ?

2.本地镜像管理

  • images

    • 列出本地镜像。
    • Usage:????????docker images [OPTIONS] [REPOSITORY]
    • OPTIONS:

-a, --all=false


Show all images (default hides intermediate images)


--digests=false


Show digests


-f, --filter=[]


Filter output based on conditions provided


--help=false


Print usage


--no-trunc=false


Don‘t truncate output


-q, --quiet=false


Only show numeric IDs

  • tag

    • Usage:????????docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
    • OPTIONS:

-f, --force=false


强制进行


--help=false


Print usage

  • save

    • 保存镜像(载出镜像)
    • Usage:????????docker save [OPTIONS] IMAGE [IMAGE...]
    • Usage:????????docker save IMAGE > file|URL
    • OPTIONS:

--help=false


Print usage


-o, --output=


输出路径

  • load(加载save命令保存的镜像)

    • 加载镜像(载入镜像)
    • Usage:????????docker load [OPTIONS]
    • Usage:????????docker load < file|URL

--help=false


Print usage


-i, --input=


文件路径

  • import(加载export命令保存的容器,导入为镜像)

    • docker容器导入
    • Usage:????????docker import [OPTIONS] URL|- [REPOSITORY[:TAG]] demo: cat ss.tar | sudo docker import - ssr:test
    • Usage:????????docker import - [REPOSITORY[:TAG]] < file|url demo: docker import - ssr:test < ss.tar
    • OPTIONS:

-c, --change=[]


应用docker 指令创建镜像


--help=false


Print usage

?
?

  • history

    • 显示镜像历史记录
    • Usage:????????docker history [OPTIONS] IMAGE
    • OPTIONS

-H, --human=true


以可读的格式打印镜像大小和日期,默认为true


--help=false


Print usage


--no-trunc=false


显示完整的提交记录


-q, --quiet=false


仅列出提交记录ID

  • inspect

    • 查看容器详细信息
    • Usage:????????docker inspect [OPTIONS] CONTAINER|IMAGE|TASK [CONTAINER|IMAGE|TASK...]
    • OPTIONS:

-f, --format


使用指定的输出格式模板


--help


Print usage


-s, --size


如果查看的是容器的话显示总文件大小


--type


控制查看的类型(是容器还是镜像或者是任务,如果类型不符合会抛异常). (可选为 image, container or task),

  • 使用实例:

    • [[email protected] ~]# docker inspect -f ‘{{.NetworkSettings.IPAddress}}‘ 2b928dba921d
    • 172.17.0.2
  • rmi

    • 删除本地一个或多少镜像(根据 IMAGE 删除,只有删除最后一个的时候,镜像才会删除)
    • Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
    • OPTIONS:

-f, --force=false


强制删除镜像(忽略容器正在使用)


--help=false


Print usage


--no-prune=false


不移除该镜像的过程镜像,默认移除

  • build

    • 语法
    • docker build [OPTIONS] PATH | URL | -
    • OPTIONS说明:
    • --build-arg=[] :设置镜像创建时的变量;
    • --cpu-shares :设置 cpu 使用权重;
    • --cpu-period :限制 CPU CFS周期;
    • --cpu-quota :限制 CPU CFS配额;
    • --cpuset-cpus :指定使用的CPU id;
    • --cpuset-mems :指定使用的内存 id;
    • --disable-content-trust :忽略校验,默认开启;
    • -f :指定要使用的Dockerfile路径;
    • --force-rm :设置镜像过程中删除中间容器;
    • --isolation :使用容器隔离技术;
    • --label=[] :设置镜像使用的元数据;
    • -m :设置内存最大值;
    • --memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
    • --no-cache :创建镜像的过程不使用缓存;
    • --pull :尝试去更新镜像的新版本;
    • -q :安静模式,成功后只输出镜像ID;
    • --rm :设置镜像成功后删除中间容器;
    • --shm-size :设置/dev/shm的大小,默认值是64M;
    • --ulimit :Ulimit配置。

      ?
      ?

?
?

3.容器生命周期管理

  • create/run

    • create是创建一个新的容器但不启动它,实例请查看:https://docs.docker.com/engine/reference/commandline/run/#extended-description
    • run是创建一个新的容器,并且启动它.
    • Usage:????????docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
    • Usage:????????docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    • OPTIONS:

-a, --attach=[]


指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项


--add-host=[]


添加一条hosts的记录添加到hosts文件中, (格式 host:ip)


--blkio-weight=0


容器块设备IO的权重 (范围10 至 1000)(默认为相同权重值500)


-c, --cpu-shares=0


CPU份额 (相对权重)


--cap-add=[]


控制docker的内核权限(添加)


--cap-drop=[]


控制docker的内核权限(排除)


--cgroup-parent=


Optional parent cgroup for the container


--cidfile=


将容器的id写入宿主机的文件中


--cpu-period=0


完全公平算法中的period值(不了解请百度 Limit the CPU CFS)


--cpu-quota=0


完全公平算法中的quota值


--cpuset-cpus=


绑定容器到指定CPU运行 (0-3, 0,1)


--cpuset-mems=


绑定容器到指定CPU运行(0-3, 0,1),只应用于 NUMA 架构的 CPU 生效,http://cenalulu.github.io/linux/numa/


-d, --detach=false


后台运行容器,并返回容器ID(run命令专属);


--device=[]


添加主机设备给容器,相当于设备直通


--dns=[]


指定容器使用的DNS服务器,默认和宿主一致


--dns-search=[]


指定容器DNS搜索域名,默认和宿主一致


-e, --env=[]


设置环境变量


--entrypoint=


配置容器启动时运行的命令


--env-file=[]


从指定文件读入容器启动时运行的命令


--expose=[]


开放端口(可以是一个
也可以是一组)


-h, --hostname=


指定容器的hostname


--help=false


Print usage


-i, --interactive=false


以交互模式运行容器,通常与 -t 同时使用(保持输出打开)


--ipc=


要使用的IPC命名空间


-l, --label=[]


设置标签(format a=b)


--label-file=[]


读取一个按行分隔的标签文件


--link=[]


添加链接到另一个容器


--log-driver=


容器使用的日志输出驱动设备


--log-opt=[]


日志驱动选项


--lxc-conf=[]


添加自定义LXC选项


-m, --memory=


设置容器使用内存最大值


--mac-address=


设置容器mac地址 (e.g. 92:d0:c6:0a:29:33)


--memory-swap=


-1 表示交换分区不限制(禁用掉)


--name=


为容器指定一个名称


--net=bridge


指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;


--oom-kill-disable=false


内存耗尽时是否杀掉容器,默认杀掉容器进程


-P, --publish-all=false


映射所有开放的端口到宿主机的随机端口,需要与--expose参数配合使用.


-p, --publish=[]


指定端口映射


--pid=


使用PID命名空间


--privileged=false


指定容器是否为特权容器,特权容器拥有所有的capabilities


--read-only=false


容器的/根目录为只读


--restart=no


指定容器停止后的重启策略(no,容器退出时不重启,on-failure容器故障退出时(返回值非零)重启,always退出时总是重启)


--rm=false


退出容器时,自动清理其所产生的数据,不与-d参数同时使用(run独有)


--security-opt=[]


修改容器默认的schema标签


--sig-proxy=true


设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理


-t, --tty=false


为容器重新分配一个伪输入终端,通常与 -i 同时使用;


-u, --user=


指定容器的用户 (format: <name|uid>[:<group|gid>])


--ulimit=[]


ulimit 用于限制 shell 启动进程所占用的资源


--uts=


使用UTS命名空间


-v, --volume=[]


挂载数据卷


--volumes-from=[]


挂载其他容器的数据卷


-w, --workdir=


容器内的工作目录,默认为根目录

  • start

    • 启动一个或多个停止的容器
    • Usage:????????docker start [OPTIONS] CONTAINER [CONTAINER...]
    • OPTIONS:

-a, --attach=false


Attach STDOUT/STDERR and forward signals


--help=false


Print usage


-i, --interactive=false


连接到容器的标准输出

  • rename

    • 容器重命名
    • Usage:????????docker rename OLD_NAME NEW_NAME
  • stop/restart

    • 停止/重启容器
    • Usage:????????docker stop [OPTIONS] CONTAINER [CONTAINER...]
    • Usage:????????docker restart [OPTIONS] CONTAINER [CONTAINER...]
    • OPTIONS:

--help=false


Print usage


-t, --time=10


多长时间后发送信号,停止容器(默认10s)

  • kill

    • 杀掉一个运行中的容器。
    • Usage:????????docker kill [OPTIONS] CONTAINER [CONTAINER...]
    • Options:

--help


Print usage


-s, --signal string


向容器发送一个信号 (default "KILL")

  • stop和kill的区别:

    • kill是不管容器同不同意,我直接执行kill -9,强行终止;
    • stop的话,首先给容器发送一个TERM信号,让容器做一些退出前必须的保护性、安全性操作,然后让容器自动停止运行,如果在一段时间内,容器还是没有停止,再进行kill -9,强行终止。
  • pause/unpause

    • 暂停/恢复容器的所有进程
    • Usage:????????docker pause [OPTIONS] CONTAINER [CONTAINER...]
    • Usage:????????docker unpause [OPTIONS] CONTAINER [CONTAINER...]
  • rm

    • 删除一个或者多个容器
    • Usage: ????????docker rm [OPTIONS] CONTAINER [CONTAINER...]
    • OPTIONS:

-f, --force=false


强行终止一个运行中的容器 (uses SIGKILL)


--help=false


Print usage


-l, --link=false


删除容器的连接,但是保留容器


-v, --volumes=false


删除容器挂载的数据卷.

  • wait

    • 阻塞运行直到容器停止,然后打印出它的退出代码。
    • Usage: ????????docker wait [OPTIONS] CONTAINER [CONTAINER...]

?
?

4.容器操作

  • logs

    • 获取容器的日志
    • Usage:????????docker logs [OPTIONS] CONTAINER
    • Options:

--details


显示详细的日志


-f, --follow


跟踪日志输出


--help


Print usage


--since string


显示某个开始时间的所有日志


--tail string


仅列出最新N条容器日志


-t, --timestamps


显示时间戳

  • ps

    • 列出容器
    • Usage:????????docker ps [OPTIONS]
    • Options:

-a, --all


列出所有容器(默认仅列出运行中的容器)


-f, --filter value


根据条件过滤显示的内容


--format string


指定返回值的模版文件(格式化返回值)


--help


Print usage


-n, --last int


列出最近创建的n个容器


-l, --latest


显示最后创建的容器


--no-trunc


不进行截断输出(显示所有选项的值)


-q, --quiet


只显示容器编号(ID)


-s, --size


显示总的文件大小

  • top

    • 容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正在运行的进程。(支持ps参数)
    • Usage:????????docker top CONTAINER [ps OPTIONS]
    • 可能有些难以理解,以下是实例

      • [[email protected] ~]# docker top 2b928dba921d
      • UID PID PPID C STIME TTY TIME CMD
      • root 4127 4116 0 Aug20 pts/1 00:00:00 bash
    • 查看所有容器运行的程序,输出内容太多,我就不粘上了

      • [[email protected] ~]# for i in `docker ps |grep Up|awk ‘{print $1}‘`;do echo \ &&docker top $i; done
  • stats

    • 实时显示容器的资源使用情况
    • Usage:????????docker stats [OPTIONS] [CONTAINER...]
    • Options:

-a, --all


显示所有容器 (默认只显示运行中的容器)


--help


Print usage


--no-stream


只显示第一次执行统计的数据(并且将统计流关闭)

  • inspect

    • 使用方式同镜像操作的inspect
  • export(容器只能通过crate/run的方式获得,而不能导入,只能导出)

    • 比较专业的解释:将文件系统作为一个tar归档文件导出到STDOUT
    • 个人理解:导出当前容器到本地(导出为import命令能加载的镜像),会丢历史和元数据,网上有的人解释为是commit和save命令的组合版.
    • Usage:????????docker export [OPTIONS] CONTAINER
    • Usage:????????docker export CONTAINER > file|URL
    • Options:

--help


Print usage


-o, --output string


(必须指定)将输入内容写到文件,file|URL

  • 看第二种使用方式可能有点懵.不要紧,咱们来看两个实例:

    • e.g:????????docker export -o ./centos.tar e65720ef8e82
    • e.g:????????docker export e65720ef8e82 > ./centos.tar
  • attach

    • 连接到正在运行中的容器。
    • Usage:????????docker attach [OPTIONS] CONTAINER
    • Options:

--detach-keys string


Override the key sequence for detaching a container


--help


Print usage


--no-stdin


Do not attach STDIN


--sig-proxy


Proxy all received signals to the process (default true)

  • 当两个窗口同时连接一个容器,如果一个窗口阻塞,就会造成所有窗口同时阻塞,所以这种方式不推荐.好在官方提供了更好的一种连接方式(exec)
  • exec (我很喜欢用这个)

    • 在运行的容器中执行命令
    • Usage:????????docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

-d, --detach=false


分离模式: 在后台运行


--help=false


Print usage


-i, --interactive=false


即使没有附加也保持STDIN 打开


-t, --tty=false


分配一个伪终端


-u, --user=


使用用户识别访问(用户或者UID登录容器) (format: <name|uid>[:<group|gid>])

  • port

    • 查看容器的端口信息
    • Usage:????????docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
    • 示例:

      • 查看容器的全部映射端口:

        • [[email protected] data]# docker port port1
        • 5001/tcp -> 0.0.0.0:5001
      • 根据容器使用的宿主机端口查看映射

        • [[email protected] data]# docker port port1 5001
        • 0.0.0.0:5001
  • events

    • 从服务器获取实时事件(进行事件监听,打个比方说吧,比如你使用exec访问了某一个容器,就会被监听到,监听的事件可不止容器哦)
    • Usage:????????docker events [OPTIONS]
    • Options:

-f, --filter value


根据条件过滤事件


--help


Print usage


--since string


从指定的时间戳后显示所有事件


--until string


流水时间显示到指定的时间为止

  • Docker会监听如下事件:

    • 容器事件:

      • attach, commit, copy, create, destroy, detach, die, exec_create, exec_detach, exec_start, export, health_status, kill, oom, pause, rename, resize, restart, start, stop, top, unpause, update
    • 镜像事件:

      • delete, import, load, pull, push, save, tag, untag
    • 插件事件(试验):

      • install, enable, disable, remove
    • 数据卷事件:

      • create, mount, unmount, destroy
    • 网络事件:

      • create, connect, disconnect, destroy
    • daemon事件:

      • reload
  • 附带一份解释比较详细的网文:https://www.centos.bz/2017/01/docker-events-get-real-time-events-from-the-server/

?
?

5.容器rootfs命令

  • commit

    • 从容器创建一个新的镜像
    • Usage:????????docker commit [OPTIONS] CONTAINER [NEW_REPOSITORY[:TAG]]
    • OPTIONS:

-a, --author=


作者信息 (e.g., "姓名 <邮箱>")


-c, --change=[]


使用Dockerfile指令来创建镜像


--help=false


Print usage


-m, --message=


提交时的说明文字


-p, --pause=true


在commit时,将容器暂停

  • cp

    • 用于容器与主机之间的数据拷贝
    • Usage:????????docker cp CONTAINER:PATH HOSTDIR|-

      • or
    • Usage:????????docker cp SRC_PATH|- CONTAINER:DEST_PATH
  • diff

    • 检查容器内文件结构的更改
    • Usage:????????docker diff CONTAINER

    ?
    ?

6.其他操作

  • info

    • 查看docker系统信息
    • Usage:????????docker info
  • version

    • 显示docker版本信息
    • Usage:????????docker version
时间: 2024-11-05 02:03:03

Dcoker命令详解的相关文章

docker 命令详解

Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container).(我个人还是喜欢称虚拟机) Docker应用容器相对于 VM 有以下几个优点: 启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久 资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试 性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源 因为VM 的 Hypervi

jar打包命令详解

:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是说,制作一个可执行的 JAR 文件包,就可以像.chm 文档一样双击运行了:而另一种回答,则是使用 JET 来进行编译.但是 JET 是要用钱买的,而且,据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣.所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性.先来看看什么是 JAR 文件包: 1. JAR 文件包 JAR 文件就是 Java Archi

Linux压缩与解压缩命令详解

简介:常用的压缩命令有gzip.bzip2.tar 提示:gzip与bzip2工具不可以对目录做打包压缩操作,gzip与bzip2解压都是用-d参数(decompress=uncompress) tar命令详解: 用法:tar 模式 [选项][路径]... 模式:    -c 创建打包文件 -delete -r --append -t --list内容 -x --extract 选项:    -C --directory -f 打包后的文件名称 -j bzip格式压缩 --remove-file

(转)Linux下PS命令详解

(转)Linux下PS命令详解 整理自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不动态连续: (2) top:如果想对进程运行时间监控,应该用 top 命令: (3) kill 用于杀死进程或者给进程发送信号: (4) 查看文章最后的man手册,可以查看ps的每项输出的含义

Linux上的free命令详解

Linux上的free命令详解 转自: http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html 解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][1] = 24677460 FO[3][2] = 10321516 1          2          3    

Find命令详解

find命令详解 格式 find pathname -options [ -print -exec -ok ... ] 功能 在磁盘中查找文件,并作相应处理 参数 pathname         所查找的目录,可以是相对/绝对路径 options -print 将结果输出到标准输出 -exec 'command' {} \; 对结果执行该参数所给的shell命令 -ok 与-exec作用相同,不过需要用户确认是否执行命令 -name 按照文件名查找 -perm [+-]mode 按照文件权限查

iftop命令命令详解

iftop命令命令详解 作者:尹正杰 在Linux命令中有很多内置命令,和外置命令,但是内部命令的功能毕竟是有限的,比如ifconfig,它就不能看到网卡流量的 实时发送情况,尽管咱们知道可以用watch命令去查看网卡的发送接收流量的情况,但是还是不够细致,因为它仅仅能看到我们的 接受和发送的总流量,因此,我们今天来介绍一个比较好使的实施查看网络流量信息的软件---iftop,其实他的工作模式和top很像. 废话不多说~让我们直接进入正题吧: 1.想必大家都会在linux命令行上敲击ifconf

linux yum命令详解

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装.yum提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记. yum的命令形式一般是如下:yum [options] [command] [package ...]其中的[opti

Linux上命令的使用格式和基础命令详解

一.Linux上命令的使用格式 命令行提示符详解: 用户通过终端的命令行接口来控制操作系统,登陆后如下: [[email protected] ~]# root: 当前登录的用户 @:分隔符 localhost: 当前主机的主机名,非完整格式:此处的完整格式为:localhost.localdomain [[email protected] ~]# hostname localhost.localdomain ~:用户当前所在的目录(current directory),也称为工作目录(work