操作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容器的主要内容,如果未能解决你的问题,请参考以下文章