获取镜像
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)