1. 获取镜像
## 格式
docker pull [选项] [仓库地址[:端口]/]仓库名[:标签]
## 解释
# 仓库地址:一般格式是<域名/IP>:[:端口号],默认地址是Docker Hub
# 仓库名:为两段式名称,即<用户名>/<软件名>,对于Docker Hub,如果不给用户名,默认为library
## 示例
docker pull ubuntu:16.04
2. 运行镜像
## 格式
docker run [选项] 镜像 [命令] [参数...]
## 示例
docker run -it --rm ubuntu:16.04 bash
## 示例解释
# -it:这是两个参数,一个是-i,表示交互式操作,一个是-t表示终端
# --rm:这个参数是说容器退出后随之将其删除
# ubuntu:16.04: 这是指用ubuntu:16.04镜像为基础来启动容器。
# bash:放在镜像名后的是命令,这里我们希望有个交互式shell,因此用的是bash
## 运行镜像的参数有很多,可以使用docker run --help查看。
3. 列出镜像
## 列表包含了仓库名、标签、镜像id、创建时间及所占用空间
docker image ls(效果等同于:docker images)
## 仓库名、标签均为<none>的镜像称为虚悬镜像(dangling image)
docker image ls -f dangling=true(效果等同于:docker images -f dangling=true)
## 虚悬镜像没有存在价值,可以随意删除,使用命令:
docker image prune
延伸阅读:如何产生虚悬镜像?
- 创建一个空文件夹(非必须),主要是为了避免构建时引入其他不必要的文件:
mkdir dockerspace
- 进入新建的文件夹,并新建Dockerfile文件,内容如下:
FROM ubuntu:16.04
CMD echo "leisure.wang"
- 构建镜像:docker build .
4. 查看镜像、容器、数据卷所占用的空间
docker system df
5. 删除本地镜像
## 格式
docker image rm [选项] <镜像1> [<镜像2> ...]
等同于
docker rmi [选项] <镜像1> [<镜像2> ...]
## 批量删除指定类型镜像
# 删除所有仓库名为ubuntu的镜像
docker image rm $(docker image ls -q ubuntu)
## 删除某个镜像之前的镜像
# 删除ubuntu:16.04之前的镜像,不包含ubuntu:16.04
docker image rm $(docker image ls -q -f before=ubuntu:16.04)
6. 容器基本操作
## 列出所有的容器
docker ps -a
等同于
docker container ps -a
等同于
docker container ls -a
等同于
docker container list -a
## 启动已终止的容器
docker start [选项] 容器1 [容器2...]
等同于
docker container start [选项] 容器1 [容器2...]
## 停止容器
docker stop [选项] 容器1 [容器2...]
等同于
docker container stop [选项] 容器1 [容器2...]
## 重启容器
docker restart [选项] 容器1 [容器2...]
等同于
docker container restart [选项] 容器1 [容器2...]
## 删除所有已终止的容器
docker container prune [选项]
7. 进入容器
## 格式
docker exec [选项] 容器 命令 [参数...]
## 示例
docker exec -it 容器ID /bin/bash
8. 导出容器
docker export 容器id > 文件名.tar
9. 导入容器
## 可以使用docker import从容器快照文件中再导入为镜像
cat 文件名.tar | docker import - 用户名/镜像名:标签
## 也可以通过指定URL或者某个目录来导入
docker import http://leisure.wang/imagerepo
10. 登录登出
## 登录
docker login [选项] [仓库地址]
## 登出
docker logout [仓库地址]
11. 搜索镜像
docker search [选项] 镜像名
12. 对镜像重命名、重打标签
docker tag 源镜像[:标签] 目标镜像[:标签]
13. 推送镜像到仓库
## 命令格式
docker push [选项] 镜像名[:标签]
## 说明
如果镜像名不包含仓库地址信息,则会推送至hub.docker.com域个人账户下仓库内,默认私有;
如果镜像名包含了仓库地址信息,则会推送至指定仓库中。