代码改变世界

Docker学习2---常用命令

2016-05-18 10:20  Qin奋  阅读(159)  评论(0)    收藏  举报

1.docker info

  返回所有容器,镜像的数量。以及Docker基本信息。

2. sudo docker run -i -t ubuntu /bin/bash

  -i 是打开STDIN 标准输入。 -t 告诉Docker为要创建的容器分配一个伪tty终端。 -it 这样新创建的容器才能提供一个交互式shell。

  ubuntu是告诉Docker基于什么镜像来创建容器。上面使用的ubuntu镜像是一个常备镜像,也可以称为 基础镜像--base image.由Docker公司提供,保存在Docker Hub Registry上。

  该命令运行的逻辑:

  2.1 首先检查本地是否存在ubuntu镜像。若无,则会从官方维护的Docker Hub Registry查看是否有该镜像, 并下载保存到本地宿主机中。

  2.2 随后,Docker在文件系统内部用这个镜像创建了一个新容器。该容器拥有自己的网络,IP地址,以及一个用来和宿主机进行通信的交接网络接口。

  2.3 最后,我们告诉Docker在新容器中要运行什么命令。本例中我们在容器中运行了 /bin/bash, 启动了一个Bash shell.

  2.4 当容器创建完毕之后,Docker就会执行容器中的/bin/bash. 这时我们就能看到容器内的shell了。

  (即使没有2.4这个参数,容器也能创建成功,但是创建完以后不会自动打开与容器交互的shell)

 3. docker ps

  显示所有正在运行的容器

      -a 显示所有容器,包括正在运行的和停止的

  -al 显示最后一次运行的容器

4. sudo docker run --name containner_name -i -t ubuntu /bin/bash

    创建容器的时候显示命名容器名称(容器名称不能重复), 否则容器会被随机分配一个名称。如:

 5. docker rm container_name/container ID

    根据容器名称或者容器ID删除容器

  docker rm 'docker ps -a -q' 删除所有容器。-a 列出所有容器, -q只返回容器ID

 6. docker rmi  image id

    根据镜像ID删除镜像

7. docker start container ID/ container name

    根据容器ID/容器名称  启动容器

8. docker stop container ID/ container name

    根据容器ID/容器名称  停止容器(这个命令会向容器发送 SIGTERM信号,如果想快速停止容器,可以使用docker kill命令向容器发送SIGKILL信号)

9. docker attach container ID/ container name

    容器start后, 会沿用创建容器 docker run .......  命令时的参数来运行(拿命令4举例,也就是说  docker start hungry_elison 的时候, 容器的“/bin/bash”已经运行了

  我们只需要附着到上面就可以了。 这就是附着命令。如果退出容器的shell, 容器也会随之停止。

10.docker exec -it container ID/ container name bash

  这是进入容器的另外一个方法

11. docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

 我们在上面的docker run命令使用了 -d参数, 因此Docker会将容器放到后台运行。我们还在容器要运行的命令里使用了一个while循环,该循环会一直打印 helloworld知道容器或进程结束

12. docker logs contaner name

 查看容器的日志

-f  监控容器日志  类似于 tail -f

-ft 监控容器日志并加上时间戳

docker logs --tail 10 daemon_dave 获取日志最后10行内容

docker logs --tail 0 -f daemon_dave 跟踪某个容器的最新日志二不必读取整个日志文件

13.docker top container name/ container ID

  查看容器内的所有进程

14.docker exec -d container_name touch /etc/new_file

   docker exec 命令是Docker 1.3以后才出。可以在容器内部额外启动新程序(从宿主机shell),可以在容器内部运行的进程有两种类型:

  后台任务和交互式任务。该命令就是启动一个后台任务

15.docker exec -t -i contaner_name /bin/bash

     启动容器的bash进程(这个进入的容器的bash和 docker attach 依附到容器的shell不一样的是  从这个bash shell exit不会停止容器,而后者会)

16.docker run --restart=always  --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

     在创建容器的时候,可以设置容器的重启机制。--restart 参数会让Docker检查容器退出的代码,一次来判断是否要重启。 --restart=always
     表示无论退出码是什么都重启。 --restart=on-failure:5 表示退出码为非0时才重启,5为重启次数。 这个机制是Docker1.2.0引进来的。

17. docker inspect container_name

  对容器进行详细检查,然后返回其配置信息,包括名称,网络配置等很多有用的信息

  --format='{{ .State.Running }}' 选定查看结果

18. /var/lib/docker

  该目录存放着Docker镜像,容器以及容器的配置。所有的容器都保存在/var/lib/docker/containers 目录下