zoukankan      html  css  js  c++  java
  • Docker入门学习2 ——容器基本操作

    摘要:介绍Docker容器相关的操作命令。

    知识点:
    run ps start attach exec top stop kill
    inspect rm logs images rmi pull push
    commit build

    注:可以使用docker COMMAND --help来查看COMMAND的详细用法,本文只介绍常用的子集。

    一.启动容器

    启动之前未启动过的容器:

    docker run [-d] [-i] [-t] IMAGE [Command] [Arguments]
    · -d:daemon,启动守护式容器
    · -i:interactive,启动交互式容器
    · -t:tty,允许标准输入输出

    还有一些其他的选项
    · --name=NAME:给容器指定一个别名。否则寻找容器要用ID或系统自带名字,很不友好。

    启动执行一次命令的容器

    docker run ubuntu echo "hello world"

    这样的容器执行一次命令就停止了。

    启动交互式容器

    docker run -i -t ubuntu /bin/bash

    接下来就进入了容器的bash中,可以执行各种命令,好像虚拟机一样。
    此时想要退出容器,可以使用exit退出并停止容器,或【Ctrl+P】+【Ctrl+Q】的escape组合,退出而不停止容器。

    启动守护式容器

    这样的容器能够长期运行,没有会话,适合运行各种服务。下面是启动守护式容器的几种方法:

    1. 在交互式容器中使用【Ctrl+P】+【Ctrl+Q】的命令返回,容器因为没有停止,变为守护式容器。
      如果使用ps命令来查看,会发现这个容器直接被列出。
      此时若想返回这个容器,要使用docker attach 容器名命令,附加到运行的容器中。
    2. 使用run命令来建立:
      docker run -d 镜像名 [command] [args]
      -d的意思是,使用后台的方式启动守护式的容器,执行命令。但是命令运行结束后,容器依然会停止。
      举例:docker run --name=test -d ubuntu "while true ;do echo hello world; sleep 1; done"
      如果想要了解守护式容器中的运行情况,需要使用log命令,后文介绍。

    重新启动已经停止的容器:

    docker start [-i] 容器名
    · -i:以交互的方式重新启动。
    docker start -i NAME

    二.操作容器

    列出容器

    docker ps [-a] [-l]
    · -a:列出所有的容器(包括停止的)
    · -l:列出新创建的容器
    · 默认:只列出未停止的容器

    执行此命令后,docker将列出容器列表的信息。其中那一串很长的无规律串就是容器的ID,而name一列就是你指定或系统指定的容器别名。

    查看某个容器的配置docker inspect ID或者别名

    执行此命令后,docker以json格式列出指定容器很多信息。包括操作系统版本,名称,命令,网络配置等。

    删除容器docker rm 容器名

    只能删除已经停止的容器,不能删除运行中的容器。
    删除后,ps命令会找不到那个容器。

    查看容器的运行情况

    docker logs [-f] [-t] [--tail]

    • -f:--follows=true|false,告诉日志,一直跟踪容器的变化。
    • -t:--timestamps=true|false,为返回的结果时间戳。
    • --tail:选择返回结尾处多少数量的日志。不指定的话,返回所有日志。

    举例:docker logs --tail=5 -tf test查看test容器最后五条命令,带时间戳并且随时更新。

    查看容器中的进程情况

    docker top 容器名

    在运行的程序中启动新的进程

    docker exec [-d] [-i] [-t] 容器名 [command] [args]
    举例:docker exec -i -t test /bin/bash启动一个新的bash进程

    停止容器

    • stop命令:给容器发送一个信号,等待容器的停止。
      docker stop 容器名
    • kill命令:直接停止一个容器
      docker kill 容器名

    三.操作镜像

    镜像存放在仓库(repository)中,而这个仓库存放在仓库(registory)中。
    镜像由Repository和Tag唯一指定,比如ubuntu:14.04,ubuntu:latest,这里14.04和latest就是Tag,ubuntu就是Repository。如果没有指定Tag,则会使用默认的latest。

    查看本地镜像列表

    docker images [-a] [-f] [-q] [--no-trunc]

    • -a:--all,列出所有
    • -f:--filter,指定过滤器
    • -q:--quiet,只列出ID
    • --no-trunc:不截断ID
    • 可以使用Repository的名字作为参数,它会返回对应名字的所有镜像。

    查看特定镜像信息

    docker inspect 镜像仓库名+Tag名,或者镜像ID

    删除镜像

    docker rmi [-f] [--no-prune=false] 镜像仓库名+Tag名,或者镜像ID

    • -f:--force,强制删除。如果有容器在镜像基础上生成,必须用这个选项。
    • --no-prune:不要删除未打标签的父镜像。

    如果一个镜像ID对应了多个镜像标签,那么使用Image ID才可以删除镜像,如果使用仓库名+标签,只能删除对应的标签。
    如果想要删除镜像仓库下的多个镜像,可以用如下语法:
    docker rmi $(docker images -q ubuntu)

    在远程镜像仓库搜索镜像

    docker search [options] 镜像仓库名

    • --automated=false:只显示自动构建的镜像
    • -s:--stars X:只显示不小于X星级的镜像

    注意:search命令最多只能显示25个结果。搜索结果后,将返回镜像的信息(星级,是否官方,ID,标签...)

    把镜像下载到本地

    docker pull [options] NAME [:TAG]

    • -a:--all-tags=false|true,把所有打了标签的镜像都下载到本地。

    把镜像推送到远程

    docker push NAME
    需要提供用户名,密码和邮箱。
    Docker不会上传整个镜像,而只会上传修改的部分。
    镜像默认是公共的,可以在Docker Hub转为私有。

    构建镜像

    镜像的构建非常重要。我们可以自定义一个容器,安装好自己需要的一些文件,然后构建成镜像以方便复用。

    1.通过容器构建

    docker commit [options] 容器名 [Repository[:TAG]]

    • -a:指定镜像的作者,一般是作者名和联系方式
    • -m:记录镜像构建的信息
    • -p:正常在构建镜像时会使容器暂停,使用-p告诉容器不要暂停

    2.通过dockerfile文件来构建

    首先要创建dockerfile文件,它是一种包含一系列命令的文本文件。
    举例:

    #First Dockerfile
    FROM ubuntu:14.04
    MAINTAINER RaidriarB "raidriarb@foxmail.com"
    RUN apt-get update
    RUN apt-get install nginx
    EXPOSE 80
    

    然后执行build的命令来构建镜像。
    docker build [options] path|url

    • -t:指定镜像的标签
    • 还有一些选项:--force-rm --no-cache --pull --quiet --rm
    • path要指定dockerfile的文件目录。

    docker会在build的过程中,每一步都生成一个ID,这就是构建时的中间层镜像。如果使用ps命令查看,会发现他们的标签和仓库名都是none。如果想要取消构建中间层镜像,只需要使用--quiet或者-q选项。
    dockerfile类似批处理文件,是一种非常强大的构建镜像方式。后面会详细介绍dockerfile的功能。

  • 相关阅读:
    64最长和谐子序列(594)
    63找到字符串中所有字母异位词(438)
    62有效的数独(36)
    10.10
    9.27作业
    9.27
    9.26
    9.25
    9.18学习内容
    9.17作业
  • 原文地址:https://www.cnblogs.com/RaidriarB/p/11616907.html
Copyright © 2011-2022 走看看