首页 > 其他分享 >第二章_Docker镜像操作

第二章_Docker镜像操作

时间:2024-06-12 11:32:23浏览次数:21  
标签:dhcpd 标签 io dhcp 镜像 Docker 第二章 docker

        Docker运行容器前需要本地存在对应的镜像,如果不存在本地镜像,Docker就会尝试从默认镜像仓库https; / /hub , docker , com下载.这是由Docker官方维护的一个公共仓库,可以满足用户的绝大部分需求,用户也可以通过配置来使用自定义的镜像仓库。

        下面将具体介绍围绕镜像这一核心概念的具体操作.

1、搜索镜像

        在使用下载镜像前,可以使用docker search命令搜索远端官方仓库中的共享镜像,

        命令格式:docker search关键字

        例如、搜索关键字为dhcp的镜像

[root@blab ~]# docker search dhcp
INDEX       NAME                                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/networkboot/dhcpd                    Suitable for running a DHCP server for you...   96                   [OK]
docker.io   docker.io/joebiellik/dhcpd                     DHCP server running on Alpine Linux             21                   [OK]
docker.io   docker.io/homeall/dhcphelper                   DHCP relay for DHCP Server in the docker c...   6                    
docker.io   docker.io/instantlinux/dhcpd-dns-pxe           Serve DNS, DHCP and TFTP from a small Alpi...   6                    [OK]
docker.io   docker.io/gns3/dhcp                            A DHCP container for GNS3 using dnsmasq         4                    [OK]
...省略...

        返回很多包含dhcp关键字的镜像.其中返回信息包括镜像名称{(NAME)、描述(DESCRIPTION) ,星级(STARS)、是否官方创建〈OFFICIAL)、是否主动创建(AUTOMATED)。默认的输出结果会按照星级评价进行排序.表示该镜像受欢迎程度,在下载镜像时,可以参考这一项.在搜索时还可以使用-s或者——stars=x显示指定星级以上的镜像,x为任意数.星级越高表示越受欢迎,是否为官方镜像-项是指是否是由官方项目组创建和维护的镜像,—般官方项目组维护的镜像使用单个单词作为镜像名称.我们称为基础镜像或者根镜像,像reinblau/dhcp这种命名方式的镜像,表示是由Docker Hb的用户 reinblau创建并维护的镜像.带有用户名为前缀;是否主动创建资源则是指是否允许用户验证镜像的来源和内容.

        使用dockersearch命令只能查找镜像,镜像的标签无法查找.因此如果需要查找docker标签.需要从网页上访问镜像仓库https ;/ /hub , docker , com进行查找。

2、获取镜像

        搜索到符合需求的镜像.可以使用docker pull命令从网络下载镜像到本地使用.

        命令格式:docker    pull    仓库名称    [:标签]

        对于Docker镜像来说.如果下载镜像时不指定标签.则默认会下载仓库中最新版本的镜像,即选择标签为 latest,也可通过指定的标签来下载特定版本的某一镜像。这里标签就是用来区分镜像版本的。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

        例如,下载镜像docker.io/networkboot/dhcpd

[root@blab ~]# docker pull docker.io/networkboot/dhcpd
Using default tag: latest
Trying to pull repository docker.io/networkboot/dhcpd ... 
latest: Pulling from docker.io/networkboot/dhcpd
d19f32bd9e41: Pulling fs layer 
1f23f0afd8a5: Pulling fs layer 
4928050fa1d6: Pulling fs layer 
...省略...

        从整个下载的过程可以看出,镜像文件是由若干层(Layer)组成.我们称为ALFS(联合文件系统),是实现增量保存与更新的基础.下载过程中会输出镜像的各层信息,镜像下载到本地之后就可以随时使用该镜像了。

        用户也可以选择从其他注册服务器仓库下载.这时需要在仓库名称前指定完整的仓库注册服务器地址。

3、查看镜像信息

        用户可以使用docker images命令查看下载到本地的所有镜像.

        查看指定镜像的命令语法:

docker images 仓库名称:[标签]

        如果不指定仓库名称和标签.直接查看本地所有镜像.输入如下:

[root@blab ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
docker.io/networkboot/dhcpd   latest              b57b32205814        3 years ago         79.3 MB

从回显的信息中可以读出以下信息:

  • REPOSITORY:镜像属于的仓库。
  • TAG:镜像的标签信息,标记同一个仓库中的不同镜像.
  • MAGE ID:镜像的唯一-D号,唯一标识了该镜像。
  • CREATED:镜像创建时间.
  • VIRTUAL SIZE:镜像大小。

用户还可以根据镜像的唯一标识ID号,获取镜像的详细信息。命令格式:

docker inspect 镜像ID号

例如,获取镜像的详细信息;

[root@blab ~]# docker inspect b57b32205814
[
    {
        "Id": "sha256:b57b32205814001aad3aad19908ebfdb92a6fc1ea59001487b3850bb0296ac9d",
        "RepoTags": [
            "docker.io/networkboot/dhcpd:latest"
        ],
        "RepoDigests": [
            "docker.io/networkboot/dhcpd@sha256:cc08468fbecfbe18002450620ede54d2d33892524076ac53c34361210740bcf6"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2020-11-05T15:42:23.475932534Z",
        "Container": "1c7e74263c3b21a78806cdf5e73fb59c318053fbe68ee6e0c1a1f84c72b379c0",
        "ContainerConfig": {
...省略...

        镜像的详细信息中包括创建时间.系统版本、主机名.域名、用户.卷、标签、操作系统.设备ID等各种信息。

        为了在后续工作中使用这个镜像.可以用dockertag命令来为本地的镜像添加新的标签。

        命令格式:

docker tag 名称:[标签]新名称:[新标签]

        例如,本地镜像添加新的名称为dcp,新的标签为dhcp:

[root@blab ~]# docker tag docker.io/networkboot/dhcpd dhcp:dhcp
[root@blab ~]# docker images | grep dhcp
docker.io/networkboot/dhcpd   latest              b57b32205814        3 years ago         79.3 MB
dhcp                          dhcp                b57b32205814        3 years ago         79.3 MB

4、删除镜像

        使用docker rmi命令可以删除多余的镜像。

        删除镜像的操作有两种方法:使用镜像的标签删除镜像:使用镜像的ID删除镜像.

        命令格式:

docker rmi 仓库名称:标签
或者
docker rmi 镜像ID号

        例如.要删除掉dhcp ; dhcp镜像.可以使用如下命令:

[root@blab ~]# docker rmi dhcp:dhcp 
Untagged: dhcp:dhcp

        当一个镜像有多个标签的时候.docker rmi 命令只是删除该镜像多个标签中的指定标签,不会影响镜像文件,相当于只是删除了镜像的一个标签而已。但当该镜像只剩下--一-个标签的时候就要小心了.再使用删除命令就会彻底删除该镜像。

        例如.删除docker.io/networkboot/dhcpd 镜像.可以看出它会删除整个镜像文件的所有层:

[root@blab ~]# docker rmi docker.io/networkboot/dhcpd
Untagged: docker.io/networkboot/dhcpd:latest
Deleted: sha256:b57b32205814001aad3aad19908ebfdb92a6fc1ea59001487b3850bb0296ac9d
Deleted: sha256:818ef1a91f76712dfb06e12ff002624b6a169632d08aacbe1a9ed1945335824c
Deleted: sha256:88cdce7f0264be7ad874dfabca2009e6835cda83610ef4acabbd8309a8da58c0
Deleted: sha256:423662870fb3d051ccbc52495a1ff83e3b0c136d88614618dd18ea5b5a4fda15
Deleted: sha256:dd44b56f7a8f4d7c34f8fe346f507e46defea98f198bccd13ef227a80a512f18
Deleted: sha256:80580270666742c625aecc56607a806ba343a66a8f5a7fd708e6c4e4c07a3e9b

        当使用docker mi 命令后面跟上镜像的ID号时.必须确保该镜像没有被容器使用才能进行.删除时系统会先删除掉所有指向该镜像的标签.然后删除该镜像文件本身。如果该镜像已经被容器使用.正确的做法是先删除依赖该镜像的所有容器,再去删除镜像.

5、存出和载入镜像

        当需要把一台机器上的镜像迁移到另一台机器上的时候.需要将镜像保存成为本地文件.这一过程叫做存出镜像.可以使用docker save命令进行存出操作。之后就可以复制该文件到其他机器。

        命令格式:

docker save -o 存出镜像为本地文件

        例如.存出本地的dacker , io/networkboot /dhcpd 镜像为文件dhcp :

[root@blab ~]# docker save -o dhcp docker.io/networkboot/dhcpd
[root@blab ~]# ll dhcp 
-rw------- 1 root root 82387968 6月  12 11:19 dhcp

        将存出的镜像从A机器复制到B机器,需要在B机器上使用该镜像.就可以将该导出文件导入到B机器的镜像库中.这一过程叫作载入镜像。

        命令格式

dhcp load --input 存出的文件或者docker load < 存出文件

        例如,从文件dhcp中载入镜像到本地镜像库中:

[root@blab ~]# docker load --input dhcp 
805802706667: Loading layer [==================================================>] 65.61 MB/65.61 MB
3fd9df553184: Loading layer [==================================================>] 15.87 kB/15.87 kB
7a694df0ad6c: Loading layer [==================================================>] 3.072 kB/3.072 kB
0d62e7526187: Loading layer [==================================================>] 16.73 MB/16.73 MB
d5deb13c0dfa: Loading layer [==================================================>] 4.096 kB/4.096 kB
Loaded image: docker.io/networkboot/dhcpd:latest

或者

[root@blab ~]# docker load < dhcp
805802706667: Loading layer [==================================================>] 65.61 MB/65.61 MB
3fd9df553184: Loading layer [==================================================>] 15.87 kB/15.87 kB
7a694df0ad6c: Loading layer [==================================================>] 3.072 kB/3.072 kB
0d62e7526187: Loading layer [==================================================>] 16.73 MB/16.73 MB
d5deb13c0dfa: Loading layer [==================================================>] 4.096 kB/4.096 kB
Loaded image: docker.io/networkboot/dhcpd:latest

6、上传镜像

        本地存出的镜像越来越多.就需要指定一个专门存放这些镜像的地方----仓库,目前比较方便的就是公共仓库.默认上传到DockerHb官方仓库,需要注册使用公共仓库的账号,可以使用dockerlogin命令来输入用户名、密码和邮箱来完成注册和登录。在上传镜像之前还需要对本地镜像添加新的标签,然后再使用dockerpush命令进行上传.

        

docker push 仓库名称:标签

命令格式

        例如,在公共仓库上已经注册成功了一个账号.本例账号为bdqnli,镜像的标签为docke/dhcp , centos7 .3。

(1)首先在使用账号登录官方仓库。

[root@blab ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: bdqnli
Password: 
Login Succeeded

(2)成功登录后就可以上传镜像。

[root@blab ~]# docker push docker/dhcp:centos7.3

标签:dhcpd,标签,io,dhcp,镜像,Docker,第二章,docker
From: https://blog.csdn.net/m0_38096339/article/details/139619852

相关文章

  • Linux下的lvm镜像与快照
    lvm镜像(mirror)(1)划分三个PV,其中2个PV大小要一模一样Disk/dev/sdb:21.5GB,21474836480bytes255heads,63sectors/track,2610cylindersUnits=cylindersof16065*512=8225280bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(m......
  • 【解决了一个小问题】因为镜像证书的问题,golang http client出现错误 `tls: failed to
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯一个服务使用Docker打包镜像,部署到k8s后出现如下的错误信息:tls:failedtoverifycertificate:x509:certificatesignedbyunknownauthority出错的位置是......
  • 手把手教你搭建Docker私有仓库Harbor
    1、什么是Docker私有仓库Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库DockerHub,而与DockerHub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部署在本地云环境中,用于组织内部开发、测试和......
  • Centos 7 安装 Docker 与 Docker Compose
    参考chat-gpthttps://developer.aliyun.com/article/1037178https://blog.csdn.net/gg_sunxiaolei/article/details/137137975环境软件/系统版本说明Centos7.664位yum-utils1.1.31软件包device-mapper-persistent-data26.1.4软件包lvm27:2.02.1......
  • Linux速成技巧:通过Docker高效运行Swift
    Swift,作为苹果公司推出的一种强类型编程语言,以其高效、安全的特性在开发社区中广受欢迎。虽然Swift最初是为iOS和macOS开发设计的,但它的应用范围已经扩展到了Linux平台。在Linux环境中,通过Docker运行Swift成为了一种流行且高效的方式。本文将详细介绍如何在Linux环境中通过D......
  • 【镜像制作】node.js+pm2的latest版镜像制作
    文章目录简介dockerfile代码简介本司的一些nodejs环境基本都运行在pm2的环境下,pm2是一个node环境下的多进程管理工具,通过pm2可以提升不少性能,管理起来也比较方便。在制作nodejs+pm2镜像时,建议指定版本进行安装,这样可以避免时间一久出现版本上不兼容的问题。dock......
  • docker 的代理设置
    Docker的代理设置有时候当我们设置了镜像仓库之后,依然有些镜像无法直接拉去。另外一个情况就是在buildimage的时候,有些包或者有些依赖的url无法访问。例如国外的一些资源,这时候我们就可以通过配置proxy进行获取。配置docker的proxy路径一般是~/.docker/config.json"proxies"......
  • 下载docker镜像并推送至阿里云镜像服务
    脚本地址https://gitee.com/shenglx/docker_image_push_aliyun 主要思路是在可以访问docker的服务器上通过脚本将镜像推送到阿里镜像服务,怎么访问购买海外服务器或者通过别的方式开通阿里云容器镜像服务(个人版即可) https://cr.console.aliyun.com/下载docker_psuh.sh文件......
  • ubuntu配置中国科学技术大学镜像源
    mv/etc/apt/sources.list/etc/apt/sources.list.baksudovim/etc/apt/sources.listdebhttp://mirrors.ustc.edu.cn/ubuntu-ports/xenialmainmultiverserestricteduniversedebhttp://mirrors.ustc.edu.cn/ubuntu-ports/xenial-backportsmainmultiverserestric......
  • docker镜像源挂了后操作2024-6-6
    @目录概要解决方案小结概要端午前6.6号不是docker所有的加速器都关了嘛,这回做了些功课,了解了下讨论背景,原来想直接走代理这个方案的,但是我买的都是订阅制的,不好搞前后研究最后还是找阿里云官方给了解决方案。解决方案看官网文档sudomkdir-p/etc/dockersudotee/etc/dock......