Docker Image,Container,Repository的概念理解
发布日期:2021-10-03 22:59:30 浏览次数:32 分类:技术文章

本文共 3983 字,大约阅读时间需要 13 分钟。

在Docker的使用过程中,我们经常说Image,Container,Repository, 他们之间具体是一个什么的关系,又是如何使用的,这里基于自己的理解整理一下。

 

1 Image 镜像

1.1 说明

Image(镜像):是一个只读的特殊的文件系统,它提供容器运行时所需的程序、库、资源、配置等文件,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

Image采用分层设计,每一层称为“layer”,这些layer存放在/var/lib/docker/<storage-driver>/目录下,这里的storage-driver可以有很多种如:AUFS、OverlayFS、VFS、Brtfs等。可以通过docker info命令查看存储驱动。默认是overlay2

可以把Docker Image理解为一个操作系统的镜像。

关于overlayfs的详细内容可以参阅下面的文章,讲的非常详细。

 

1.2 命令

1)查看所有镜像

$ docker images

$ docker images

REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE

openjdk                                    17-slim             be3ff95aac30        8 weeks ago         397MB

ubuntu                                     18.04               2c047404e52d        3 months ago        63.3MB

redis                                      eiconfig            2f09e9d4fdc2        7 days ago          162MB

constructor                                eiconfig            7fc57b5502f3        7 days ago          681MB

192.168.1.118:9444/datalabel/confweb       6045da745f76a       7fc57b5502f3        7 days ago          681MB

192.168.1.118:9444/datalabel/confweb       6045dfcf8e5ec       7fc57b5502f3        7 days ago          681MB

192.168.1.118:9444/datalabel/confweb       60485c2d854a1       7fc57b5502f3        7 days ago          681MB

confweb                                    eiconfig            7fc57b5502f3        7 days ago          681MB

<none>                                     <none>              299e9642319a        7 days ago          162MB

<none>                                     <none>              cba1396541a7        7 days ago          681MB

<none>                                     <none>              d88d069849b2        7 days ago          102MB

redis-test                                 latest              a19a87524b01        7 days ago          102MB

2)删除一个镜像

$docker rmi IMAGE-ID

IMAGE-ID是使用docker images命令显示的IMAGE ID

  强制删除一个image,使用 $docker rmi -f IMAGE-ID

3)删除所有镜像

docker rmi -f $(docker images -q)

2 Container 容器

2.1 说明

Container(容器):容器是Image的一个具体的实例,一个image可以启动多个container,这些container是彼此隔离的。

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程。

2.2 常用命名

1)查看容器

$ docker ps

列出的是正在执行的容器

$ docker ps -a  列出所有容器

$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

00dbb09c58a4        ubuntu:18.04        "/bin/bash"         2 minutes ago       Up 2 minutes                            ubuntos

2)删除一个容器

$docker rm CONTAINER-ID

强制删除一个容器使用$docker rm –f CONTAINER-ID

3)删除所有的容器

$docker rm $(docker ps -a -q)

 

3 Repository 仓库

3.1 说明

Repository是Docker用来集中存放镜像文件的地方类似于代码仓库。通常,一个仓库会包含同一个软件不同版本的镜像,标签用于对应该软件的各个版本。可以通过 <仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签.。最常使用的 Registry是官方的 Docker Hub ,这也是默认的 Registry,有大量的高质量的官方镜像。除了使用公开服务外,用户还可以在本地搭建私有Docker Registry。

 

Docker hub作为官方的registry,速度会慢,在docker 安装完毕后,可以修改为国内的registry。

可以使用$docker info 命令查看使用的registry。

$ docker info

Client:

 Debug Mode: false

Server:

 Containers: 11

  Running: 1

  Paused: 0

  Stopped: 10

 Images: 70

 Server Version: 19.03.13

 Storage Driver: overlay2

  Backing Filesystem: extfs

  Supports d_type: true

  Native Overlay Diff: true

 Logging Driver: json-file

 Cgroup Driver: cgroupfs

 Plugins:

  Volume: local

  Network: bridge host ipvlan macvlan null overlay

  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog

 Swarm: inactive

 Runtimes: runc

 Default Runtime: runc

 Init Binary: docker-init

 containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175

 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd

 init version: fec3683

 Security Options:

  apparmor

  seccomp

   Profile: default

 Kernel Version: 5.4.0-52-generic

 Operating System: Ubuntu 18.04.3 LTS

 OSType: linux

 Architecture: x86_64

 CPUs: 2

 Total Memory: 7.776GiB

 Name: robin

 ID: AMVR:LHED:3HPV:SKZV:TUQ2:TSAF:HLCE:RYFU:YCUU:2HXL:UE42:HYOH

 Docker Root Dir: /var/lib/docker

 Debug Mode: false

 Registry: https://index.docker.io/v1/

 Labels:

 Experimental: false

 Insecure Registries:

  127.0.0.0/8

 Registry Mirrors:

  https://docker.mirrors.ustc.edu.cn/

 Live Restore Enabled: false

 

3.2 命令

1)修改docker的默认registry

1 在/etc/docker/daemon.json文件中加入如下内容:

{

  "registry-mirrors": [

    "https://docker.mirrors.ustc.edu.cn"

  ]

}

2 重启docker

$sudo systemctl restart docker

 

2) 开启docker 的HTTP连接

开启docker的http连接功能。步骤如下:

1编辑docker宿主机文件/lib/systemd/system/docker.service

$sudo vi /lib/systemd/system/docker.service

 

2修改以ExecStart为开头的行

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2379

加上如红色所示的部分,端口可以根据需要自己定义。

3 通知docker服务做出的修改

$systemctl daemon-reload

4 重启docker服务

$sudo systemctl restart docker

重启之后,可以看到dockerd进程启用了2379端口。后面就可以使用http访问docker了。

$ sudo netstat -anp |grep docker

tcp6       0      0 :::2379                 :::*                    LISTEN      941/dockerd

转载地址:https://blog.csdn.net/lclfans1983/article/details/115009977 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:开源JSON库Rapidjson与cJSON对比
下一篇:Docker network driver分类及介绍 Bridge、host、overlay、macvlan(1)

发表评论

最新留言

很好
[***.229.124.182]2024年04月20日 22时05分14秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

在SpringBoot中使用【阿里云OSS对象存储】存取图片 2021-06-30
[Java爬虫] 使用 HtmlUnit + Xpath 模拟点击、动态获取信息 2021-06-30
使用 SpringBoot 之 JPA 整合 Redis 实现缓存 2021-06-30
SpringBoot 结合 JSR303 对前端数据进行校验 2021-06-30
SpringBoot 整合 MongoDB 之 MongoTemplate 实现 CRUD、分页接口 2021-06-30
[增删改查] SpringBoot 整合 Solr 之 SolrClient 实现 CRUD、分页接口、高亮显示 2021-06-30
[Python爬虫] 模拟浏览器、代理ip、开启日志、超时处理、异常处理、登录、下载图片 2021-06-30
在 SpringBoot 中使用 @EnableAsync、@Async 轻松实现异步任务 2021-06-30
《学习 Go 语言》学习心得 2021-06-30
[汇编语言] 带有颜色的字符串显示(hello world 级别程序) 2021-06-30
[增删改查] Python 之使用 Django + LayUI 做后台管理 2021-06-30
Docker 镜像容器 之 导出导入、上传镜像到 DockerHub 上、Nexus私库 的引入 2021-06-30
centos7 下将 Django2.0 项目部署到 阿里云 上(uwsgi3 +Nginx ) 2021-06-30
前后端分离 SpringBoot + SpringSecurity 权限解决方案 2021-06-30
前后端分离 SpringBoot + SpringSecurity + JWT + RBAC 实现用户无状态请求验证 2021-06-30
[Python爬虫] 使用 Beautiful Soup 4 快速爬取所需的网页信息 2021-06-30
在 Centos7 下使用 Docker 快速搭建 Hadoop 集群 2021-06-30
Python web 框架 Flask 蓝图的正确使用姿势 2021-06-30
领扣LintCode算法问题答案-1053. 至少是其他数字两倍的最大数 2021-06-30
领扣LintCode算法问题答案-1054. 最少费用的爬台阶方法 2019-04-27