测试人员必会的docker秘籍
Docker现在是许多 QA 工程师的常用工具。它用于生产环境和测试环境或两者兼而有之。docker 的文档制作精良,相对容易理解,但有时我们需要一些常用命令来解决问题。
在这里我列举一下对于测试同学来说比较值得去弄明白的docker秘籍。
*如何使用不同的参数运行已经启动的 docker 容器?*
可以用这个工具:https://github.com/lavie/runlike/
使用方法: runlike -p <container_name>
,这样就可以拿到该容器第一次启动时候用的具体命令了。
runlike -p testservice
docker run \
--name=testservice \
--user=test \
--env=KAFKA_HOST=172.17.0.1:9092 \
--env=PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin \
--env=LANG=en_US.UTF-8 \
--workdir=/home/testapp \
-p 8015:8080 \
--restart=always \
--log-driver=journald \
--runtime=runc \
--detach=true \
myrepo/testservice:master-1374
这时候我们就可以修改一些参数,比如端口号信息,生活变得容易了一些。
*如何在 docker 容器中运行本地 bash 脚本?*
cat local_script.sh | docker exec <container_name> /bin/bash
如何重启或移除所有的容器?
这个技巧非常管用,推荐牢记。
docker stop $(docker ps -a -q)
docker restart $(docker ps -a -q)
*如何清理旧的 docker 镜像、容器和卷?*
docker system prune -a
*如何过滤 docker ps 命令,以仅获取所需的信息,例如容器名称、状态和镜像?*
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"
*如何保存和恢复 docker 容器?*
docker commit -p <CONTAINER_ID> <YOUR_BACKUP_NAME>
docker save -o <CONTAINER_FILE>.tar <YOUR_BACKUP_NAME>
docker load -i <CONTAINER_FILE>.tar
如何将常用的docker命令简化成别名?
如果你是docker的重度用户的话,这个能力非常实用。
dexec() { docker exec -i -t $@ /bin/bash ;}
dlogs() { docker logs --tail=all -f $@ ;}
dport() { docker port $@ ;}
dvol() { docker inspect --format '{{ .Volumes }}' $@ ;}
dip() { docker inspect --format '{{ .NetworkSettings.IPAddress }}' $@ ;}
总结
希望以上的命令会对大家有所帮助。