手工部署Docker(CentOS 7.6)
简介
本文介绍了如何在交大云上使用Linux云主机部署Docker,并提供了Docker常用操作及简单的镜像制作过程。
术语 | 解释 |
---|---|
Docker | Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。 |
镜像 | Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 |
容器 | 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 |
更多关于Docker、镜像、容器的基础知识,请参见Docker Documentation。
该指导以“CentOS 7.6”操作系统为例,Docker要求64位的系统且内核版本至少为3.10。
前提条件
云主机需要绑定公网(浮动)IP,具体步骤参见绑定浮动IP。
云主机所在安全组添加了如下表所示的安全组规则(默认安全组已添加该规则)。
方向 | 类型 | 协议 | 端口/范围 | 远端 |
---|---|---|---|---|
入方向 | IPv4 | TCP | 80 | 0.0.0.0/0 |
部署Docker
登录云主机。
添加yum源。
1
2yum install epel-release -y
yum clean all安装yum-util。
1
yum install -y yum-utils device-mapper-persistent-data lvm2
设置docker yum源。
1
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装并运行Docker。
1
2
3yum install docker-ce
systemctl enable docker
systemctl start docker检查安装结果。
1
docker --version
回显如下类似信息,表示Docker安装成功。
1
2Client: Docker Engine - Community
Version: 19.03.13
Docker基本用法
Docker进程管理。
运行Docker
systemctl start docker
停止Docker
systemctl stop docker
重启Docker
systemctl restart docker
镜像管理。
拉取镜像。此处以Apache和CentOS官方镜像为例。
docker pull httpd
docker pull centos
查看已有镜像
docker images
强制删除镜像
docker rmi centos
容器管理。
创建一个容器并运行。
docker run -it -d -p 80:80 –name datahttpd -v /data/:/var/www/httpd/ httpd
参数说明如下:
- -i:以交互模式运行容器,通常与-t同时使用。
- -t:为容器重新分配一个伪输入终端,通常与-i同时使用。
- -d:后台运行容器,并返回容器ID。
- -p:端口映射,格式为“宿主机端口:容器端口”。
- –name:为容器指定一个名称。
-v:把宿主机上的一个目录挂载到镜像里,格式为“宿主机目录:镜像内挂载的路径”,必须为绝对路径。
说明:
上述参数说明中的宿主机表示所创建的云主机。
示例命令表示:使用镜像httpd,以交互模式启动一个容器,将容器的80端口映射到宿主机的80端口,宿主机的目录/data映射到容器的/var/www/httpd目录,并返回容器ID。
查看容器启动情况。
docker ps -a
在浏览器输入云主机所绑定的公网IP,访问测试容器运行情况。出现以下内容表示运行成功。
镜像制作
通过Dockerfile定制一个简单的Nginx镜像。
创建一个名为Dockerfile的文件。
1
2
3mkdir mynginx
cd mynginx
touch Dockerfile编辑Dockerfile。
1
vim Dockerfile
增加文件内容如下:
1
2FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.htmlDockerfile指令介绍如下。以下仅介绍简单指令,如需了解更多,请参见官方网站:https://hub.docker.com/。
- FROM语句:表示使用nginx镜像作为基础镜像,一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。
- RUN语句:格式为RUN <命令>,表示执行echo命令,在显示器中显示一段“Hello, Docker!”的文字。
构建镜像。
1
docker build -t nginx:v3 .
- -t nginx:v3:指定镜像的名称和版本。
- .:指定上下文路径,镜像构建命令将该路径下所有的内容打包给Docker引擎帮助构建镜像。
查看部署的nginx镜像,版本为v3。
1
docker images
出现如下内容,表名该镜像已经创建成功.
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |