美文网首页Docker
Docker容器常用命令

Docker容器常用命令

作者: 王勇1024 | 来源:发表于2019-05-05 21:03 被阅读1次

容器是Docker的核心概念。容器是镜像的运行实例,所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层。

创建容器

  1. 新建容器
$ docker create -it ubuntu:latest
700fc62c3c6f388dd22e5761c87e4ba639c2f74dde7740fa61c71448b2ea0db1
$ docker ps -a | grep 'ubuntu'
700fc62c3c6f     ubuntu:14.04   "/bin/bash"    45 seconds ago      Created   sharp_sutherland

使用docker create命令新建的容器处于停止状态,可以使用docker start命令来启动它。

  1. 启动容器
$ docker start 700fc62c3c6f
700fc62c3c6f

此时,通过docker ps命令可以查看一个运行中的容器

  1. 新建并启动容器
    除了创建容器后通过docker start命令来启动,也可以直接新建并启动容器。所需要的命令为docker run,等价于先执行docker create,在执行docker start
$ docker run ubuntu:14.04 /bin/echo 'Hello World'
Hello World

当利用docker run来创建并启动容器时,Docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从共有仓库下载;
  • 利用镜像创建一个容器,并启动该容器;
  • 分配一个文件系统给容器,并在制度的镜像层外面过早一层可读写层;
  • 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中;
  • 从网桥的地址池配置一个IP地址给容器;
  • 执行用户指定的应用程序;
  • 执行完毕后容器被自动终止。
  1. 交互式运行
$ docker run -it ubuntu:14.04 /bin/bash
root@137847304fd5:/#

其中,-t选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标志输入上,-i则让容器的标准输入保持打开。
可以按control+d或输入exit命令来退出容器。

  1. 后台运行
    更多的时候,需要让Docker容器在后台以守护态形式运行。此时,可以通过-d参数来实现。
$ docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo Hello World; sleep 1; done"
e9459f50630192f94f0dbb5bf2c4ad1a8db2eff21ca10996aefb474148b336b1

终止容器

$ docker stop 700fc62c3c6f
700fc62c3c6f

首先向容器发送SIGTERM信号,等待一段超时时间(默认为10秒)后,再发送SIGKILL信号来终止容器。
注意:docker kill 命令会直接发送 SIGKILL 信号来强制终止容器。

$ sudo docker ps -a|grep 'ubuntu'
700fc62c3c6f    ubuntu:14.04    "/bin/bash"    25 minutes ago      Exited (0) 3 seconds ago      sharp_sutherland

进入容器

在使用-d参数时,容器启动会进入后台,用户无法看到容器中的信息,也无法进行操作。
这个时候如果需要进入容器进行操作,有多种方法,包括使用官方的attachexec命令,以及第三方的nsenter工具等。下面分别介绍一下:

  1. attach命令
    attach是Docker自带的命令,命令格式为:
docker attach [--detach-keys[=[]]] [--no-stdin] [--sig-proxy[=true]] CONTAINER

支持三个主要选项:

  • --detach-keys[=[]]:指定退出attach模式的快捷键序列,默认是control+p或control+q;
  • --no-stdin=true|false:是否关闭标准输入,默认是保持打开;
  • --sig-proxy=true|false:是否代理收到的系统信号给应用程序,默认是true。

但是,实验attach命令有时候并不太方便。当多个窗口同时使用attach命令连到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其它窗口也无法执行操作了。
docker attach 命令适用于查看容器标准输出。

  1. exec命令
    Docker从1.3.0版本起提供了一个更加方便的exec命令,可以在容器内直接执行任意命令。该命令的基本格式为:
docker exec [-d|--detach] [--detach-keys[=[]]] [-i|--interactive] [--privileged] [-t|--tty] [-u|--user[=USER]] CONTAINER COMMAND [ARGS...]

比较重要的参数有:

  • -i, --interactive=true|false:打开标准输入接受用户输入命令,默认为false;
  • --privileged=true|false:是否给执行命令以高权限,默认为false;
  • -t, --tty=true|false:分配伪终端,默认为false;
  • -u, --user="":执行命令的用户名或ID。
$ docker exec -it fde815ede391 /bin/bash
root@fde815ede391:/#

通过exec命令对容器执行操作是最为推荐的方式。

  1. nsenter工具
    为了适应nsenter连接到容器,还需要找到容器进行的PID,可以通过下面的命令获取:
$ PID=`docker inspect --format "{{.State.Pid}}" fde815ede391`

通过这个PID,就可以连接到这个容器:

$ nsenter --target $PID --mount --uts --ipc --net --pid
[root@103-18-41-sh-100-D10 /]# ls

删除容器

可以使用docker rm 命令来删除处于终止或退出状态的容器,命令格式为:

docker rm [-f|--force] [-l|--link] [-v|--volumes] CONTAINER [CONTAINER...]

主要支持的选项包括:

  • -f, --force=false:是否强制终止容器并删除一个运行中的容器;
  • -l, --link-false:删除容器的连接,但保留容器;
  • -v, --volumes=false:删除容器挂载的数据卷。

如果删除一个正在运行中的容器,会抛出如下错误信息:

$ docker rm fde815ede391
Error response from daemon: You cannot remove a running container fde815ede3919b8749d7c131c430f41657a2f5c173a8bf9dc3c6e9623ab2875b. 
Stop the container before attempting removal or force remove

导入和导出容器

某些时候,需要将容器从一个系统迁移到另一个系统,此时可以通过Docker的导入和导出功能。

1.导出容器
导出容器是指导出一个已经创建的容器到一个文件,不管此时容器是否处于运行状态,命令格式为:

docker export [-o|--output[=""]] CONTAINER

其中,-o选项指定了导出的tar文件名,也可以直接通过重定向来实现。

$ docker export -o test_for_run.tar fde815ede391
  1. 导入容器
    导出的文件又可以通过docker import命令导入变成镜像,命令格式为:
docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|URL|-[REPOSITORY[:TAG]]

用户可以通过-c, --change=[]选项在导入到同时执行对容器进行修改的Dockerfile指令。

 $ docker import test_for_run.tar  test/ubuntu:v1.0
sha256:2f62da8d0bc4e94e18ebf28e345569bae61a875beb6ee1411aeca5d001b4f981

$ docker images|grep 'ubuntu'
test/ubuntu     v1.0     2f62da8d0bc4   29 seconds ago    175MB

docker export命令生成的镜像会丢弃所有的历史记录和元数据信息(仅保留容器当时的快照状态),而docker save将保留完整记录,体积也更大。

相关文章

  • docker常用命令

    docker常用命令: 查看容器状态,docker stats 进入容器,docker e...

  • Docker相关概念

    Docker核心技术 容器镜像 docker架构 docker compose容器部署 docker常用命令帮助命...

  • docker常用命令

    一、 docker帮助命令 二、docker 镜像(images)常用命令 三、docker 容器常用命令

  • docker常用命令

    常用命令 docker start 容器名/容器ID //启动容器 docker ps -a //查看所有容器 d...

  • 容器的知识介绍

    什么是容器? 容器的优势? 镜像常用命令: 容器常用命令: docker run参数 dockerfile指令:

  • Docker常用命令

    Docker常用命令 镜像 容器

  • Docker常用命令

    docker常用命令 进入容器 docker run -it xxxxx:1.1 /bin/bash 构建容器 d...

  • docker常用命令总结

    参考链接 Docker 常用命令与操作 docker常用命令总结——安装、镜像、容器基本操作

  • Docker基础总结

    Docker常用命令docker verision --> 版本docker ps —> 查看当前容器docke...

  • Docker 常用命令

    常用命令详解 docker ps 查看容器正在运行状态 docker ps -a 查看所有容器 docker st...

网友评论

    本文标题:Docker容器常用命令

    本文链接:https://www.haomeiwen.com/subject/iefkoqtx.html