获取镜像

docker pull [选项] [Docker Registry 地址[:端口号]/] 仓库名[:标签]

例:docker pull ubuntu:16.04

具体选项可通过 docker pull --help 命名看到

Docker Registry 默认为Docker Hub,地址格式为<IP/域名>
例:docker pull ubuntu:16.04

运行容器

docker run 仓库名
以上面的Ubuntu为例,如果我们打算启动里面的bash并进行交互式操作

docker run -it --rm ubuntu:16.04 bash
  • -it: 这是两个参数,一个是-i:交互式操作,一个是-t终端。我们这里打打算进入bash执行一些命令并查看返回结果,因此我们需要交互式终端
  • --rm: 这个参数会让容器退出后删除,用以避免浪费空间
  • ubuntu:16.04: 以该镜像作为基础来启动容器
  • bash: 放在镜像后的是命令,这里我们希望有个交换式Shell\

想要进入正在运行的ubuntu容器并进行交互式操作:

docker exec -it [id] bash

nginx镜像启动一个容器,命名为webserver,映射到80端口

docker run --name webserver -d -p 80:80 nginx

修改容器内容

docker exec -it webserver bash
root@b7d21b2180ce:/# echo '<h1>Hello,world</h1>' > /usr/share/nginx/html/index.html
root@b7d21b2180ce:/# exit

此时我们修改了容器的存储层,可以通过docker diff看到具体的改动
通过docker commit可以将容器保存为镜像(但并不推荐这样做)
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]

列出镜像

docker image ls
  • 列出虚悬镜像docker image ls -f dangling=true
  • 删除虚悬镜像docker image prune
  • 列出包括中间层镜像在内的所有镜像docker image ls -a

镜像体积

docker system df

列出部分镜像

  • 根据仓库名docker image ls ubuntu
  • 列表项目根据时间

docker image ls -f since=ubuntu
docker image ls -f before=ubuntu

以特定格式显示

docker image ls --format "{{.ID}}:{{.Repository}}"
等间距显示
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

删除本地镜像

docker image rm [选项] <镜像1>[<镜像2>...]

其中,<镜像>可以是镜像ID镜像名镜像摘要

使用docker image ls命令配合

删除所有仓库名为hello-world的镜像:

docker image rm (docker image ls -q hello-world)

删除所有在ubuntu之前的镜像

docker image rm (docker image ls -q -f before=ubuntu)

homura
48 声望9 粉丝

Python,Data Analysis,Machine Learing