Dcoker命令详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]z ~]# 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

设置由代理接受并处理信号,但是SIGCHLDSIGSTOPSIGKILL不能被代理

-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")

  • stopkill的区别:
    • 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命令能加载的镜像),会丢历史和元数据,网上有的人解释为是commitsave命令的组合版.
    • 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

以上是关于Dcoker命令详解的主要内容,如果未能解决你的问题,请参考以下文章

Dcoker命令详解

25-Docker-常用命令详解-dcoker images

24-Docker-常用命令详解-dcoker search

dcoker常用命令

linux 操作系统笔记基础命令

1小时教会你玩转linux 操作系统