本地的镜像文件都存放在哪里?
与docker相关的本地资源默认都在放在/var/lib/docker/目录下,
containers目录存放容器信息,
image目录存放那镜像信息,
overlay2目录存放具体的镜像层文件。
如何清理临时镜像文件?
虚悬镜像: 无标签镜像,仓库名、标签均为 的镜像,
查询虚悬镜像:
docker image ls -f dangling=true
使用 docker image prune清理
或 docker image rmi $(docker image ls -f dangling=true)
构建docker镜像应该遵循哪些原则?
尽量选取满足需求但较小的基础系统镜像,例如大部分时候可以选择 alpine 镜像,仅有不足六兆大小;
清理编译生成文件、安装包的缓存等临时文件;
安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖;
从安全角度考虑,应用要尽量使用系统的库和依赖;
使用 Dockerfile 创建镜像时候要添加 .dockerignore 文件或使用干净的工作目录。
如何给容器指定一个固定IP地址,而不是每次重启容器IP地址都会变?
Dockerfile
$ docker network create -d bridge --subnet 172.25.0.0/16 my-net
$ docker run --network=my-net --ip=172.25.3.3 -itd --name=my-container busybox
docker-compose
version: '3'
services:
nginx:
image: nginx
container_name: nginx
networks:
proxy:
ipv4_address: 172.16.0.88
networks:
proxy: # 自定义网络名称
ipam:
config:
- subnet: 172.16.0.0/24 # 网络号段
查看容器网段
docker network ls # 查看网段地址
docker network inspect networdId # 查看网卡相关详细地址, 确认自己创建的ip段
如何排除子目录?
volumes:
- /code:/app/code/
- /app/code/node_modules
如何删除数据卷?
数据卷有name的话docker volume rm vol
删除无主数据卷 docker volume prune
数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 数据卷 ,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷 。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个命令。
如何删除退出状态镜像?
docker ps -a|grep 'Exited'|awk '{print $1}'|xargs docker rmi -f
镜像成功运行,宿主机无法访问?
Dockerfile设置环境变量 ENV HOST 0.0.0.0
如何临时退出一个正在交互的容器终端,而不终止它?
按 ctrl-p ctrl-q,如果按Ctrl-c 往往会终止容器。
docker的配置文件放在那里?
使用 systemd的系统的配置文件在 /etc/docker/daemon.json
如何将一台宿主机的Docker环境迁移到另外一台宿主机?
停止Dokcer服务, 将docker存储文件夹复制到另一台宿主主机。
docker以及docker-compose 命令查询
通过 docker COMMAND --help或docker-compose COMMAND --help 来查询命令的具体用法
build:从一个 Dockerfile 创建一个镜像
config: 验证 Compose 文件格式是否正确,若正确则显示配置,若格式错误显示错误原因。
diff:检查一个容器内文件系统的修改,包括修改和增加
exec:在运行的容器内执行命令;
images:列出存在的镜像;
inspect:显示一个容器的具体配置信息;
kill:关闭一个运行中的容器 (包括进程和所有相关资源);
ps:列出主机上的容器;
pull:从一个Docker的仓库服务器下拉一个镜像或仓库;
push:将一个镜像或者仓库推送到一个 Docker 的注册服务器;
restart:重启一个运行中的容器;
rm:删除给定的若干个容器;
rmi:删除给定的若干个镜像;
run:创建一个新容器,并在其中运行给定命令;
search:在 Docker index 中搜索一个镜像;
service:管理 Docker 所启动的应用服务,包括创建、更新、删除等;
start:启动一个容器;
stop:终止一个运行中的容器
top:查看一个容器中的正在运行的进程信息;
version:输出 Docker 的版本信息;