操作docker容器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作docker容器相关的知识,希望对你有一定的参考价值。

创建容器

docker create

常用参数:

--name:为容器分配一个名字

-v | --volume  :为容器绑定安装一个卷,例如-v /data 会为容器创建一个/data分区出来

-a, --attach


例如:

# docker create -it ubuntu:latest
2434968ec612b085b4b34e93f9858fdc36fb94e2a4527966a14ef93e1a18a00f

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
2434968ec612        ubuntu:latest       "/bin/bash"         3 seconds ago       Created                                      mystifying_proskuriakova


启动容器

docker start

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

# docker start  mystifying_proskuriakova

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                   PORTS               NAMES
2434968ec612        ubuntu:latest       "/bin/bash"         About a minute ago   Up 3 seconds                                 mystifying_proskuriakova


停止容器

docker stop [-t|--time[=10]] [CONTAINER...]

首先向容器发送SIGTERM信号,等待超过一段时间后(默认为10秒)后,再发送SIGKILL信号来终止容器


重启容器

docker restart


进入容器

attach

使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,这时候要进入容器可以使用attach或者exec或者第三方的nsenter工具等。

docker attach [--detach-keys[=[]]] [--no-stdin] [--sig-proxy[=true]]  CONTAINER

--detach-keys[=[]]:指定退出attach模式的快捷键序列,默认是CTRL-p CTRL-q

--no-stdin=true | false:是否关闭标准输入,默认是保持打开。

--sig-proxy=true | false :是否代理收到的系统信息给应用进程,默认为true

如:

##创建并启动一个容器 名为test
# docker run -itd --name test  ubuntu:latest       
3a4a6614acbfc820f5da3983527e3e585946f27393fab17b1ce09adb7c757206

##查看容器进程
[[email protected] ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3a4a6614acbf        ubuntu:latest       "/bin/bash"         4 seconds ago       Up 3 seconds                            test

##连接到该容器
[[email protected] ~]# docker attach test
[email protected]:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

注意:使用attach连接到容器时,如果多个窗口同时使用attach连接到同一个容器时,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作


exec命令

从docker1.3版本开始提供更加方便的exec命令,可以在容器内直接执行任意命令,用法为

docker exec [-d|-detach] [--detach-keys[=[]]] [-i|--interactive] [--privileged] [-t|--tty] [-u|--user[=USER]] CONTAINER COMMAND [ARG...]
  • -i, --interactive=true|false:打开标准输入接受用户输入命令,默认为false;

  • --privileged=true|false: 是否给执行命令最高权限,默认为false

  • -t, --tty=true|false:分配伪终端

  • -u, --user="":执行命令的用户名或ID

例如:

进入到前面创建的容器中

 docker exec -it test /bin/bash

在容器中执行ls命令

[email protected]:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr


删除容器

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

主要支持的选项:

  • -f, --force=false:是否强制终止并删除一个运行中的容器

  • -l, --link=false:删除容器的连接,但保留容器

  • -v, --volumes=false:删除容器挂载的数据卷

默认情况下,docker rm只能删除处于终止状态的容器,如果要删除运行状态的容器,可以使用-f参数,docker会先发送SIGKILL信号给容器,终止其应用,然后删除容器


导入导出容器

有时候需要将容器从一个系统迁移到另一个系统,可以使用导入导出功能

1、导出容器

导出一个已经创建的容器到文件,不管此时容器是否处于运行状态,可以使用docker export 命令,用法:

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

-o:指定导出的tar文件名

例如:

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3a4a6614acbf        ubuntu:latest       "/bin/bash"         41 minutes ago      Up 25 minutes                           test

# docker export -o test_for_run.tar test

# ls
test_for_run.tar

导出之后,就可以将文件上传到其他机器上,使用导入命令导入到系统中,从而实现容器的迁移


2、导入容器

导出的test_for_run.tar文件可以使用import命令导入变成镜像,该命令格式为:

docker import [-c --change[=[]]] [-m|--message[=MESSAGE]] file|URL|-REPOSITORY[:TAG]

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

# docker import test_for_run.tar ubuntu:v1.0       
sha256:2c82ae3a0afe67122ce5fabe397025bc19bffef5c2a6b873098567846c00cfdc

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              v1.0                2c82ae3a0afe        1 second ago        69.8MB
ubuntu              v1                  c4af03e0f787        22 hours ago        87MB
ubuntu              14.04               578c3e61a98c        7 days ago          223MB
ubuntu              latest              113a43faa138        7 days ago          81.1MB
nginx               latest              cd5239a0906a        7 days ago          109MB
centos              7                   49f7960eb7e4        8 days ago          200MB
centos              latest              49f7960eb7e4        8 days ago          200MB
centos              6                   70b5d81549ec        2 months ago        195MB











以上是关于操作docker容器的主要内容,如果未能解决你的问题,请参考以下文章

使用 vs 代码对本机 docker 容器做出反应以发布到主机操作系统上的 android 模拟器

Docker容器学习--1

Docker基础操作

Docker基础操作

Docker容器

Docker——Docker组件Docker安装与启动