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

 

posted on 2021-11-28 15:27  -赶鸭子上架-  阅读(67)  评论(0编辑  收藏  举报