Docker Images
镜像仓库
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