Docker tips
1. 删除所有退出状态容器
docker system prune -f
2. 删除无容器关联的所有镜像
docker image prune -a
3. 设置容器退出时自动删除
--rm
docker container run --rm -it ipinfo
4. ARG作用范围:镜像创建过程,且可以通过--build-arg动态指定
ENV作用范围:镜像创建后作为环境变量,可用env查看,且在运行容器中起作用
5. Dockerfile合理使用cache
Dockerfile中若命令发生变化、涉及文件改动等,再次build镜像,该命令及其之后命令不再使用缓存
不经常修改的命令放在Dockerfile之前
6. 数据持久化采用Data Volume的方式
Bind mount方式脱离Docker管理范畴,不建议使用,比如docker volume ls不会列出bind mount方式挂载的容器内路径
7. Bind mount一种实用的方式:文件同环境隔离,通过Docker bind mount形成一体
比如java源代码同运行时jdk环境分开,运行时环境则通过Docker构建,再通过bind mount方式挂载到容器中运行java代码。现有的云代码编辑器是否也是此思路?
8. 多容器共享数据,可以采用driver类型为sshfs的volume
比如机器1上的容器1和机器2上的容器2,共享机器3上的某个路径,可以采用NFS将该路径挂载到机器1和2上。也可以分别在机器1和2上创建driver类型为sshfs的volume,通过ssh方式实现路径访问。
# vieux/sshfs docker plugin install --grant-all-permissions vieux/sshfs # create volume docker volume create --driver vieux/sshfs \ -o sshcmd=<username>@<ip>:/to/path \ -o password=*** \ sshvolume # run container using sshvolume docker run -it -v sshvolume:/app busybox sh
清醒时做事,糊涂时读书,大怒时睡觉,独处时思考; 做一个幸福的人,读书,旅行,努力工作,关心身体和心情,成为最好的自己
-- 共勉