查看启动的容器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
查看所有的容器
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db70bb3f6068 centos "/bin/bash" 4 weeks ago Exited (137) 3 weeks ago serene_wright
查看本地的镜像列表
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos-6-x86 latest 8fca9486a39b 7 days ago 341.3 MB
centos_with_net latest 3e8ea8607f08 4 weeks ago 294.9 MB
centos latest 9baab0af79c4 5 weeks ago 196.7 MB
新建容器
[root@localhost ~]# docker create -it centos
5ae70c73655fc8ec1aae20d01995d422025fd93216436214c8008a4656b4717e
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ae70c73655f centos "/bin/bash" 7 seconds ago tender_galileo
db70bb3f6068 centos "/bin/bash" 4 weeks ago Exited (137) 3 weeks ago serene_wright
使用docker create命令新建的容器处于停止状态(stopped),可以使用docker start命令启动。docker start命令语法格式:docker start container_id
新建并启动容器
[root@localhost ~]# docker run -it centos-6-x86 /bin/bash
[root@d1dec1f9d91e /]# ls
bin boot dev etc fastboot home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var
docker run命令等价于先执行docker create命令,再执行docker start命令。
这个命令把两个单独的步骤融合到一起了:
第一步是使用底层的镜像创建容器,这一步可以单独执行docker create命令完成;
第二步是启动容器,这一步可以单独执行docker start命令完成。
- -t标志的作用:让Docker分配一个伪TTY
- -i标志的作用:告诉Docker,这是个交互会话,让标准输入(STDIN)保持打开状态
查看内核
[root@d1dec1f9d91e /]# cat /etc/issue
CentOS release 6.8 (Final)
Kernel \r on an \m
[root@d1dec1f9d91e /]# uname -a
Linux d1dec1f9d91e 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@d1dec1f9d91e /]# exit
exit
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
在容器里查看内核,实际就是宿主机的内核。(所有容器共用同一个内核)
守护态(Daemonized)运行
添加-d参数实现
[root@localhost ~]# docker run -itd centos-6-x86 /bin/bash
359fda80c4ef5c214ffd67bd3c5abdeadfb832ac16849ae0b970d4c81e63e33f
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
359fda80c4ef centos-6-x86 "/bin/bash" 33 seconds ago Up 32 seconds sleepy_mestorf
docker run -d 可以让容器在后台运行,容器启动后返回一个唯一的ID。
进入容器
exec命令
Docker自1.3版本起,提供了exec工具,可直接在容器内运行命令。
[root@localhost ~]# docker exec -it 359 /bin/bash
[root@359fda80c4ef /]#
其中,359是容器ID(CONTAINER ID),可简写为前几个字符。
exec工具语法:docker exec -i -t container_id bash
可以临时打开一个虚拟终端并且exit后容器依然运行着
[root@359fda80c4ef /]# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
359fda80c4ef centos-6-x86 "/bin/bash" 5 minutes ago Up 5 minutes sleepy_mestorf
attach命令
[root@localhost ~]# docker attach 359
[root@359fda80c4ef /]# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker attach命令是Docker自带的命令,其语法为:docker attach container_id
。但使用attach命令有时候并不方便。从上面的操作可以看到,exit退出当前终端时,容器就终止了(stopped)。
获取容器的输出信息
docker logs命令语法:docker logs CONTAINER_ID
获取容器的运行历史信息
停止容器
使用docker stop来终止一个运行中的容器,命令语法:docker stop container_id
它会首先向容器发送SIGTERM信号,等待一段时间后(默认为10秒),再发送SIGKILL信号终止容器。
当Docker容器中指定的应用终结时,容器也自动终止。对于只启动了一个终端的容器,用户通过exit命令或Ctrl+d来退出终端时,所建立的容器立刻终止。
清除容器
如果进程出现异常,通常会想立即退出容器。docker kill命令就是为这种需求准备的。用法与docker stop命令类似。
docker kill container_id
docker kill命令会直接发送SIGKILL信号来强行终止容器。
删除容器
docker rm命令删除处于终止状态(stopped)的容器,docker rmi删除镜像。
命令格式:docker rm [OPTIONS] container_id
OPTIONS说明:
- -f:强行终止并删除一个运行中的容器
导出容器
导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,都可使用docker export命令。
命令格式:docker export container_id > file.tar
[root@localhost ~]# docker export db70 > genesis_centos.tar
[root@localhost ~]# du -sh genesis_centos.tar
273M genesis_centos.tar
可将这些文件传输到其他机器上,在其他机器上通过导入命令实现容器的迁移。
导入容器
先删除container_id为db70的容器
[root@localhost ~]# docker rm db70
db70
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
359fda80c4ef centos-6-x86 "/bin/bash" 4 hours ago Exited (130) 4 hours ago sleepy_mestorf
d1dec1f9d91e centos-6-x86 "/bin/bash" 4 hours ago Exited (0) 4 hours ago stoic_curie
5ae70c73655f centos "/bin/bash" 4 hours ago tender_galileo
导出的文件可以使用docker import命令导入,成为镜像,再用镜像创建容器。
生成file_test的镜像:cat file.tar |docker import – file_test
[root@localhost ~]# cat genesis_centos.tar | docker import - genesis_centos
85bc3a58f1349c173ee4832cbf138720064c99472fa9f2b49531ccef76f97987
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
genesis_centos latest 85bc3a58f134 3 minutes ago 277.6 MB
centos-6-x86 latest 8fca9486a39b 8 days ago 341.3 MB
centos_with_net latest 3e8ea8607f08 4 weeks ago 294.9 MB
centos latest 9baab0af79c4 5 weeks ago 196.7 MB