内容正文:
课程名称
第4章 Docker容器
计划学时
4学时
内容分析
本章主要介绍容器运行、进入容器、停止和删除容器、容器资源限制
教学目标
与教学要求
要求学生能够熟练使用Docker帮助手册、理解容器启动原理、熟练掌握容器基本命令的用法、熟悉容器的不同运行状态
教学重点
容器运行、进入容器、停止和删除容器、容器资源限制
教学难点
停止和删除容器、容器资源限制
教学方式
课堂讲解及ppt演示
教
学
过
程
第一课时
(容器运行、进入容器)
回顾内容
1.介绍本书,引出本课时的主题
镜像是构建容器的蓝图,Docker以镜像为模板,构建出容器。容器在镜像的基础上被构建,也在镜像的基础上运行,容器依赖于镜像。本章将对容器的运行及相关内容进行详细讲解。
2.明确学习目标
(1) 能够了解容器运行
(2) 能够掌握容器的三种状态
(3) 能够掌握docker attach与docker exec
知识讲解
· 容器运行
在Docker官方网站可以查询与Docker相关的资料以及帮助手册,但是内容都是英文的,可能会对一些用户造成困扰。而且,国内用户访问Docker官方网站特别缓慢。所以这里向读者推荐Docker中文社区,这是一个中文的Docker资料库,其中有很多整理好的技术文档,Docker中文社区的官方介绍是:系统整理Docker官方的教程和手册、报道Docker相关动态和进展、整合网络上其他社区相关资源。
当然用户也可以将自己在学习过程中整理的技术文档上传与大家分享。
使用docker run命令可以运行容器,该命令底层其实是docker create与docker start两条命令的结合体,运行容器需要先基于镜像创建一个容器,然后启动容器,完成一个容器的运行,如图所示。
1.自动重启的容器
下面运行一个正常的容器,示例代码如下:
2.自定义名称的容器
下面运行一个自定义名称的容器,示例代码如下:
从示例中可以看到,创建容器时添加了-name参数来定义容器名称。创建之后容器的名字就是指定的“test”。
3.开启端口的容器
下面创建一个开启80端口的容器,示例代码如下:
参数冒号之前是宿主机端口号,冒号之后是容器的端口号,表示宿主机的80端口映射到容器的80端口上。
从示例中可以看到,容器正在运行,并且可以看到开启了80端口。
4.与宿主机共享目录的容器
首先在宿主机上创建需要共享的目录与文件,示例代码如下:
已经在/root/test/目录下别创建了a.txt与b.txt两个文件,接着创建一个可以共享这两个文件的容器,示例代码如下:
-v参数用来指定文件路径,--privileged参数用来给用户添加操作权限。
从示例中可以看到,目录与文件共享成功。
· 容器的三种状态
容器在宿主机中共有三种状态,分别为运行(Up)状态、暂停(Paused)状态与终止(Exited)状态。
下面通过示例来观察容器的三种状态。
1.运行状态
运行一个名为test-nginx的Nginx容器,并将容器80端口映射到宿主机80端口,示例代码如下:
2.暂停状态
下面通过命令使容器进入暂停状态,示例代码如下:
3.终止状态
当不再需要某一个业务继续运行时,就要通过命令使该业务的容器终止,示例代码如下:
· docker attach与docker exec
在企业中,运维工程师与开发工程师都可能会有进入容器内部的需求。此处不建议使用SSH(Secure Shell)登录容器,因为这违背了一个容器里只有一个进程的原则,同时增加了被攻击的风险。建议使用以下两种Docker原生方式进入容器。
1.docker attach
通过docker attach命令可以进入到一个已经在运行容器的虚拟输入设备,然后执行其他命令。
下面演示docker attach命令的使用方式。
创建任意一个容器,这里以CentOS为例,示例代码如下:
此时CentOS容器已经创建成功,接着使用docker attach命令与容器ID号进入容器中,示例代码如下:
2.docker exec
下面对exec的参数进行介绍,如表所示。
参数
功能描述
--detach, -d
后台运行模式,在后台执行命令
--env, -e
设置环境变量(仅在本次会话中生效)
--interactive, -i
打开STDIN,用于控制台交互
--tty, -t
命令行交互模式
--user, -u
设置用户名
第二课时
(停止和删除容器、容器资源限制)
回顾内容
1. 回顾上节内容,引出本课时主题。
上节已经介绍了容器运行、容器的三种状态、docker attach与docker exec,下面开始讲解停止容器、删除容器、限制容器内存资源