docker镜像命令
[toc]
镜像仓库
Docker login/logout 命令
docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
语法
docker login [OPTIONS] [SERVER]
docker logout [OPTIONS] [SERVER]
OPTIONS说明:
- -u : 登陆的用户名
- -p : 登陆的密码
实例
登陆到Docker Hub
docker login -u 用户名 -p 密码
登出Docker Hub
docker logout
Docker pull 命令
docker pull : 从镜像仓库中拉取或者更新指定镜像
语法
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS说明:
- -a : 拉取所有
tagged
镜像 - --disable-content-trust : 忽略镜像的校验,默认开启
实例
从Docker Hub下载java最新版镜像。
docker pull java
从Docker Hub下载REPOSITORY为java的所有镜像。
docker pull -a java
Docker push 命令
docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
语法
docker push [OPTIONS] NAME[:TAG]
OPTIONS说明:
- --disable-content-trust : 忽略镜像的校验,默认开启
实例
上传本地镜像myapache:v1到镜像仓库中。
docker push myapache:v1
Docker search 命令
docker search : 从Docker Hub查找镜像(一般使用-f
筛选)
语法
docker search [OPTIONS] TERM
OPTIONS说明:
- --automated : 只列出 automated build类型的镜像;
- --no-trunc : 显示完整的镜像描述;
- -f <过滤条件>: 列出收藏数不小于指定值的镜像。
实例
从 Docker Hub 查找所有镜像名包含 java,并且收藏数大于 10 的镜像
runoob@runoob:~$ docker search -f stars=10 java
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
java Java is a concurrent, class-based... 1037 [OK]
anapsix/alpine-java Oracle Java 8 (and 7) with GLIBC ... 115 [OK]
develar/java 46 [OK]
isuper/java-oracle This repository contains all java... 38 [OK]
lwieske/java-8 Oracle Java 8 Container - Full + ... 27 [OK]
nimmis/java-centos This is docker images of CentOS 7... 13 [OK]
参数说明:
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
smile@ubuntu:~$ sudo docker search -f stars=1 --limit 5 redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 10891 [OK]
bitnami/redis Bitnami Redis Docker Image 214 [OK]
bitnami/redis-sentinel Bitnami Docker Image for Redis Sentinel 36 [OK]
circleci/redis CircleCI images for Redis 12 [OK]
bitnami/redis-exporter
本地镜像
Docker images 命令
docker images : 列出本地镜像。
语法
docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS说明:
- -a : 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- --digests : 显示镜像的摘要信息;
- -f : 显示满足条件的镜像;
- --format : 指定返回值的模板文件;
- --no-trunc : 显示完整的镜像信息;
- -q : 只显示镜像ID。
实例
查看本地镜像列表。
- pepository:仓库
- tag:标签
- image id:镜像id(使用hash,是唯一的)
- created:时间
- size:镜像大小
runoob@runoob:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mymysql v1 37af1236adef 5 minutes ago 329 MB
runoob/ubuntu v4 1c06aa18edee 2 days ago 142.1 MB
<none> <none> 5c6e1090e771 2 days ago 165.9 MB
httpd latest ed38aaffef30 11 days ago 195.1 MB
alpine latest 4e38e38c8ce0 2 weeks ago 4.799 MB
mongo 3.2 282fd552add6 3 weeks ago 336.1 MB
redis latest 4465e4bcad80 3 weeks ago 185.7 MB
php 5.6-fpm 025041cd3aa5 3 weeks ago 456.3 MB
python 3.5 045767ddf24a 3 weeks ago 684.1 MB
...
列出本地镜像中REPOSITORY为ubuntu的镜像列表。
root@runoob:~# docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 14.04 90d5884b1ee0 9 weeks ago 188 MB
ubuntu 15.10 4e3b13c8a266 3 months ago 136.3 MB
同一仓库源(mysql5.6\5.7)可以有多个tag版本,代表这个仓库源的不同个版本,我们使用repository:tag来定义不同的镜像
Docker rmi 命令
docker rmi : 删除本地一个或多个镜像。
语法
docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS说明:
- -f : 强制删除;
- --no-prune : 不移除该镜像的过程镜像,默认移除;
实例
强制删除本地镜像 runoob/ubuntu:v4。
root@runoob:~# docker rmi -f runoob/ubuntu:v4
Untagged: runoob/ubuntu:v4
Deleted: sha256:1c06aa18edee44230f93a90a7d88139235de12cd4c089d41eed8419b503072be
Deleted: sha256:85feb446e89a28d58ee7d80ea5ce367eebb7cec70f0ec18aa4faa874cbd97c73
Docker tag 命令
docker tag : 标记本地镜像,将其归入某一仓库。
语法
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
实例
将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像。
root@runoob:~# docker tag ubuntu:15.10 runoob/ubuntu:v3
root@runoob:~# docker images runoob/ubuntu:v3
REPOSITORY TAG IMAGE ID CREATED SIZE
runoob/ubuntu v3 4e3b13c8a266 3 months ago 136.3 MB
Docker build 命令
docker build 命令用于使用 Dockerfile 创建镜像。
语法
docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
- --build-arg=[] : 设置镜像创建时的变量;
- --cpu-shares : 设置 cpu 使用权重;
- --cpu-period : 限制 CPU CFS周期;
- --cpu-quota : 限制 CPU CFS配额;
- --cpuset-cpus : 指定使用的CPU id;
- --cpuset-mems : 指定使用的内存 id;
- --disable-content-trust : 忽略校验,默认开启;
- -f : 指定要使用的Dockerfile路径;
- --force-rm : 设置镜像过程中删除中间容器;
- --isolation : 使用容器隔离技术;
- --label=[] : 设置镜像使用的元数据;
- -m : 设置内存最大值;
- --memory-swap : 设置Swap的最大值为内存+swap,"-1"表示不限swap;
- --no-cache : 创建镜像的过程不使用缓存;
- --pull : 尝试去更新镜像的新版本;
- --quiet, -q : 安静模式,成功后只输出镜像 ID;
- --rm : 设置镜像成功后删除中间容器;
- --shm-size : 设置/dev/shm的大小,默认值是64M;
- --ulimit : Ulimit配置。
- --squash : 将 Dockerfile 中所有的操作压缩为一层。
- --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
- --network: 默认 default。在构建期间设置RUN指令的网络模式
实例
使用当前目录的 Dockerfile
创建镜像,标签为 runoob/ubuntu:v1。
docker build -t runoob/ubuntu:v1 .
使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。
docker build github.com/creack/docker-firefox
也可以通过 -f Dockerfile 文件的位置:
$ docker build -f /path/to/a/Dockerfile .
在 Docker 守护进程执行 Dockerfile
中的指令前,首先会对 Dockerfile 进行语法检查,有语法错误时会返回:
$ docker build -t test/myapp .
Sending build context to Docker daemon 2.048 kB
Error response from daemon: Unknown instruction: RUNCMD
Docker history 命令
docker history : 查看指定镜像的创建历史。
语法
docker history [OPTIONS] IMAGE
OPTIONS说明:
- -H : 以可读的格式打印镜像大小和日期,默认为true;
- --no-trunc : 显示完整的提交记录;
- -q : 仅列出提交记录ID。
实例
查看本地镜像runoob/ubuntu:v3的创建历史。
root@runoob:~# docker history runoob/ubuntu:v3
IMAGE CREATED CREATED BY SIZE COMMENT
4e3b13c8a266 3 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
<missing> 3 months ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.863 kB
<missing> 3 months ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 701 B
<missing> 3 months ago /bin/sh -c #(nop) ADD file:43cb048516c6b80f22 136.3 MB
Docker save 命令
docker save : 将指定镜像保存成 tar 归档文件。
语法
docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 说明:
- -o : 输出到的文件。
实例
将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档
runoob@runoob:~$ docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
runoob@runoob:~$ ll my_ubuntu_v3.tar
-rw------- 1 runoob runoob 142102016 Jul 11 01:37 my_ubuntu_v3.ta
2 篇笔记
docker prune 命令
prune 命令用来``删除不再使用的 docker 对象。
删除所有未被 tag 标记和未被容器使用的镜像:
$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
删除所有未被容器使用的镜像:
$ docker image prune -a
删除所有停止运行的容器:
$ docker container prune
删除所有未被挂载的卷:
$ docker volume prune
删除所有网络:
$ docker network prune
删除 docker 所有资源:
$ docker system prune
docker system prune 命令:
This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
翻译:删除停止的容器、删除所有未被容器使用的网络、删除所有none的镜像。