对docker 常用的一些命令做一个记录
镜像 image 相关
## 拉去一个镜像文件
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker pull ubuntu:18.04
## 查看镜像列表
docker image ls
docker image ls -q -q是只列出id
## 镜像列表过滤
docker image ls -f dangling=true ## 虚悬镜像
docker image ls -f since=mongo:3.2 ## 在指定的镜像之后创建的镜像
docker image ls -f before=mongo:3.2 ## 在指定的镜像之前创建的镜像
## 根据镜像名称和标签过滤
docker image ls ubuntu
docker image ls ubuntu:18.04
## 删除虚悬镜像
docker image prune
## 删除镜像
docker image rm [选项] <镜像1> [<镜像2> ...]
docker image rm d610e7d67ed0
## 命令组合删除所有的镜像
docker image rm $(docker image ls -q)
## 构建一个新的image
docker build [选项] <上下文路径/URL/->
docker build -t nginx:v3 . 构建image
容器 container 相关
## 运行镜像生成容器
docker run [选项] <镜像名称>
docker run --name webserver -d -p 4000:80 --mount source=my-vol,target=/app nginx
-d 是后端运行
-p 宿主端口:容器内端口 端口映射
--mount source=my-vol,target=/app,readonly 挂载一个数据卷到 容器的/app里 readonly标识只读
-v my-vol:/app:ro 挂载一个数据卷到 容器的/app里 ro表示只读
## 进入container bash
docker exec -it [container名称] bash
eg:docker exec -it webserver bash
## 提交容器
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
docker commit \
--author "cfl <cfl@qq.com>" \
--message "test" \
webserver \
nginx:v2
## 提交历史
docker history nginx:v2
## container内容修改记录
docker diff webserver
## 查看容器的日志
docker container logs [container ID or NAMES]
## 停止container
docker container stop [container ID or NAMES]
## 启动container
docker container start [container ID or NAMES]
## 导出 container
docker export [container ID] > 导出目录
docker export 41a43eaccd9d > ./dockerImage/nginxv2.tar
## 删除 container
docker container rm [containerName]
docker container rm nginxv4
访问仓库
## 搜索镜像
docker search ubun
## 把镜像的名字改为自己的用户名的镜像
docker tag ubuntu:18.04 username/ubuntu:18.04
## 推送镜像到registry
docker push username/ubuntu:18.04
数据卷
## 创建数据卷
docker volume create my-vol
## 列出数据卷
docker volume ls
## 查看数据卷的信息
docker volume inspect my-vol
## 删除数据卷
docker volume rm my-vol
## 删除没有被挂载的的数据卷
docker volume prune
其他命令
## 查看镜像、容器、数据卷所占用的空间。
docker system df