容器简单来讲是镜像的一个运行实例,所不同的是它带有额外的可写文件层。
1、创建容器:
Docker容器十分轻量级,我们可以随时创建或删除容器;
(1)、新建容器:
使用docker create命令新建一个容器:
$ docker create -it ubuntu:latest
使用docker create命令新建的容器出于停止状态,可以使用docker start命令来启动;
(2)、新建并启动容器:
容器启动有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。所需命令主要为docker run,等价于先执行docker create,再执行docker start命令;
$ docker run -ti ubuntu /bin/echo 'Hello Docker'
利用docker run来创建并启动容器时,Docker在后台运行的标准操作包括:
I、检查本地是否存在指定的镜像,不存在就从公有仓库下载;
II、利用镜像创建并启动一个容器;
III、分配一个文件系统,并在只读的镜像层外面挂载一层可读写层;
IV、从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
V、从地址池配置一个IP地址给容器;
VI、执行用户指定的应用程序;
VII、执行完毕后容器被终止;
$ docker run -t -i ubuntu:18.04 /bin/bash
其中,-t选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开;
(3)、守护态运行:
要让Docker容器在后台以守护态运行,可通过添加-d参数来实现;
$ docker run -d ubuntu /bin/sh -c "while true;do echo hello docker;sleep 1;done"
要获取容器的输出信息,可通过docker logs命令;
2、终止容器:
可以使用docker stop来终止一个运行中的容器,命令格式为docker stop[-t|–time[=10]],它会首先向容器发送SIGTERM信号,等待一段时间后再发送SIGKILL信号终止容器;
//停止容器
$ docker stop CONTAINER_ID
//显示所有处于终止状态的容器
$ docker ps -a -q
//启动终止的容器
$ docker start CONTAINER_ID
//重新启动容器(运行中的会先终止再启动)
$ docker restart CONTAINER_ID
3、进入容器:
在使用-d参数时,容器启动后会进入后台,若想进入容器操作,可使用docker attach命令、docker exec命令以及nsenter工具等;
1、attach命令(Docker自带命令):
$ docker attach CONTAINER_ID
attach命令有时并不方便,当多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了;
2、exec命令:
$ docker exec -ti CONTAINER_ID
3、nsenter工具:
暂时忽略
4、删除容器:
可以使用docker rm命令删除终止状态的容器,命令格式为docker rm [OPTIONS] CONTAINER [CONTAINER…],支持的选项包括:
(1)、-f,–force=false 强行终止并删除一个运行中的容器;
(2)、-l,–link=false 删除容器的连接,但保留容器;
(3)、-v,–volumes=false 删除容器挂在的数据卷;
$ docker ps -a
$ docker rm CONTAINER
$ docker rm -f CONTAINER
5、导入和导出容器:
(1)、导出容器:
导出容器是指导出一个已经创建的容器到文件,不管此时这个容器是否处于运行状态,使用docker export命令,格式docker export CONTAINER;
可将导出文件传输到其他机器,在其他机器上通过导入命令实现容器迁移;
$ docker export CONTAINER_ID;
(2)、导入容器:
导出的文件又可以使用docker import命令导入,成为镜像;
$ cat test_for_ubuntu.tar | docker import - test/ubuntu:18.04
参考《Docker技术入门及实战》