Docker 您所在的位置:网站首页 imag是什么意思中文 Docker

Docker

2024-07-11 16:33| 来源: 网络整理| 查看: 265

Docker - Docker Image及Image命令详解 什么是镜像(Image)

Docker镜像(Docker Image)就是一个只读的模板。比如,一个镜像可以包含一个完整的Ubuntu操作系统环境。镜像可以用来创建Docker容器。 在这里插入图片描述 在Docker的术语里,一个只读层被称为镜像,一个镜像是永远不会变的。 在这里插入图片描述 由于Docker使用一个统一文件系统,Docker进程认为整个文件系统是以读写方式挂载的。 但是所有的变更都发生在顶层的可写层,而下层的原始的只读镜像文件并未变化。由于镜像不可写,所以镜像是无状态的。 在这里插入图片描述

父镜像

每一个镜像都可能依赖于由一个或多个下层镜像组成的另一个镜像。我们有时说,下层那个镜像是上层镜像的父镜像。而没有任何父镜像的镜像,谓之基础镜像(Base Image)。 在这里插入图片描述 可以看一下这篇博客,会让你对Docker的整体架构有一个很清晰的了解:Docker - 这应该就是你想要的Docker架构分析。

Docker Image Help

通过该命令可以查看Image下有哪些命令。

docker image help [root@izoq008ryseuupz ~]# docker image help Usage: docker image COMMAND Manage images Commands: build Build an image from a Dockerfile history Show the history of an image import Import the contents from a tarball to create a filesystem image inspect Display detailed information on one or more images load Load an image from a tar archive or STDIN ls List images prune Remove unused images pull Pull an image or a repository from a registry push Push an image or a repository to a registry rm Remove one or more images save Save one or more images to a tar archive (streamed to STDOUT by default) tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE Run 'docker image COMMAND --help' for more information on a command.

通过docker image COMMAND --help来知道每一个Image命令的详细信息。

Run 'docker image COMMAND --help' for more information on a command. Docker Image LS docker image ls --help [root@izoq008ryseuupz ~]# docker image ls --help Usage: docker image ls [OPTIONS] [REPOSITORY[:TAG]] List images Aliases: ls, images, list Options: -a, --all Show all images (default hides intermediate images) --digests Show digests -f, --filter filter Filter output based on conditions provided --format string Pretty-print images using a Go template --no-trunc Don't truncate output -q, --quiet Only show numeric IDs

比如docker image ls -a,展示所有Image的关键信息。

[root@izoq008ryseuupz ~]# docker image ls -a REPOSITORY TAG IMAGE ID CREATED SIZE node latest 5377c9a2fb1f 5 weeks ago 943MB openzipkin/zipkin latest 1850194f377c 3 months ago 160MB rancher/server stable 98d8bb571885 6 months ago 1.08GB redis 5.0.7 7eed8df88d3b 8 months ago 98.2MB hello-world latest bf756fb1ae65 10 months ago 13.3kB

docker images、docker image ls和docker image ls -a是一样的效果。 在这里插入图片描述 在这里插入图片描述

比如docker image ls -q,就只输出Image的IMAGE ID 。

[root@izoq008ryseuupz ~]# docker image ls -q 5377c9a2fb1f 1850194f377c 98d8bb571885 7eed8df88d3b bf756fb1ae65

其他的命令选项可以自己试一试。

Docker Image Pull

拉取镜像。

docker image pull --help [root@izoq008ryseuupz ~]# docker image pull --help Usage: docker image pull [OPTIONS] NAME[:TAG|@DIGEST] Pull an image or a repository from a registry Options: -a, --all-tags Download all tagged images in the repository --disable-content-trust Skip image verification (default true) --platform string Set platform if server is multi-platform capable -q, --quiet Suppress verbose output

拉取centos:7镜像。

docker image pull centos:7 [root@izoq008ryseuupz ~]# docker image pull centos:7 7: Pulling from library/centos 2d473b07cdd5: Pull complete Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e Status: Downloaded newer image for centos:7 docker.io/library/centos:7

拉取centos:6镜像,只想要输出pull的简要信息,不输出pull的详细信息,如Downloading的进度。

docker image pull -q centos:6 [root@izoq008ryseuupz ~]# docker image pull -q centos:6 docker.io/library/centos:6

在这里插入图片描述

其他的命令选项可以自己试一试。

Docker Image Prune

此命令会把所有未使用的镜像进行删除(Remove unused images),慎用!

docker image prune --help [root@izoq008ryseuupz ~]# docker image prune --help Usage: docker image prune [OPTIONS] Remove unused images Options: -a, --all Remove all unused images, not just dangling ones --filter filter Provide filter values (e.g. 'until=') -f, --force Do not prompt for confirmation docker image prune [root@izoq008ryseuupz ~]# docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Total reclaimed space: 0B Docker Image RM

删除指定镜像。

docker image rm --help [root@izoq008ryseuupz ~]# docker image rm --help Usage: docker image rm [OPTIONS] IMAGE [IMAGE...] Remove one or more images Aliases: rm, rmi, remove Options: -f, --force Force removal of the image --no-prune Do not delete untagged parents

删除centos:7。

docker image rm centos:7 [root@izoq008ryseuupz ~]# docker image rm centos:7 Untagged: centos:7 Untagged: centos@sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e Deleted: sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf Deleted: sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02

强制删除centos:6。

docker image rm -f centos:6 [root@izoq008ryseuupz ~]# docker image rm -f centos:6 Untagged: centos:6 Untagged: centos@sha256:dec8f471302de43f4cfcf82f56d99a5227b5ea1aa6d02fa56344986e1f4610e7 Deleted: sha256:d0957ffdf8a2ea8c8925903862b65a1b6850dbb019f88d45e927d3d5a3fa0c31 Deleted: sha256:af6bf1987c2eb07d73f33836b0d8fd825d7c785273526b077e46780e8b4b2ae9

其他的命令选项可以自己试一试。

Docker Image Tag

对原有镜像打tag,会生成新镜像。

docker image tag --help [root@izoq008ryseuupz ~]# docker image tag --help Usage: docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE docker image tag centos:6 centos:kaven.blog

在这里插入图片描述

Docker Image Save

保存镜像。

docker image save --help [root@izoq008ryseuupz ~]# docker image save --help Usage: docker image save [OPTIONS] IMAGE [IMAGE...] Save one or more images to a tar archive (streamed to STDOUT by default) Options: -o, --output string Write to a file, instead of STDOUT docker image save centos:kaven.blog > kaven.blog.tar [root@izoq008ryseuupz ~]# docker image save centos:kaven.blog > kaven.blog.tar #保存到当前目录 [root@izoq008ryseuupz ~]# ls kaven* kaven.blog.tar docker image save centos:kaven.blog -o /usr/kaven.blog.tar [root@izoq008ryseuupz ~]# docker image save centos:kaven.blog -o /usr/kaven.blog.tar #保存到别的目录 [root@izoq008ryseuupz ~]# ls /usr/kaven* /usr/kaven.blog.tar Docker Image Load

加载镜像。

docker image load --help [root@izoq008ryseuupz ~]# docker image load --help Usage: docker image load [OPTIONS] Load an image from a tar archive or STDIN Options: -i, --input string Read from tar archive file, instead of STDIN -q, --quiet Suppress the load output docker image load < kaven.blog.tar [root@izoq008ryseuupz ~]# docker image rm centos:kaven.blog Untagged: centos:kaven.blog [root@izoq008ryseuupz ~]# docker image load < kaven.blog.tar Loaded image: centos:kaven.blog

在这里插入图片描述

docker image load -i /usr/kaven.blog.tar [root@izoq008ryseuupz ~]# docker image rm centos:kaven.blog Untagged: centos:kaven.blog [root@izoq008ryseuupz ~]# docker image load -i /usr/kaven.blog.tar Loaded image: centos:kaven.blog

在这里插入图片描述 其他的命令选项可以自己试一试。

Docker Image History

显示镜像的操作历史。

docker image history --help [root@izoq008ryseuupz ~]# docker image history --help Usage: docker image history [OPTIONS] IMAGE Show the history of an image Options: --format string Pretty-print images using a Go template -H, --human Print sizes and dates in human readable format (default true) --no-trunc Don't truncate output -q, --quiet Only show numeric IDs docker image history centos:kaven.blog [root@izoq008ryseuupz ~]# docker image history centos:kaven.blog IMAGE CREATED CREATED BY SIZE COMMENT d0957ffdf8a2 20 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B 20 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B 20 months ago /bin/sh -c #(nop) ADD file:0065316a41144e95b… 194MB 2 years ago /bin/sh -c #(nop) MAINTAINER https://github… 0B

只想展示镜像操作历史的简要信息(IMAGE)。

docker image history -q centos:6 [root@izoq008ryseuupz ~]# docker image history -q centos:6 d0957ffdf8a2

其他的命令选项可以自己试一试。

Docker Image Inspect

显示镜像的详细信息。

docker image inspect --help [root@izoq008ryseuupz ~]# docker image inspect --help Usage: docker image inspect [OPTIONS] IMAGE [IMAGE...] Display detailed information on one or more images Options: -f, --format string Format the output using the given Go template docker image inspect centos:6 [root@izoq008ryseuupz ~]# docker image inspect centos:6 [ { "Id": "sha256:d0957ffdf8a2ea8c8925903862b65a1b6850dbb019f88d45e927d3d5a3fa0c31", "RepoTags": [ "centos:6", "centos:kaven.blog" ], "RepoDigests": [ "centos@sha256:dec8f471302de43f4cfcf82f56d99a5227b5ea1aa6d02fa56344986e1f4610e7" ], "Parent": "", "Comment": "", "Created": "2019-03-14T21:20:11.486358099Z", "Container": "d519f3e5c41d16388d3fba0dac626427b21deb98cce150dee80c180b9baf9435", "ContainerConfig": { "Hostname": "d519f3e5c41d", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "/bin/sh", "-c", "#(nop) ", "CMD [\"/bin/bash\"]" ], "ArgsEscaped": true, "Image": "sha256:143abcd43bce45f4fd9ba51c7361051d7ea9e9e1eadb66e5c94a9c1b7754524f", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": { "org.label-schema.build-date": "20181006", "org.label-schema.license": "GPLv2", "org.label-schema.name": "CentOS Base Image", "org.label-schema.schema-version": "1.0", "org.label-schema.vendor": "CentOS" } }, "DockerVersion": "18.06.1-ce", "Author": "https://github.com/CentOS/sig-cloud-instance-images", "Config": { "Hostname": "", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "/bin/bash" ], "ArgsEscaped": true, "Image": "sha256:143abcd43bce45f4fd9ba51c7361051d7ea9e9e1eadb66e5c94a9c1b7754524f", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": { "org.label-schema.build-date": "20181006", "org.label-schema.license": "GPLv2", "org.label-schema.name": "CentOS Base Image", "org.label-schema.schema-version": "1.0", "org.label-schema.vendor": "CentOS" } }, "Architecture": "amd64", "Os": "linux", "Size": 193901906, "VirtualSize": 193901906, "GraphDriver": { "Data": { "MergedDir": "/var/lib/docker/overlay2/ae0f8ac6c397e63561b52142c4e945909b8af2351d28e5af66f3490ff7078587/merged", "UpperDir": "/var/lib/docker/overlay2/ae0f8ac6c397e63561b52142c4e945909b8af2351d28e5af66f3490ff7078587/diff", "WorkDir": "/var/lib/docker/overlay2/ae0f8ac6c397e63561b52142c4e945909b8af2351d28e5af66f3490ff7078587/work" }, "Name": "overlay2" }, "RootFS": { "Type": "layers", "Layers": [ "sha256:af6bf1987c2eb07d73f33836b0d8fd825d7c785273526b077e46780e8b4b2ae9" ] }, "Metadata": { "LastTagTime": "2020-11-22T11:46:01.910880961+08:00" } } ]

其他的命令选项可以自己试一试。

Docker Image Import

从归档文件中创建镜像。

docker image import --help [root@izoq008ryseuupz ~]# docker image import --help Usage: docker image import [OPTIONS] file|URL|- [REPOSITORY[:TAG]] Import the contents from a tarball to create a filesystem image Options: -c, --change list Apply Dockerfile instruction to the created image -m, --message string Set commit message for imported image --platform string Set platform if server is multi-platform capable docker image import kaven.blog.tar centos:6.kaven [root@izoq008ryseuupz ~]# docker image import kaven.blog.tar centos:6.kaven sha256:3a568400d73096f71c5f5165f110414bb83e8024bca2ee3eea77336a194e920f

在这里插入图片描述 其他的命令选项可以自己试一试。

Docker Image Push

上传镜像到仓库。

docker image push --help [root@izoq008ryseuupz ~]# docker image push --help Usage: docker image push [OPTIONS] NAME[:TAG] Push an image or a repository to a registry Options: --disable-content-trust Skip image signing (default true) Docker Image Build

创建镜像。

docker image build --help [root@izoq008ryseuupz ~]# docker image build --help Usage: docker image build [OPTIONS] PATH | URL | - Build an image from a Dockerfile Options: --add-host list Add a custom host-to-IP mapping (host:ip) --build-arg list Set build-time variables --cache-from strings Images to consider as cache sources --cgroup-parent string Optional parent cgroup for the container --compress Compress the build context using gzip --cpu-period int Limit the CPU CFS (Completely Fair Scheduler) period --cpu-quota int Limit the CPU CFS (Completely Fair Scheduler) quota -c, --cpu-shares int CPU shares (relative weight) --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) --cpuset-mems string MEMs in which to allow execution (0-3, 0,1) --disable-content-trust Skip image verification (default true) -f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile') --force-rm Always remove intermediate containers --iidfile string Write the image ID to the file --isolation string Container isolation technology --label list Set metadata for an image -m, --memory bytes Memory limit --memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap --network string Set the networking mode for the RUN instructions during build (default "default") --no-cache Do not use cache when building the image -o, --output stringArray Output destination (format: type=local,dest=path) --platform string Set platform if server is multi-platform capable --progress string Set type of progress output (auto, plain, tty). Use plain to show container output (default "auto") --pull Always attempt to pull a newer version of the image -q, --quiet Suppress the build output and print image ID on success --rm Remove intermediate containers after a successful build (default true) --secret stringArray Secret file to expose to the build (only if BuildKit enabled): id=mysecret,src=/local/secret --security-opt strings Security options --shm-size bytes Size of /dev/shm --squash Squash newly built layers into a single new layer --ssh stringArray SSH agent socket or keys to expose to the build (only if BuildKit enabled) (format: default|[=|[,]]) --stream Stream attaches to server to negotiate build context -t, --tag list Name and optionally a tag in the 'name:tag' format --target string Set the target build stage to build. --ulimit ulimit Ulimit options (default [])

这里会介绍将一个简单的C语言程序,Build成一个Image。

先在当前目录下创建一个hello.c程序。

vim hello.c

程序如下:

#include int main() { printf("hello kaven\n"); printf("this is docker\n"); }

不知道怎么退出VIM,可以看一下这篇博客:怎么保存退出 vim 编辑。

[root@izoq008ryseuupz ~]# ls hello.c kaven.blog.tar logs mall.jar [root@izoq008ryseuupz ~]# gcc hello.c -o hello [root@izoq008ryseuupz ~]# ls hello hello.c kaven.blog.tar logs mall.jar [root@izoq008ryseuupz ~]# ./hello hello kaven this is docker

在当前目录下创建Dockerfile。

vim Dockerfile

输入:

FROM scratch ADD hello / CMD ["/hello"]

现在看不懂没关系,自己跟着体验一次,之后的博客会详细讲解这些Dockerfile操作。

docker image build -t kaven/hello:v1 . [root@izoq008ryseuupz ~]# docker image build -t kaven/hello:v1 . Sending build context to Docker daemon 564.4MB Step 1/3 : FROM scratch ---> Step 2/3 : ADD hello / ---> 5d49f50c725b Step 3/3 : CMD ["/hello"] ---> Running in b0b3bdce9078 Removing intermediate container b0b3bdce9078 ---> b1013ca7925d Successfully built b1013ca7925d Successfully tagged kaven/hello:v1

这样kaven/hello:v1就有了。 在这里插入图片描述 Docker Image及Image命令详解就介绍到这里。

写博客是博主记录自己的学习过程,如果有错误,请指正,谢谢!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有