Docker使用——软件自动化测试入门攻略(7)

发表于:2024-3-18 09:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨定佳    来源:51Testing软件测试网原创

  15.4  Docker使用
  Docker的操作主要分为从远端仓库获取镜像→实例化容器→对容器修改或编写应用代码→创建Dockerfile→构建镜像→上传远端仓库6个步骤。可以看出,Docker的使用主要是对仓库、镜像、容器三个对象的操作。
  15.4.1  仓库操作
  目前最大的镜像仓库是Docker Hub,进入Docker Hub网站可检索所需的镜像,例如检索PostgreSQL镜像,如图15-6所示。可以看到,MySQL镜像获取命令是docker pull postgres,最新Tag有13.11-bullseye、13-bullseye、13-bookworm、13等,下载量100K+, Tags下可查看不同的Tag,Tag可理解为镜像版本。
图15-6  PostgreSQL镜像
  当我们注册了Docker Hub账号,在创建仓库时可选择私有或公开,如果有新的镜像推送到仓库中,便可像图15-6一样检索查看。
  由于从Docker Hub服务器拉取镜像时速度缓慢,甚至出现timeout(超时)的情况,此时可通过配置镜像源来解决。例如,我们设置镜像源为中国科技大学镜像(http://mirrors.ustc.edu.cn/)。打开Docker程序并进入设置界面,在左边菜单栏中选择【Docker Engine】,输入框中添加一句{"registry-mirrors":["https://mirrors.ustc.edu.cn/"]},如图15-7所示。最后,单击应用并重启生效。
图15-7  设置镜像源
  如果要添加多个镜像源,需要在方括号里使用逗号隔开。
  15.4.2  镜像操作
  镜像的常见操作主要有查找镜像、拉取镜像、拉取指定Tag镜像、查看本地镜像、移除镜像和将镜像推送到远端仓库等。
  1. 查找镜像
  如果要查找镜像,主要有两种方法,一是在镜像仓库中查找,二是通过命令docker search [OPTIONS] TERM在本机中查找,[OPTIONS]是可选参数,可以使用的参数如下:
  ·-f或--filter:基于给定的条件过滤。例如 -f stars=30表示筛选stars数大于30的镜像。
  · --format string:使用Go模板输出格式友好的信息。
  · --limit int:限制搜索结果的最大数,默认值是25。
  · --no-trunc:不截断输出,完整输出镜像信息。
  例如,查找stars大于10的前5个PostgreSQL镜像,命令为docker search –f stars=10 --limit 5 PostgreSQL,执行结果如图15-8所示。
图15-8  查找Postgres镜像
  2. 拉取镜像
  拉取镜像的命令是docker pull [OPTIONS] NAME[:TAG|@DIGEST],NAME为镜像名称,后面可指定拉取的Tag。[OPTIONS]可选参数如下:
  · -a或--all-tags:拉取镜像中所有Tag的镜像文件。
  · --disable-content-trust:忽略镜像的校验,默认开启。
  · --platform string:如果是多平台,则指定平台。
  · -q或--quite:精简输出。
  例如,可使用docker pull postgres:latest命令获取Postgres镜像的latest版本,如果不指定Tag则默认为最新的latest版本。如图15-9所示是获取Postgres镜像的最新版本。
图15-9  拉取Postgres镜像
  3. 查看本地镜像
  查看本地镜像的命令是docker images [OPTIONS] [RESPOSITORY[:TAG]],[OPTIONS]可选参数如下: 
  · -a或—all:显示所有镜像。
  · -q或—quiet:只显示镜像ID。
  例如,查看本地镜像,结果如图15-10所示。
图15-10  查看本地镜像
  可以看到本地存在一个postgres镜像。
  4. 移除镜像
  移除镜像的命令是docker rmi [OPTIONS] IMAGE [IMAGE...],IMAGE 可以是镜像ID、镜像名、镜像名:TAG中任意一个,[OPTIONS]可选参数如下:
  · -f或--force:强制删除。
  · --no-prune:不移除该镜像的过程镜像,默认移除。
  例如,删除本地镜像Postgres,执行结果如图15-11所示。
图15-11  删除本地镜像Postgres
  移除后再查看本地镜像,可以看到被删除的镜像已经不存在了。
  15.4.3  容器操作
  容器的常见操作主要有创建容器、启动容器、查看容器状态、终止容器运行、进入容器、删除容器和容器提交为镜像等。
  1. 创建容器
  创建容器的命令是docker run [OPTIONS] IMAGE [COMMAND] [ARG...],[OPTIONS]常用参数如下:
  · -i或--interactive:启动一个可交互的容器,并持续打开标准输入。
  · -t或--tty:使用终端关联到容器的标准输入输出上。
  · -d或--detach:将容器放置在后台运行。
  例如,创建一个PostgreSQL容器,首先使用docker pull postgres命令拉取镜像,然后使用docker run -it --name postgres-test --restart always -e POSTGRES_PASSWORD='postgres' -e ALLOW_IP_PANGE =0.0.0.0/0 -p 5432:5432 -d postgres命令创建容器,如图15-12所示。
图15-12  创建Postgres容器
  创建容器用到的参数如下:
  · --name:容器名称。
  · --restart always:Docker在重启时容器自动启动。
  · -e POSTGRES_PASSWORD:设置数据密码。
  · -e ALLOW_IP_PANGE:设置允许访问的IP,0.0.0.0/0表示所有。
  · -p:映射端口,写法是[宿主机端口:容器端口] ,5432:5432就是将容器的5432端口映射到宿主机的5432端口。外部机器连接时,便可用宿主机IP:5432访问。
  当看到一串字符串(容器ID)后,就表示容器创建成功。
  2. 查看容器状态
  使用命令docker ps [OPTIONS]可查看容器的状态,[OPTIONS]常用参数如下:
  · -a或--all:查看所有容器。
  · -f或--filter:根据条件进行过滤。
  例如,使用命令docker ps -a查看所有容器的状态,结果如图15-13所示。
图15-13  查看容器状态
  可以看到,刚才创建的容器ID是9fee9d51dd35,状态是Up 12 minutes的表示启动了12min,名字为postgres-test。
  3. 终止容器运行
  终止容器运行的命令是docker stop [OPTIONS] CONTAINER [CONTAINER...],[OPTIONS]可选参数如下:
  · -s或--signal string:自定义发送至容器的信号,例如-s KILL。
  · -t或--time int:在指定的时间后终止容器的运行,时间单位为秒。
  例如,使用docker stop postgres-test命令终止postgres-test容器的运行,结果如图15-14所示。
图15-14  终止容器运行
  容器终止后,再查看容器状态,可以看到显示为Exited。
  4. 启动容器
  容器终止后需要再次启动,启动容器的命令是docker start [OPTIONS] CONTAINER [CONTAINER...],例如使用命令docker start postgres-test启动postgres-test容器,结果如图15-15所示。
图15-15  启动容器
  从图15-15中可以看到,启动器的容器状态是Exited,启动后的容器状态是Up。
  5. 进入容器
  如果需要对容器里面的内容进行操作,就需要先进入容器。命令是docker exec [OPTIONS] CONTAINER COMMAND [ARG...],我们经常使用docker exec -it CONTAINER /bin/bash命令进入容器bash,例如使用命令docker exec -it postgres-test /bin/bash进入postgres-test容器,如图15-16所示。
图15-16  进入容器
  从图15-16中可以看到,成功进入到容器中,并执行了su postgres命令。
  进入容器命令可与创建容器命令结合使用,例如创建容器成功后直接进入容器bash,使用命令docker run -it --name postgres-test --restart always -e POSTGRES_PASSWORD='postgres' -e ALLOW_IP_PANGE=0.0.0.0/0 -p 5432:5432 -d postgres /bin/bash。
  进入容器后,输入exit或按快捷键Ctrl+D,可退出容器。
  6. 将容器提交为镜像
  容器修改后,可通过命令docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]将容器提交为镜像。[OPTIONS]常用参数如下:
  · -a或--author string:创建镜像的作者。
  · -m或--message string:提交说明或描述。
  例如,使用命令docker commit -m="first commit" -a="tynam" postgres-test?将postgres-test容器提交为名为postgres-test的镜像,如图15-17所示。
图15-17  容器提交为镜像
  提交镜像后再使用docker images命令可查看本地镜像,从图15-17中可以看到有一个postgres-test的镜像。
  7. 删除容器
  删除容器的命令是docker rm [OPTIONS] CONTAINER [CONTAINER...],例如,使用命令docker rm postgres-test删除容器postgres-test,如图15-18所示。
图15-18  删除容器
  从图15-18中可以看到,删除容器postgres-test后,本地容器中就不再存在postgres-test容器了。
  注意,如果容器正在运行是不允许被删除的,只有停止状态的容器才可以删除。
查看《软件自动化测试入门攻略》全部连载章节
版权声明:51Testing软件测试网获得作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号