手工部署Docker(Debian)
简介
本文介绍了如何在华为云上使用弹性云服务器的Linux实例手工部署Docker,并提供了Docker常用操作及简单的镜像制作过程。
术语 |
解释 |
---|---|
Docker |
Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。 |
镜像 |
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 |
容器 |
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 |
该指导以“Debian 12.0.0 64bit”操作系统为例,Docker要求64位的系统且内核版本至少为3.10。
您还可以选择Solution as Code一键式部署方式自动部署Docker Swarm集群,详细内容请参见快速部署高可用的Docker Swarm集群。
前提条件
部署Docker
- 登录弹性云服务器。
- 更新软件包列表。
- 安装Docker所需依赖包。
- 创建/etc/apt/keyrings目录,并下载Docker的官方GPG密钥到该目录。
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL http://mirrors.huaweicloud.com/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
- 将Docker仓库添加到系统的软件源列表。
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.huaweicloud.com/docker-ce/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 更新软件包列表。
- 安装并运行Docker。
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
- 查看docker版本信息。
回显如下类似信息,表示Docker安装成功。
Docker version 27.1.1, build 6312585
Docker基本用法
- Docker进程管理。
- 镜像管理。
- 容器管理。
- 创建一个容器并运行。
docker pull hub.atomgit.com/amd64/httpd:2.4.57-alpine
docker run -it -d -p 80:80 --name datahttpd -v /data/:/var/www/httpd/ hub.atomgit.com/amd64/httpd:2.4.57-alpine
参数说明如下:
- -i:以交互模式运行容器,通常与-t同时使用。
- -t:为容器重新分配一个伪输入终端,通常与-i同时使用。
- -d:后台运行容器,并返回容器ID。
- -p:端口映射,格式为“宿主机端口:容器端口”。
- --name:为容器指定一个名称。
- -v:把宿主机上的一个目录挂载到镜像里,格式为“宿主机目录:镜像内挂载的路径”,必须为绝对路径。
上述参数说明中的宿主机表示所创建的弹性云服务器实例。
示例命令表示:使用镜像httpd,以交互模式启动一个容器,将容器的80端口映射到宿主机的80端口,宿主机的目录/data映射到容器的/var/www/httpd目录,并返回容器ID。
- 查看容器启动情况。
- 在浏览器输入弹性云服务器所绑定的弹性公网IP,访问测试容器运行情况。出现以下内容表示运行成功。
- 创建一个容器并运行。
镜像制作
通过Dockerfile定制一个简单的Nginx镜像。
- 创建一个名为Dockerfile的文件。
cd mynginx
touch Dockerfile
- 编辑Dockerfile。
增加文件内容如下:
FROM hub.atomgit.com/amd64/nginx:1.25.2-perl MAINTAINER DTSTACK RUN mkdir /dtstact ENTRYPOINT ping https://www.example.com/
Dockerfile指令介绍如下。
- FROM语句:表示使用nginx镜像作为基础镜像,一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。
- MAINTAINER语句:声明创建镜像的作者信息:用户名、邮箱,非必须参数。
- RUN语句:格式为RUN <命令>,表示执行echo命令,在显示器中显示一段“Hello, Docker!”的文字。
- ENTRYPOINT语句:用来指定容器启动时的默认运行的命令。
- 构建镜像。
- -t nginx:v3:指定镜像的名称和版本。
- .:指定上下文路径,镜像构建命令将该路径下所有的内容打包给Docker引擎帮助构建镜像。
- 查看部署的nginx镜像,版本为v3。