18.Docker学习

1.Docker应用场景

Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker(模板)将软件运往各个环境(测试环境和生产环境拉取镜像(实例)),相当于是一个模子刻出来的

  • Web应用自动化打包和发布
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他的后台应用
  • 使用Docker可以实现开发人员的开发环境、测试人员的测试环境、运维人员的生产环境一致性
    搭建化境、基于容器构建微服务架构

2.Docker与传统VM对比

Docker:在操作系统层面实现虚拟化,直接复用本地操作系统。启动速度快,占用体积小

传统虚拟机:硬件层面实现虚拟化

3.Docker三个基本概念

镜像(静态)

创建Docker容器的模板(静态只读-类),相当于一个root文件系统。
镜像和容器的关系, 就像面向对象程序设计中类和实例一样,镜像是静态的定义,容器是镜像运行时的实体

容器(动态)

容器是一个运行时环境,是镜像的运行状态,是镜像执行的动态表现。是独立运行的一个或一组应用,Docker容器通过Docker镜像创建,容器可以被创建、启动、停止、删除、暂停等

仓库

仓库是用来保存镜像的,可以理解为代码控制中的代码仓库

过程(关系):

镜像存在仓库里

先把镜像从仓库pull拉到Linux系统上,然后创建容器,运行容器

4.Docker操作

准备:一台测试机,一台服务器

(1)静态IP设置

进入ip配置文件设置

Bash 复制代码
vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改静态ip

python 复制代码
BOOTPROTO=static
IPADDR=192.168.32.129(自己的ipconfig)
NETMASK=255.255.255.0
GATEWAY=192.168.32.2
DNS1=8.8.8.8

重启网卡服务

python 复制代码
systemctl restart network

使用xshell工具连接

(2)docker进程相关操作

docker卸载和安装

powershell 复制代码
# 卸载旧版本
sudo yum remove docker
# 设置docker仓库
sudo yum install -y yum-utils
# 设置稳定的仓库-阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker engine-community
sudo yum install docker-ce docker-ce-cli contained.io
# 启动docker
sudo systemctl start docker
powershell 复制代码
# 查看是否有docker环境
docker -v
# 查看docker命令
docker --help
# 查看docker 服务端与客户端版本详情
docker version
# 启动docker进程
systemctl start docker
#关闭docker
systemctl stop docker
#重启docker
systemctl restart docker
#开机自启
systemctl enable docker
# 查看docker运行状态
systemctl status docker
# 关闭防火墙
systemctl stop firewalld 
#永久关闭防火墙
systemctl stop firewalld disable

镜像操作

需求 :使用docker搭建一个tomcat\mysql\redis
操作流程:

  • 获取对应镜像
    docker pull tomcat
    可以使用官方的仓库地址或自己的镜像仓库
  • 使用镜像创建容器
  • 运行容器

实际操作

powershell 复制代码
# 查看本地镜像
docker images
# 搜索镜像-首先本地-默认地址,用STARS星级最高的版本
docker search tomcat
# 找到所有镜像,进行拉取
docker pull tomcat#最新版本
docker pull tomcat:7#指定版本7
# 不想要镜像,需要删除
docker rmi 镜像id
# 有镜像,可以创建容器---名称和id均是唯一的
#根据tomcat镜像,创建一个myTomcat的容器
docker create --name=myTomcat tomcat #仅创建,还不能运行
# 查看已经运行的容器
docker ps 
# 查看所有容器
docker ps -a
# 容器很多,需要筛选指定容器--名称含tomcat的容器
docker ps |grep tomcat
# 运行容器(运行状态为up)--通过名称或CONTAINER ID
docker start myTomcat
#停止容器--通过名称或CONTAINER ID
docker stop myTomcat 
# 删除没有运行的容器(需要先停止容器)
docker rm 容器id或名称
# 删除在运行的容器
docker rm -f 容器id或名字
#删除所有容器
#先停止所有容器
docker stop $(docker ps -a -q)
#删除(慎用)
docker rm $(docker ps -a -q)
#删除所有镜像(慎用)
docker rmi $(docker images -q )
#查看容器详情信息
docker inspect --format '{{ .NetworkSettings .IPAddress}}' <container-ID>
例如:查挂载目录
docker inspect -f '{{.Mounts}}' tomcat01

下载太慢,可以使用docker下载加速器

docker加速

  • 在指定目录创建文件
    vim /etc/docker/daemon.json
  • 修改文件内容为
    从阿里云控制台复制的,每个用户不一样
powershell 复制代码
{
"registry-mirrors":["https://v2c6fjn8.mirror.aliyuns.com"]
}
  • 重启docker服务
    systemctl restart docker

运行容器的一些操作

需要搭建一个web项目--tomcat

(1)访问端口 需要访问的是容器内部的端口

(2)war项目文件传给容器里的tomcat里的webapps下

powershell 复制代码
# 查看docker run 命令--创建并且启动容器

docker run --help
 1.判断本地是否有这个镜像,如果没有先自动pull
 2.然后创建容器
 3.然后运行容器

docker run 参数
-i #运行容器
-t #容器启动后,进入命令行
-v #目录映射-挂载 -v 宿主机目录:容器的目录(没有会自动新建目录)
-d #守护进程-后台运行
-p #端口映射 -p 宿主机的端口:容器的端口
#如果容器里有tomcat,本机windows想访问
#docker tomcat 端口号是8080,需要在虚拟机映射一个端口9099
#windows才可以访问 http://虚拟机ip:9099

#组合使用-创建一个运行守护的容器
docker run -id --name=tomcat01 -p 7070:8080 -v /usr/local/zm:/usr/local/tomcat/webapps tomcat
#退出
exit
#进入容器 
docker exec -it tomcat01 /bin/bash
#启动时关联其他容器--link   mysql独立容器
docker run -di --name=tomcat02 -p 8080:8080 --link mysql --link redis --link rabbitmq

关于目录映射挂载的解释:

本地pc不能直接访问容器里的目录(或上传文件),但可以在宿主机和容器之间进行目录的映射,这样pc就可以通过访问宿主机的目录,去操作容器里的目录了

docker logs命令--查看容器日志

powershell 复制代码
docker logs 
-details 显示提供给日志的额外细节
-f 按日志输出
-since 从某个时间开始
-tail 从日志末尾多少行开始显示
-t 显示时间戳
-until 打印每一个时间以前的日志
# 查看指定时间后的日志 只显示最后100行
docker logs -f -t --since="2020-02-09" --tail=100 容器id
# 查看最近30分钟的日志
docker logs --since 30m 容器id
#查看某时间之后的日志
docker logs -t --since="2018-09-02T13:14:20" 容器id
#查看某个时间段的日志
docker logs --since="2024-05-10T23:00:00" --until "2024-05-11T23:00:00" 容器id

5.web管理平台Portainer

不熟悉指令时,可以通过web ui页面可视化管理平台

powershell 复制代码
#查看portainer镜像
docker search portainer
#选择喜欢的风格,下载
docker pull portainer/portainer 
#启动dockerui容器--自启动
docker run -id --name portainerUI -p 9000:9000 -v var/run/docker.sock:/var/run/docker.sock --restart=always portainer/portainer

浏览器访问http://虚拟机ip:9000,设置密码8位以上

相关推荐
未央.3034 个月前
【接口自动化测试】第三节.实现项目核心业务接口自动化
自动化·接口自动化
智在碧得7 个月前
接口自动化测试工程实践分享
自动化测试·软件测试·接口自动化·工程实践
测试架构师北凡1 年前
全网最细,Apipost接口自动化测试-关联配置,老鸟带你上高速...
自动化测试·软件测试·接口自动化测试·测试工具·接口测试·接口自动化·apipost
网易测试开发猿1 年前
【接口测试】Jmeter接口实战-TCP及Websocket接口,打通接口测试...
软件测试·软件测试工程师·接口自动化测试·jmeter·接口测试·接口自动化·jmeter接口测试
网易测试开发猿1 年前
爆肝整理,Jmeter接口性能测试-跨线程调用变量实操(超详细)
自动化测试·软件测试·接口自动化测试·jmeter·性能测试·接口自动化·jmeter接口测试
百度测试开发1 年前
一篇概全,接口测试知识盲扫,真正的接口测试是如何做的...
自动化测试·软件测试·软件测试工程师·接口自动化测试·测试用例·接口测试·接口自动化
$团长$1 年前
接口自动化测试系列-接入测试平台
python·接口自动化·测试平台
测试架构师北凡1 年前
【软件测试】Linux环境Ant调用Jmeter脚本并且生成测试报告(详细)
自动化测试·软件测试·软件测试工程师·测试工具·jmeter·接口自动化·jmeter接口测试
百度测试开发1 年前
从0到1框架搭建,Python+Pytest+Allure+Git+Jenkins接口自动化框架(超细整理)
自动化测试·软件测试·测试开发·python自动化测试·接口自动化测试·接口测试·接口自动化