Docker Image,Container,Repository的概念理解

编程入门 行业动态 更新时间:2024-10-10 17:25:23

Docker Image,Container,Repository的<a href=https://www.elefans.com/category/jswz/34/1770069.html style=概念理解"/>

Docker Image,Container,Repository的概念理解

在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的详细内容可以参阅下面的文章,讲的非常详细。

.html

 

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: /

 Labels:

 Experimental: false

 Insecure Registries:

  127.0.0.0/8

 Registry Mirrors:

  /

 Live Restore Enabled: false

 

3.2 命令

1)修改docker的默认registry

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

{

  "registry-mirrors": [

    ""

  ]

}

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

更多推荐

Docker Image,Container,Repository的概念理解

本文发布于:2024-02-06 05:39:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1746522.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:概念   Image   Docker   Repository   Container

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!