参考地址:https://yeasy.gitbook.io/docker_practice/
搭建测试环境
搭建各类基础服务 (比如用例管理、流程管理等的软件)
搭建测试执行环境 (本地自动化代码环境)
docker不虚拟化内核
docker的关键技术
Namespace
联合文件系统
Cgroups
docker pull [image_name]
docker push [image_name]
docker image ls
docker rmi [image_name] or docker rmi [container_id]
docker tag {source_images_name:tag your_image_name:tag}
docker save [image] > [image].tar
eg:
docker save jenkins/jenkins > jenkins.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] or docker stop [container_id]
docker kill [container_name] or docker kill [container_id]
docker rm -f [container_name] or docker rm -f [container_id]
-f
: 强制删除容器,可以直接删除运行中的容器
docker restart [container_name] or docker restart [container_id]
docker start [container_name] or docker start [container_id]
15.进入容器命令
docker exec -it [container_name] bash or docker 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
# 拉取官方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 表示字符集
#进入容器
docker exec -it [container_name] bash
eg:docker exec -it [container_name] mysql bash
# 在容器内使用mysql命令
登陆:mysql -u [user] -p
eg: mysql -u root -p
# 拉取官方镜像
docker pull redis
# 启动一个redis镜像
docker run -d --name my_redis -p 6379:6379 redis
# 拉取官方镜像
docker pull rabbitmq
# 启动一个rabbitmq镜像
docker run -d --name my_rabbitmq -p 5672:5672 rabbitmq
1.创建目录:mkdir my_nginx
在my_nginx
下执行touch Dockerfile
编辑Dockerfile
内容
FROM nginx
RUN echo 'hello,Docker!
' > /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
1.常用指令
From
:镜像源
WORKDIR
:工作目录
COPY
:将指定目录复制给容器的指定目录
RUN
:运行时执行的命令
EXPOSE
:暴露的端口
ENV
:指定环境变量
ARG
:构建时才有效的参数
CMD
:运行时才有效的命令