测试人员的应用场景
- 搭建测试环境
- 搭建各类基础服务 (比如用例管理、流程管理等的软件)
- 搭建测试执行环境 (本地自动化代码环境)
docker和虚拟机的区别
- docker不虚拟化内核
docker的关键技术
- Namespace
- 联合文件系统
- Cgroups
docker常用命令
-
拉取镜像
docker pull [image_name] -
推送镜像
docker push [image_name] -
查看所有镜像
docker image ls -
删除镜像
docker rmi [image_name]ordocker rmi [container_id] -
为镜像打tag
docker tag {source_images_name:tag your_image_name:tag} -
将一个镜像保存为
.tar文件docker save [image] > [image].tareg:
docker save jenkins/jenkins > jenkins.tar -
将一个
.tar文件转为镜像docker load < jenkins.tar -
运行容器
docker run -d --name={your_name} -p {port}:{port} -e TZ=Asia/Shanghai [image]-d: 后台运行
{your_name}: 容器名称
-p: 暴露端口;第一个port为外网可访问的端口,第二个port为容器内部的端口
-e: TZ=Asia/Shanghai,设置时区为东八区 -
查看当前所有容器
docker ps -a
-a: 显示停止中的容器 -
停止容器
docker stop [container_name]ordocker stop [container_id] -
杀死容器
docker kill [container_name]ordocker kill [container_id] -
删除容器
docker rm -f [container_name]ordocker rm -f [container_id]
-f: 强制删除容器,可以直接删除运行中的容器 -
重启容器(重新启动正在运行启动中的容器)
docker restart [container_name]ordocker restart [container_id] -
启动容器(处于停止中的容器)
docker start [container_name]ordocker start [container_id] -
进入容器命令
docker exec -it [container_name] bashordocker exec -it [container_id] bash -
修改容器配置
docker cp [container_name]:[container_path] [host_path]把容器的文件拷贝到宿主机中eg:
docker cp laradock_mysql_1:/etc/test.txt /Downloads/
docker cp [host_path] [container_name]:[container_path]把宿主机的文件拷贝到容器中eg:
docker cp /Downloads/test.txt laradock_mysql_1:/etc -
一个容器的生命周期可涉及到的命令
// -d表示后台启动,-p 表示暴露端口;创建一个名字为myjenkins的jenkins容器,其暴露的端口为8080 1. docker run -d --name=myjenkins -p 8080:8080 jenkins // 停止容器名为myjenkins容器 2. docker stop myjenkins // 启动一个名为myjenkins的处于停止中的容器 3. docker start myjenkins // 删除名为myjenkins的容器 4. docker rm myjenkins
docker使用事例
- 启动mysql
# 拉取官方5.6版本的mysql镜像(若不加上版本号表示拉取最新的)
docker pull mysql:5.6
# docker image ls 可以查看已经拉取的镜像
# 启动一个mysql镜像
docker run -d --name local_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai \
--mount type=bind,source="$(PWD)"/data,target=/var/lib/mysql mysql:5.6 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --explicit_defaults_for_timestamp=false
docker run -d --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql:5.6 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
注:一定要指定密码,时区、字符集,是否要将数据持久化到本地,可根据需要处理
-e MYSQL_ROOT_PASSWORD=123456 指的是密码
-e TZ=Asia/Shanghai 表示时区
--character-set-server=utf8mb4 和 --collation-server=utf8mb4_unicode_ci 表示字符集
# 在容器内使用mysql命令
登陆:mysql -u [user] -p
eg: mysql -u root -p
- 启动redis
# 拉取官方镜像
docker pull redis
# 启动一个redis镜像
docker run -d --name my_redis -p 6379:6379 redis
- 启动rabbitmq
# 拉取官方镜像
docker pull rabbitmq
# 启动一个rabbitmq镜像
docker run -d --name my_rabbitmq -p 5672:5672 rabbitmq
docker定制镜像
- 创建目录:
mkdir my_nginx - 在
my_nginx下执行touch Dockerfile - 编辑
Dockerfile内容FROM nginx RUN echo '<h1>hello,Docker!</h1>' > /usr/share/nginx/html/index.html CMD echo 'hello world' - 在Dockerfile目录下执行
docker build -t my_nginx:v3 .;创建名为my_nginx,tag为v3的镜像 - 运行镜像
docker run my_nginx:v3,结果会打印出hello world
dockerfile编写
1.常用指令
From:镜像源WORKDIR:工作目录COPY:将指定目录复制给容器的指定目录RUN:运行时执行的命令EXPOSE:暴露的端口ENV:指定环境变量ARG:构建时才有效的参数CMD:运行时才有效的命令