草庐IT

Docker 实战 Image 补充

半身风雪 2023-07-18 原文

​​​​​​

作者:半身风雪
上一节:Docker 示例更新
 简介:前面我们总共花费了6节内容,来讲解Docker 的核心知识点,命令等内容,从本节开始,我将和大家一起,正式进入Docker 学习的实战环节。


Docker 实战 Image 补充

目录

​​​​​从Docker Hub 拉取已有镜像

列举所有镜像

查看某个镜像的配置信息

移除镜像

查看所有的镜像操作命令



​​​​​​​

从Docker Hub 拉取已有镜像

Docker 镜像(image)包含了程序代码和程序运行所依赖的所有环境。 Docker 镜像一般存放在镜像仓库服务(Image Registry)里,默认的镜像仓库服务是Docker Hub。可以制作、构建镜像、将镜像上传到镜像仓库服务,从而可以在其他地方从镜像仓库服务里拉取镜像。

 从Docker Hub拉取 helloworld 镜像命令:

$ docker image pull library/hello-world

运行结果如下:

列举所有镜像

Docker 镜像(image)包含了程序代码和程序运行所依赖的所有环境。 Docker 镜像一般存放在镜像仓库服务(Image Registry)里,默认的镜像仓库服务是Docker Hub。 用户可以制作、构建镜像、将镜像上传到镜像仓库服务,从而可以在其他地方从镜像仓库服务里拉取镜像。

一个镜像的名字也叫镜像的仓库名,英文是REPOSITORY,本地列举所有镜像的命令:

$ docker image ls

输出 hello-world 结果:

查看某个镜像的配置信息

 镜像的配置信息查看命令:

$ docker image inspect hello-world

上面命令运行可以看到镜像启动后会立刻执行的命令CMD:

[

  {

​    "Id": "sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412",

​    "RepoTags": [

​      "hello-world:latest"

​    ],

​    "RepoDigests": [

​      "hello-world@sha256:13e367d31ae85359f42d637adf6da428f76d75dc9afeb3c21faea0d976f5c651"

​    ],

​    "Parent": "",

​    "Comment": "",

​    "Created": "2021-09-23T23:47:57.442225064Z",

​    "Container": "8746661ca3c2f215da94e6d3f7dfdcafaff5ec0b21c9aff6af3dc379a82fbc72",

​    "ContainerConfig": {

​      "Hostname": "8746661ca3c2",

​      "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 [\"/hello\"]"

​      ],

​      "Image": "sha256:b9935d4e8431fb1a7f0989304ec86b3329a99a25f5efdc7f09f3f8c41434ca6d",

​      "Volumes": null,

​      "WorkingDir": "",

​      "Entrypoint": null,

​      "OnBuild": null,

​      "Labels": {}

​    },

​    "DockerVersion": "20.10.7",

​    "Author": "",

​    "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": [

​        "/hello"

​      ],

​      "Image": "sha256:b9935d4e8431fb1a7f0989304ec86b3329a99a25f5efdc7f09f3f8c41434ca6d",

​      "Volumes": null,

​      "WorkingDir": "",

​      "Entrypoint": null,

​      "OnBuild": null,

​      "Labels": null

​    },

​    "Architecture": "amd64",

​    "Os": "linux",

​    "Size": 13256,

​    "VirtualSize": 13256,

​    "GraphDriver": {

​      "Data": {

​        "MergedDir": "/var/lib/docker/overlay2/cad20b84d6740bbb0dfbe96058268e56843e19e4703a1d328a730ad68605f0e7/merged",

​        "UpperDir": "/var/lib/docker/overlay2/cad20b84d6740bbb0dfbe96058268e56843e19e4703a1d328a730ad68605f0e7/diff",

​        "WorkDir": "/var/lib/docker/overlay2/cad20b84d6740bbb0dfbe96058268e56843e19e4703a1d328a730ad68605f0e7/work"

​      },

​      "Name": "overlay2"

​    },

​    "RootFS": {

​      "Type": "layers",

​      "Layers": [

​        "sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359"

​      ]

​    },

​    "Metadata": {

​      "LastTagTime": "0001-01-01T00:00:00Z"

​    }

  }

]

移除镜像

可以通过命令docker image rm删除不用的镜像,我们先通过命令查看有哪些镜像。

$ docker image ls

可以看到我们当前所有的镜像:

如果镜像没有被启动过,直接可以使用下面的命令删除成功:(删除 docker/getting-started 镜像)

$ docker image rm cb90f98fd791 

运行如下图:

但是如果镜像被启动了,就会报错:

我们可以通过docker ps命令查看被启动过的镜像状态。

可以看到,其中

  • 横向的红框是ID为09d01ed9156b的镜像启动后的container(参考下一节)的状态

  • 纵向的红框是所有启动的container的当前状态,可以看到图里的都处于Exited的退出状态。

查看所有的镜像操作命令

除了上面介绍的一些命令,我们也可以查看 docker image 的所有命令:

$ docker image

运行结果如下:

有关Docker 实战 Image 补充的更多相关文章

  1. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  2. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  3. ruby-on-rails - Rails - Carrierwave 进程抛出 ArgumentError : no images in this image list - 2

    在尝试实现应用auto_orient的过程之后!对于我的图片,我收到此错误:ArgumentError(noimagesinthisimagelist):app/uploaders/image_uploader.rb:36:in`fix_exif_rotation'app/controllers/posts_controller.rb:12:in`create'Carrierwave在没有进程的情况下工作正常,但在添加进程后尝试上传图像时抛出错误。流程如下:process:fix_exif_rotationdeffix_exif_rotationmanipulate!do|image|

  4. ruby-on-rails - 私有(private) gem 没有安装在 docker 中 - 2

    我正在尝试使用docker运行一个Rails应用程序。通过github的sshurl安装的gem很少,如下所示:Gemfilegem'swagger-docs',:git=>'git@github.com:xyz/swagger-docs.git',:branch=>'my_branch'我在docker中添加了keys,它能够克隆所需的repo并从git安装gem。DockerfileRUNmkdir-p/root/.sshCOPY./id_rsa/root/.ssh/id_rsaRUNchmod700/root/.ssh/id_rsaRUNssh-keygen-f/root/.ss

  5. ruby-on-rails - 将 Heroku 环境变量传输到 Docker 实例 - 2

    我在Heroku上构建了一个必须在Docker容器内运行的RoR应用程序。为此,我使用officialDockerfile.因为它在Heroku中很常见,所以我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL在我的应用程序中可用。但是,如果我尝试其他一些使用环境变量(在我的例子中是Mailtrap)的加载项,变量不会在运行时复制到实例中。所以我的问题很简单:如何让docker实例在Heroku上执行时知道环境变量?您可能会问,我已经知道我们可以在docker-compose.yml中指定一个environment指令。我想避免这种情况,以便能够通过项目

  6. ruby - 更新 gem 时 Docker 包安装缓存问题 - 2

    我在开发和生产中都使用docker,真正困扰我的一件事是docker缓存的简单性。我的ruby​​应用程序需要bundleinstall来安装依赖项,因此我从以下Dockerfile开始:添加GemfileGemfile添加Gemfile.lockGemfile.lock运行bundleinstall--path/root/bundle所有依赖项都被缓存,并且在我添加新gem之前效果很好。即使我添加的gem只有0.5MB,从头开始安装所有应用程序gem仍然需要10-15分钟。由于依赖项文件夹的大小(大约300MB),然后再花10分钟来部署它。我在node_modules和npm上遇到了

  7. ruby-on-rails - 带有选项的 link_to image_tag (rel, title) - 2

    在HTML中我会写:但我必须针对ruby​​onrails对其进行调整,而且我对它还很陌生...所以我尝试了:rel="lightbox"title="mycaption">...但它不起作用,因为“rel="lightbox"title="mycaption">”部分未应用但出现在html部分上+我看到了2个图像,而我应该只看到“imagethumb”。我也试过:"lightbox",:title=>"mycaption")%>我也看到了这两张图...我应该怎么做才能获得与我编写的HTML代码等效的内容? 最佳答案 试试这个"")

  8. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  9. 你真正了解什么是接口测试么?接口实战一“篇”入魂 - 2

    最近在工作中,看到一些新手测试同学,对接口测试存在很多疑问,甚至包括一些从事软件测试3,5年的同学,在聊到接口时,也是一知半解;今天借着这个机会,对接口测试做个实战教学,顺便总结一下经验,分享给大家。计划拆分成4个模块跟大家做一个分享,(接口测试、接口基础知识、接口自动化、接口进阶)感兴趣的小伙伴记得关注,希望对你的日常工作和求职面试,带来一些帮助。注:文章较长有5000多字,希望小伙伴们认真看完,当然有些内容对小白同学不是太友好,如果你需要详细了解其中的一些概念或者名词,请在文章之后留言,后续我将针对大家的疑问,整理输出一些大家感兴趣的文章。随着开发模式的迭代更新,前后端分离已不是新的概念,

  10. 转转测试环境docker化实践 - 2

        测试环境对于任何一个软件公司来讲,都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几套环境发展成现在的任意的docker动态环境+docker稳定环境环境体系。期间环境系统不断的演进,去适应转转集群扩张、新业务的扩展,走了一些弯路,但最终我们将系统升级到了我们认为的终极方案。下面我们介绍一下转转环境的演进和最终的解决方案。1测试环境演进1.1单体环境    转转在2017年成立之初,5台64G内存的机器,搭建5个完整的测试环境。就满足了转转的日常所需。一台分给开发,几台分给测试。通过沟通协调就能解决多分支并行开发下冲突问题。1.2动态环境+稳定环境    随着微服务化的进

随机推荐