阅读目录
- 目的
- 接上回
- 基础命令
- 镜像命令
- 容器命令
目的
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
查看
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