镜像仓库

Linux 本地镜像仓库:/var/lib/docker/image

镜像应该是分层存储的。

Docker images 是存储在镜像仓库服务Images Registry。Docker 客户端的镜像仓库服务是可配置的,默认使用的是Docker Hub。

镜像仓库服务包含多个镜像仓库 Image Repository(同一个镜像的不同版本)。一个镜像仓库中包含多个镜像Image。

Docker Hub 也分为Official Repository 和 Unofficial Repository。

1docker pull <repository>:<tag>
2// 如果省略tag默认会pull tag 为 latest的image。但是latest并不保证这是仓库中最新的镜像。

如果希望从第三方镜像服务仓库获取镜像(not Docker Hub),则需要在镜像仓库名称前加上第三方镜像仓库服务的DNS名称。

1# gcr.io -> Google Container Images Registry.
2docker pull gcr.io/k8s-staging-nfd/node-feature-discovery:master

Image Tag

不同的Images Tag可以绑定同一个Image ID

通过--filter 来过滤docker image ls 返回的内容

1docker image ls --filter dangling=true

dangling image -> with out name & tag :.

通常因为构建新的镜像,为该镜像打了一个已经存在的标签。Docker会remove old image上的标签,将该标签标在新Image上。Old Image 就会变成 dangling image。

可以通过docker image prune 移除所有的Dangling images。如果添加下了-a参数,Docker会移除所有没有使用的镜像。

docker image 格式化输出

go text template

1docker images --format "{{.Repository}}:{{.Tag}}:{{.Size}}"

从容器创建一个镜像

1docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
2docker commit -a "bytegopher.com" -m "first commit" a404c6c174a2  mymysql:v1
3# -a 提交镜像的作者
4# -m 提交信息

Re-Tag The image

1docker tag images:tag  new-image:new-tag

镜像分层

Docker 是由一些松耦合的只读镜像层组成,Docker负责堆叠这些层,并将他们表示为单个统一的对象。

docker pull images 的时候可以看到是逐层下载的。

Builder Image

WORKDIR: 如果没有文件夹,会创建并进入。

Docker Build Use Proxy

1
2docker build -f Dockerfile ./ -t image-name:tag  --build-arg http_proxy=$(HTTP_PROXY) --build-arg https_proxy=$(HTTPS_PROXY)
3
4
5--build-arg http_proxy=http://proxy-prc.intel.com:913 --build-arg https_proxy=http://proxy-prc.intel.com:913