测试人员的应用场景
- 搭建测试环境
- 搭建各类基础服务 (比如用例管理、流程管理等的软件)
- 搭建测试执行环境 (本地自动化代码环境)
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].tar
eg:
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] bash
ordocker 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
:运行时才有效的命令