Docker containers
Docker containers are similar to a directory. A Docker container holds everything that is needed for an application to run. Each container is created from a Docker image. Docker containers can be run, started, stopped, moved, and deleted. Each container is an isolated and secure application platform. Docker
参见https://docs.docker.com/v1.4/introduction/understanding-docker/
简单来说容器是镜像运行的一个实例,它带有额外的可写文件层。
1.新建容器docker create
[root@iZ25tr0o247Z ~]# docker create -it tanwei/centos:6.6
a07b9c8c5c056afa8e910d295509887c1203c5a0dffe3fafd1e6d4792d59eb72
查看所有容器,刚创建好的容器状态为空
[root@iZ25tr0o247Z ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a07b9c8c5c05 tanwei/centos:6.6 "/bin/bash" 19 seconds ago
2.新建并启动容器docker run,如果加上-d参数就是以daemonnized方式运行容器。
3.启动容器docker start(如果没有-i,可以先start后attach进容器)
[root@iZ25tr0o247Z ~]# docker start -i a07b9c8c5c05
a07b9c8c5c05
[root@a07b9c8c5c05 /]#
启动后的容器状态为Up
[root@iZ25tr0o247Z ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a07b9c8c5c05 tanwei/centos:6.6 "/bin/bash" 6 minutes ago Up 54 seconds
在容器中我们可以用exit退出容器
[root@a07b9c8c5c05 /]# exit
exit
退出后再次查看容器状态为Exited
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a07b9c8c5c05 tanwei/centos:6.6 "/bin/bash" 8 minutes ago Exited (0) 25 seconds ago
4.终止容器docker stop
[root@iZ25tr0o247Z ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a07b9c8c5c05 tanwei/centos:6.6 "/bin/bash" 13 minutes ago Up 5 seconds romantic_mayer
[root@iZ25tr0o247Z ~]# docker stop a07b9c8c5c05
a07b9c8c5c05
stop默认会在10秒钟后发磅SIGKILL信号终止容器,docker kill会直接强行终止容器。
5.重启容器docker restart
6.进入容器docker attach,可以使用docker exec执行命令更方便。
[root@iZ25tr0o247Z ~]# docker exec -it a07b9c8c5c05 /bin/bash
[root@a07b9c8c5c05 /]#
7.删除容器docker rm
[root@iZ25tr0o247Z ~]# docker rm a07b9c8c5c05
Error response from daemon: You cannot remove a running container. Stop the container before attempting removal or use -f
FATA[0000] Error: failed to remove one or more containers
删除运行时容器需要加-f参数,或者先stop停止窗口,再rm删除。删除完成后docker ps -a中就没有了刚删除的容器。
8.导出容器docker export,运行中的容器也可以导出
[root@iZ25tr0o247Z ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5cdc9cfe9b70 centos:6.6 "/bin/bash" 2 hours ago Up 10 seconds
[root@iZ25tr0o247Z ~]# docker export 5cdc9cfe9b70 > centos_6.6_bak.tar
[root@iZ25tr0o247Z ~]# ll
total 247954432
-rw-r--r-- 1 root root 247954432 Apr 7 15:32 centos_6.6_bak.tar
9.导入容器docker import ,最终成为镜像
[root@iZ25tr0o247Z ~]# cat centos_6.6_bak.tar | docker import - test/centos:6.6
794583e66f588f20691dffe4e572d51dc49ebca9f083f6d10a8ffe4bb3c2f539
[root@iZ25tr0o247Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test/centos 6.6 794583e66f58 37 seconds ago 237.8 MB
import与load的区别是容器快照丢弃所有历史记录和元数据信息。