docker使用手册(3)—— 基础使用

2022-08-11 09:24:28 浏览数 (2)

阅读目录

  • 目的
  • 接上回
    • 基础命令
    • 镜像命令
    • 容器命令

目的

CI / CD在目前各类互联网企业中已然成为推动软件开发行为的重要基础设施服务。同样的对于测试团队来说更是有着举足轻重的重大意义,无论是测试左移的具象化提现亦或是持续测试的顺利开展,掌握这一技能已是广大软件测试工程师的必修课。分享这一技术笔记也是希望除了自己团队以外的广大测试同学们可以有体系的学习这一技能。

接上回

我们已经对docker进行完了基本配置,接下来就该熟悉docker的一些基础命令了。

基础命令

启动、重启、关闭docker服务

代码语言:javascript复制
systemctl start docker
代码语言:javascript复制
systemctl restart docker
代码语言:javascript复制
systemctl stop docker

设置开机启动

代码语言:javascript复制
systemctl enable docker

查看服务运行状态

代码语言:javascript复制
systemctl status docker

查看版本号

代码语言:javascript复制
docker version

查看详细系统信息,比如容器数量、镜像等

代码语言:javascript复制
docker info

镜像命令

查看自己的镜像列表

代码语言:javascript复制
docker images

搜索docker hub中的镜像

代码语言:javascript复制
docker search 关键字

比如搜索MariaDB

另外可以使用filter进行条件的过滤,以确保更精准的定位。 比如只搜索星数至少为5的相关镜像。

代码语言:javascript复制
docker search --filter stars=5 mariadb

筛选出官方版本的mariadb

代码语言:javascript复制
docker search --filter "is-official=true" mariadb

拉取最新版镜像

代码语言:javascript复制
docker pull 镜像名

如果需要指定版本号则可以加tag

代码语言:javascript复制
docker pull 镜像名:tag

比如需要拉取5.6版本的mysql则输入以下命令

代码语言:javascript复制
docker pull mysql:5.6

注:软件对应的版本号可以在Docker Hub中进行查看

以下画面就说明镜像已经拉取成功了

保存镜像

代码语言:javascript复制
docker save 镜像名 -o 保存路径/保存文件名

比如将mysql的镜像保存到opt目录下,文件名为mysql.tar

代码语言:javascript复制
docker save mysql -o /opt/mysql.tar

保存完的文件可以在任何安装了docker的服务器内进行加载和使用。

加载镜像

代码语言:javascript复制
docker load -i 文件保存位置

比如将其他机器内保存的mysql.tar压缩包导入服务器,放入home目录下,再使用上述命令进行镜像加载即可。

代码语言:javascript复制
docker load -i /home/mysql.tar

删除镜像

删除单个镜像,参数f为强制删除

代码语言:javascript复制
docker rmi -f 镜像名或镜像ID

删除多个镜像,镜像名之间用空格隔开

代码语言:javascript复制
docker rmi -f 镜像名1 镜像名2

删除所有镜像,参数a代表全部,参数q代表只显示ID

代码语言:javascript复制
docker rmi -f $(docker images -aq)

镜像标签 在搭建测试环境中,常常会因为遇到需要频繁切换中间件或复现不同环境内出现的Bug的情况。针对快速搭建对应的测试环境,镜像标签就可以帮我们解决这一个问题。

代码语言:javascript复制
docker tag 原镜像名:tag 新镜像名:tag

例如需要将5.6版本的mysql打上新的标签,我们可以输入以下命令

代码语言:javascript复制
docker tag mysql:5.6 mysql:dev

以此类推,将dev的mysql打上新的标签也是如此

代码语言:javascript复制
docker tag mysql:dev mysql:uat

再使用docker images进行查看

基于以上的操作,我们可以进行快速的回滚并创建指定版本的容器。

代码语言:javascript复制
docker run -itd mysql:uat

容器命令

启动容器

参数i代表以交互模式启动,t代表为容器分配一个伪输入终端,d代表后台运行容器并返回ID

代码语言:javascript复制
docker run -itd 镜像名:tag

如果需要给容器起个别名,那我们启动时可以输入

代码语言:javascript复制
docker run -itd --name 别名 镜像名:tag

例如,我们要启动tomcat并起名为tomcat-test

代码语言:javascript复制
docker run -itd --name tomcat-test tomcat

查看已运行容器

代码语言:javascript复制
docker ps

查看所有容器(启动和已停止的)

代码语言:javascript复制
docker ps -a

停止容器

代码语言:javascript复制
docker stop 容器名或容器ID

名字和ID可以通过docker ps查看

代码语言:javascript复制
docker stop tomcat-test

拷贝容器

将容器内的文件拷贝至本机

代码语言:javascript复制
docker cp 容器名或容器ID:原路径 目标路径

比如要将原路径的tomcat的BUILDING.txt拷贝至home目录下

代码语言:javascript复制
docker cp tomcat:usr/local/tomcat/BUILDING.txt /home

将本机的文件拷贝至容器内

代码语言:javascript复制
docker cp 原路径 容器名或容器ID:目标路径

比如将本机的config.ini复制到tomcat的主目录中

代码语言:javascript复制
docker cp config.ini tomcat:/

删除容器

删除单个容器,参数f为强制删除

代码语言:javascript复制
docker rm -f 容器名或容器ID

删除多个容器,容器之间用空格隔开

代码语言:javascript复制
docker rm -f 容器名1或容器ID1 容器名2或容器ID2

删除全部容器,参数a指定全部,参数q只返回ID

代码语言:javascript复制
docker rm -f $(docker ps -aq)

容器端口印射 在日常的使用过程中,容器的默认服务端口可能会被占用,此时我们就需要使用到端口印射来避开那些已经被使用了的端口。 我们在启动容器的同时,使用参数p来指定需要印射的服务端口即可。

代码语言:javascript复制
docker run -itd -p 宿主机端口:容器服务端口 镜像名

比如我想启动tomcat的时候,8080端口已被其他服务占用,那就需要使用参数p将原有服务的8080端口印射程其他未被占用的端口。

代码语言:javascript复制
docker run -itd --name tomcat01 -p 9999:8080 tomcat

docker ps中查看时,可以发现tomcat的原有服务端口已经被印射成了指定的端口号。

存储挂载 当我们的容器需要进行一些持久化的业务时,或者为了防止服务器以外断电或其他硬件故障而导致的数据的丢失,我们就可以使用挂载操作将容器内的数据直接挂载至服务器的存储设备内。 同样的,在创建容器时我们可以使用参数v进行挂载操作。

代码语言:javascript复制
docker run -itd -v 宿主机存储路径:容器内数据路径 镜像名

比如创建mysql容器的同时完成数据库数据的存储挂载

代码语言:javascript复制
docker run -itd --name mysql01 -v /home/mysql/data:/var/lib/mysql mysql

进入容器 当我们要对容器进行一些配置操作的时候,就需要进到容器内部。 参数i代表即使没有附加也保持STDIN 打开,参数t代表分配一个伪终端

代码语言:javascript复制
docker exec -it 容器名或容器ID /bin/bash

例如进入名为tomcat01的容器内,则可以输入以下命令

代码语言:javascript复制
docker exec -it tomcat01 /bin/bash

输入完查看所处位置已经跳转至tomcat容器内部

退出容器

代码语言:javascript复制
exit

0 人点赞