长期支持版本

    社区创新版本

      镜像管理

      build

      用法:docker build [OPTIONS] PATH | URL | -

      功能:使用指定路径中的Dockerfile生成构建一个新的image

      选项:常用选项参数如下,更多选项可以查看docker help build

      表 4 参数说明

      参数

      参数含义

      --force-rm=false

      即使没有构建成功也删除构建过程中生成的容器

      --no-cache=false

      构建image的过程中不使用缓存

      -q, --quiet=false

      禁止构建过程中产生的冗余信息

      --rm=true

      构建成功后删除过程中生成的容器

      -t, --tag=""

      指定构建生成的image的tag名

      --build-arg=[]

      设置构建参数

      --label=[]

      镜像相关参数设置,各参数意义与create类似

      --isolation

      指定容器的隔离方法

      --pull

      构建时总是尝试获取最新版本镜像

      Dockerfile介绍:

      Dockerfile是一个镜像的表示,可以通过Dockerfile来描述构建镜像的步骤,并自动构建一个容器,所有的 Dockerfile 命令格式都是:INSTRUCTION arguments

        

      FROM命令

      格式:FROM <image> 或 FROM <image>:<tag>

      功能:该命令指定基本镜像,是所有Dockerfile文件的第一个命令,如果没有指定基本镜像的tag,使用默认tag名latest。

        

      RUN命令

      格式:RUN <command> (the command is run in a shell - `/bin/sh -c`) 或者

      RUN ["executable", "param1", "param2" ... ] (exec form)

      功能:RUN命令会在上面FROM指定的镜像里执行指定的任何命令,然后提交(commit)结果,提交的镜像会在后面继续用到。RUN命令等价于:

      docker run image command

      docker commit container_id

        

      注释

      使用"#"注释

        

      MAINTAINER命令

      格式:MAINTAINER <name>

      功能:命令用来指定维护者的姓名和联系方式

        

      ENTRYPOINT命令

      格式:ENTRYPOINT cmd param1 param2 ... 或者ENTRYPOINT ["cmd", "param1", "param2"...]

      功能:设置在容器启动时执行命令

        

      USER命令

      格式:USER name

      功能:指定 memcached 的运行用户

        

      EXPOSE命令

      格式:EXPOSE <port> [<port>...]

      功能:开放镜像的一个或多个端口

        

      ENV命令

      格式:ENV <key> <value>

      功能:设置环境变量,设置了后,后续的RUN命令都可以使用

        

      ADD命令

      格式:ADD <src> <dst>

      功能:从src复制文件到container的dest路径,<src> 是相对被构建的源目录的相对路径,可以是文件或目录的路径,也可以是一个远程的文件url,<dest> 是container中的绝对路径

        

      VOLUME命令

      格式:VOLUME ["<mountpoint>"]

      功能:创建一个挂载点用于共享目录

        

      WORKDIR命令

      格式:workdir <path>

      功能:配置RUN, CMD, ENTRYPOINT 命令设置当前工作路径可以设置多次,如果是相对路径,则相对前一个 WORKDIR 命令

        

      CMD命令

      格式:CMD ["executable","param1","param2"] (like an exec, preferred form)

      CMD ["param1","param2"] (as default parameters to ENTRYPOINT)

      CMD command param1 param2 (as a shell)

      功能:一个Dockerfile里只能有一个CMD,如果有多个,只有最后一个生效

        

      ONBUILD命令

      格式:ONBUILD [其它指令]

      功能:后面跟其它指令,比如 RUN、COPY 等,这些指令,在当前镜像构建时并不会被执行,只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行

      下面是Dockerfile的一个完整例子,该Dockerfile将构建一个安装了sshd服务的image

      FROM busybox
      ENV  http_proxy http://192.168.0.226:3128
      ENV  https_proxy https://192.168.0.226:3128
      RUN apt-get update && apt-get install -y openssh-server
      RUN mkdir -p /var/run/sshd
      EXPOSE 22
      ENTRYPOINT /usr/sbin/sshd -D
      

      示例:

      1. 以上文的Dockerfile构建一个image

        $ sudo docker build -t busybox:latest
        
      2. 通过以下命令可以看到这个生成的image:

        docker images | grep busybox
        

      history

      用法:docker history [OPTIONS] IMAGE

      功能:显示一个image的变化历史

      选项:

      -H, --human=true

      --no-trunc=false 不对输出进行删减

      -q, --quiet=false 只显示ID

      示例:

      $ sudo docker history busybox:test
      IMAGE               CREATED             CREATED BY          SIZE                COMMENT
      be4672959e8b        15 minutes ago      bash                23B
      21970dfada48        4 weeks ago                             128MB               Imported from -
      

        

      images

      用法:docker images [OPTIONS] [NAME]

      功能:列出存在的image,不加选项时不显示中间的image

      选项:

      -a, --all=false 显示所有的镜像,

      -f, --filter=[] 指定一个过滤值(i.e. 'dangling=true')

      --no-trunc=false 不对输出进行删减

      -q, --quiet=false 只显示ID

      示例:

      $ sudo docker images
      REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
      busybox             latest              e02e811dd08f        2 years ago         1.09MB
      

        

      import

      用法:docker import URL|- [REPOSITORY[:TAG]]

      功能:把包含了一个rootfs的tar包导入为镜像。与docker export相对应。

      选项:无

      示例:

      从上文介绍的docker export命令时导出的busybox.tar用docker import命令生成一个新的image

      $ sudo docker import busybox.tar busybox:test
      sha256:a79d8ae1240388fd3f6c49697733c8bac4d87283920defc51fb0fe4469e30a4f
      $ sudo docker images
      REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
      busybox             test                a79d8ae12403        2 seconds ago       1.3MB
      

        

      load

      用法:docker load [OPTIONS]

      功能:把docker save出来的tar包重新加载一个镜像。与docker save相对应。

      选项:

      -i, --input=""

      示例:

      $ sudo docker load -i busybox.tar
      Loaded image ID: sha256:e02e811dd08fd49e7f6032625495118e63f597eb150403d02e3238af1df240ba
      $ sudo docker images
      REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
      busybox             latest              e02e811dd08f        2 years ago         1.09MB
      

      login

      用法:docker login [OPTIONS] [SERVER]

      功能:登录到一个镜像服务库,没有指定server时,默认登录到https://index.docker.io/v1/

      选项:

      -e, --email="" Email

      -p, --password="" 密码

      -u, --username="" 用户名

      示例:

      $ sudo docker login
      

      logout

      用法:docker logout [SERVER]

      功能:从一个镜像服务器中登出,没有指定server时,默认登出https://index.docker.io/v1/

      选项:无

      示例:

      $ sudo docker logout
      

      pull

      用法:docker pull [OPTIONS] NAME[:TAG]

      功能:从一个镜像库(官方的或私有的)中拉取一个镜像

      选项:

      -a, --all-tags=false 下载一个镜像仓库的所有镜像(一个镜像仓库可以被打多个标签,比如一个busybox镜像库,可能有多个标签如busybox:14.04,busybox:13.10,busybox:latest等,使用-a选项后,将所有标签的busybox镜像拉取下来)

      示例:

      1. 从官方镜像库中拉取nginx镜像

        $ sudo docker pull nginx
        Using default tag: latest
        latest: Pulling from official/nginx
        94ed0c431eb5: Pull complete
        9406c100a1c3: Pull complete
        aa74daafd50c: Pull complete
        Digest: sha256:788fa27763db6d69ad3444e8ba72f947df9e7e163bad7c1f5614f8fd27a311c3
        Status: Downloaded newer image for nginx:latest
        

        拉取镜像时会检测所依赖的层是否存在,如果存在就用本地的层。

      2. 从私有镜像库中拉取镜像

        从私有镜像库中拉取Fedora镜像,比如所使用的私有镜像库的地址是192.168.1.110:5000:

        $ sudo docker pull 192.168.1.110:5000/fedora
        

      push

      用法:docker push NAME[:TAG]

      功能:将一个image推送到镜像库中

      选项:无

      示例:

      1. 将一个image推送到私有镜像库192.168.1.110:5000中

      2. 将要推送的镜像打标签(docker tag命令将在下文介绍),本例中要推送的镜像为busybox:sshd

        $ sudo docker tag ubuntu:sshd 192.168.1.110:5000/busybox:sshd
        
      3. 将打好标签的镜像推送到私有镜像库中

        $ sudo docker push 192.168.1.110:5000/busybox:sshd
        

        推送的时候会自动检测所依赖的层在镜像库中是否已存在,如果以存在,跳过该层。

      rmi

      用法:docker rmi [OPTIONS] IMAGE [IMAGE...]

      功能:删除一个或多个镜像,如果一个镜像在镜像库中有多个标签,删除镜像的时候只是进行untag操作,当删除的是只有一个标签的镜像时,将依次删除所依赖的层。

      选项:

      -f, --force=false 强制删除image

      --no-prune=false 不删除没有标签的父镜像

      示例:

      $ sudo docker rmi 192.168.1.110:5000/busybox:sshd
      

      save

      用法:docker save [OPTIONS] IMAGE [IMAGE...]

      功能:保存一个image到一个tar包,输出默认是到STDOUT

      选项:

      -o, --output="" 输出到文件中而不是STDOUT

      示例:

      $ sudo docker save -o nginx.tar nginx:latest
      $ ls
      nginx.tar
      

      用法:docker search [OPTIONS] TERM

      功能:在镜像库中查找特定的镜像

      选项:

      --automated=false 显示自动构建的image

      --no-trunc=false 不对输出进行删减

      -s, --stars=0 只显示特定星级以上的image

      示例:

      1. 在官方镜像库中搜寻nginx

        $ sudo docker search nginx
        NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
        nginx                             Official build of Nginx.                        11873               [OK]
        jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   1645                                    [OK]
        richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   739                                     [OK]
        linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   74
        bitnami/nginx                     Bitnami nginx Docker Image                      70                                      [OK]
        tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp…   51                                      [OK]
        

          

      2. 在私有镜像库中搜寻busybox,在私有镜像库中搜寻时要加上私有镜像库的地址

        $ sudo docker search 192.168.1.110:5000/busybox
        

      tag

      用法:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

      功能:将一个镜像打标签到一个库中

      选项:

      -f, --force=false 如果存在相同的tag名将强制替换原来的image

      示例:

      $ sudo docker tag busybox:latest busybox:test
      

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份