4.Docker之容器的使用
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器,Docker 容器通过 Docker 镜像来创建。
所以我们要创建容器和使用容器之前必须先有镜像。
关于Docker镜像的来源主要有两种方式:
- ①.基于dockerfile自定义一个Docker镜像;
- ②.从远程仓库获取Docker镜像
注意:使用dockerfile自定义一个Docker镜像后面会有章节详细描述,这里不作说明 !
一、镜像的获取
1.首先,列出镜像列表
由于本地还没有相关的镜像,所以这里为空
2.查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/,也可以使用 docker search 命令来搜索镜像。
比如我们需要一个tomcat的镜像来作为我们的web容器,可以通过 docker search 命令搜索 tomcat 来寻找适合我们的镜像。
3.拉取镜像
根据上面search的镜像,可以使用 docker pull 命令来下载它,我们决定选择第一个官方镜像:
4.再次查看本地镜像列表
各个列名说明:
REPOSITORY:表示镜像的仓库源;TAG:镜像的标签;IMAGE ID:镜像ID;CREATED:镜像创建时间;SIZE:镜像大小
5.根据镜像版本拉去镜像
上面我们是直接选择官方版本拉取,而且拉取的会是最新的tomcat版本,假设我要拉取旧版本,例如只需要tomcat7,那么如何拉取?
我们可以直接去在线仓库查询版本,地址:https://hub.docker.com,比如我查询的关键字是tomcat,那么就会列出相关的版本镜像:
接着,找到是否有tomcat 7这个版本:
发现是有tomcat 7这个版本,所有我们可以直接拉去tomcat:7,冒号后面的数字等就是版本信息,我们试着拉取一下:
再次查看本地镜像仓库:
发现TAG也存在7这个版本的了。
注意:由于使用容器需要镜像,所以这里对镜像的描述只是简单的搜索和拉取,后面有章节会详细说明镜像的使用!!!
二、使用容器
1.Docker客户端命令选项
①.使用docker命令来查看所有客户端命令选项
②.除此之外,我们可以使用docker command --help更深入的了解某一个命令的详细用法,比如启动容器的指令:
而针对OPTIONS和COMMAND以及ARG也有相应的描述,比如:
列表太多,就截图部分,详细的可以自己去查看。
2.启动容器
①.首先,我们查看本地镜像
②.我们根据tomcat7这个镜像启动容器
说明1:docker run是启动容器的命令,后面的-d是在后台运行,-p是指定宿主机的端口和容器的端口绑定,--name后面加一个名字代表容器的名称,663a81dd60a7是代表使用哪个镜像来启动容器。
说明2:宿主机代表的是容器所在的外层环境,即Centos;而8080端口是因为tomcat默认绑定的端口是8080,我们将容器的8080端口映射到宿主机的9999端口,所以我们可以在网页上通过访问宿主机的ip+端口的形式从而访问到容器的web容器,即tomcat。
所以,我们试着访问一下:
说明3:再来看看,当我们启动容器后,返回的一串很长的字符串是什么:
首先,可以使用docker ps可以查看当前正在运行的容器,然后和启动容器后返回的字符串对比下:
红色方框圈起来的地方,有部分是完全相同的,因为容器的id是唯一的,所以可以推断启动容器后返回的是容器的id,只是我们查看正在运行的容器,能看到容器ID仅仅是部分。
3.查看运行的容器和所有容器
我们可以使用docker ps来查看正在运行的docker容器:
列明说明:CONTAINER ID是容器的ID,IMAGE是镜像的ID,PORTS代表本机9999端口映射到容器中的8080端口,NAMES是容器的名称。
我们还可以使用docker ps -a查看所有容器,包含在运行和没有运行的,我们再创建启动一个容器,然后关闭掉一个,再来查看所有容器,会比较明显:
再来查看正在运行的容器有哪些:
由上图可见,目前已经两个容器运行着;接着我们关掉myFirstDocker这个容器,可以使用docker stop 容器名称/容器ID来关闭容器:
4.网络端口的绑定以及快捷方式
从前面,我们指定可以使用-p(小写)来执行宿主机与容器端口的绑定,我们可以使用-P(大写,不用具体指定端口,宿主机会自动绑定到容器的端口)来绑定容器:
再来尝试访问宿主机的IP+32768端口(该端口是宿主机提供,不是我们手动指定):
除此之外,docker还提供了另一个快捷方式:docker port,使用 docker port 可以查看指定 (ID或者名字)容器的某个确定端口映射到宿主机的端口号。
上面我们创建的容器ID为:adc35632515b名字为:docker2,我可以使用docker port adc35632515b或docker port docker2来查看容器端口的映射情况:
5.日志查看
使用docker logs [ID或者名字]命令可以查看容器内部的标准输出:
而且,-f:让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出,例如:
6.查看docker进程
使用docker top 容器id或名称可以查看docker进程
7.停止docker容器
可以使用docker stop 容器名称或id关闭容器:
8.重启容器
不管是否启动的容器都可以通过docker restart 容器名称或id来启动或重启docker容器:
9.移除容器
使用docker rm 容器名称或id来移除容器,但要注意的是,要移除前必须先停止容器,否则会报以下错误: