镜像加速

镜像默认是通过 DockerHub 拉取的,国内可能有些困难,会报以下错误:

net/http: TLS handshake timeout

所以,需要配置国内的加速服务地址:

官方地址:https://registry.docker-cn.com

网易:https://hub-mirror.c.163.com/

阿里云:https://<你的ID>.mirror.aliyuncs.com

七牛云加速器:https://reg-mirror.qiniu.com

中科大:https://docker.mirrors.ustc.edu.cn

window通过docker desktop的设置可以添加保存(保存后会自动重启docker服务),如下:

查找镜像

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/

我们也可以使用 docker search 命令来搜索镜像,比如我们一个centos的镜像,那我们可以在 powershell (后文也统一使用powershell)用以下命令:

PS C:\> docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 6318 [OK]
ansible/centos7-ansible Ansible on Centos7 132 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 123 [OK]
jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … 116 [OK]
.......

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。

OFFICIAL:是否为官方镜像。

AUTOMATED: 自动构建。

通过上面例子看到 docker search 命令查询有一个小缺点,没有 tag 这样不好获取指定 tag 的镜像,通过 Docker Hub 网站查找信息很全面,没有这些问题。

获取镜像

当我们的本地主机使用一个不存在的镜像时,会自动下载后使用。如果我们要先获取镜像,可以使用 docker pull 命令,如下:

PS C:\> docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

可以看到如果不指定镜像的 Tag ,那么默认 Tag 为 latest。可以通过在镜像名后增加:Tag 来指定(也可以通过 Digest 摘要)

PS C:\> docker pull centos:centos8.3.2011

如果需要获取镜像的全部标签

PS C:\> docker pull --all-tags centos

同一个标签的镜像反复获取,只会存在一个。

查询本地镜像

通过 docker images 命令来列出本地主机上的镜像。

PS C:\> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 31 hours ago 209MB
hello-world latest bf756fb1ae65 11 months ago 13.3kB

各列说明:

REPOSITORY:表示镜像的仓库源

TAG:镜像的标签

IMAGE ID:镜像ID

CREATED:镜像创建时间

SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 centos 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

删除镜像

镜像删除通过 docker rmi 命令执行,可以同时删除多个镜像,如下删除了镜像 hello-world 和 centos

PS C:\> docker rmi hello-world centos

镜像名称也可增加 Tag 标签来删除指定镜像的指定标签。

创建镜像

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

1、从已经创建的容器中修改镜像,并且提交这个镜像

2、使用 Dockerfile 指令来创建一个新的镜像

编辑镜像

先通过镜像 centos 来创建一个容器

PS D:\> docker run -t -i centos /bin/bash

运行后会构建一个 centos 的容器,并进入到容器中的 cnetos 操作系统中,我们这里进行一个安装 redis 的操作,让我们新的 centos 镜像有 redis (官方的原始 centos 镜像是纯净的)。依次执行下面的语句:

[root@fda2c65d7e02 /]# yum -y install wget                                          //注释:安装wget,用来执行wget命令
[root@fda2c65d7e02 /]# wget http://download.redis.io/releases/redis-4.0.6.tar.gz //注释:下载redis压缩包
[root@fda2c65d7e02]# tar -zxvf redis-4.0.6.tar.gz                      //注释:解压redis压缩包
[root@fda2c65d7e02 /]# yum install gcc                            //注释:yunm安装gcc依赖
[root@fda2c65d7e02 /]# cd redis-4.0.6                             //注释:跳转到redis解压目录下
[root@fda2c65d7e02 redis-4.0.6]# yum -y install gcc automake autoconf libtool make //注释:安装make,用来执行make命令
[root@fda2c65d7e02 redis-4.0.6]# make MALLOC=libc                      //注释:编译安装redis
[root@fda2c65d7e02 redis-4.0.6]# cd src && make install //注释:切换到redis src目录下,将/usr/local/redis-4.0.6/src目录下的文件加到/usr/local/bin目
[root@fda2c65d7e02 src]# ./redis-server                           //注释:运行redis,可以看到成功运行了

之后我们输入 exit 命令退出容器,使用 commit 命令提交容器副本,在本机创建新镜像(可以通过 push 命令推送到 docker hub 上)

PS D:\> docker commit -m="add redis" -a="xu" fda2c65d7e02  xu/centos:v1.0.1

各个参数说明:

-m: 提交的描述信息

-a: 指定镜像作者

fda2c65d7e02:容器 ID,可以通过 docker ps -a 命令查看

xu/cnetos:v1.0.1: 指定要创建的目标镜像名和标签 tag

查询镜像

PS D:\> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
xu/centos v1.0.1 0827da229df3 9 seconds ago 445MB
centos latest 300e315adb2f 2 days ago 209MB

可以试下,通过我们自己修改后的镜像来创建的容器自带 redis

创建镜像

我们使用 build 命令, 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。我们创建一个txt文件,重命名为Dockerfile(删除后缀),内容如下:

FROM centos
RUN yum -y install wget
RUN yum -y install gcc automake autoconf libtool make
RUN wget http://download.redis.io/releases/redis-4.0.6.tar.gz
RUN tar -zxvf redis-4.0.6.tar.gz
WORKDIR /redis-4.0.6
RUN make MALLOC=libc
WORKDIR src
RUN make install
CMD ["/bin/bash"]

指令说明

FROM:指明基础的镜像,可以用:指明tag

RUN:在镜像容器中执行命令

WORKDIR:跳转目录,为后续的RUN、CMD或者ENTRYPOINT指定工作目录

CMD:构建容器后调用,也就是在容器启动时才进行调用

Dockerfile文件创建完成后,打开 PowerShell 运行 build 命令等待创建完成即可.

PS D:\xwc\myDockerfile> docker build -t xu/centos:1.0.2 .

参数说明:

-t :指定要创建的目标镜像名,可以添加 :tag 指定标签,否则默认 latest

. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径(我这里直接在文件所在路径打开 powershell 所以不指定,默认改文件夹下)

镜像标签

可以通过 tag 命令修改镜像的名称和标签

PS D:\> docker tag bf756fb1ae65 xu/hello-world:666

上面的命令是将镜像 id 为 bf756fb1ae65 的镜像复制一份用户/镜像名为 xu/hello-world 标签为 666,查看镜像可以看到它们的镜像 id 都是相同的

PS D:\> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 11 months ago 13.3kB
xu/hello-world 666 bf756fb1ae65 11 months ago 13.3kB

(window)Docker的镜像使用的更多相关文章

  1. Docker:镜像操作和容器操作

    镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6b ...

  2. Docker的镜像

    镜像是容器的运行基础,容器是镜像运行后台的形态 镜像的概念 镜像是一个包含程序运行必要依赖环境和代码的只读文件,它采用分层的文件系统,将每一次改变以读写层的形式增加到原来的只读文件上 镜像的系统结构 ...

  3. Docker - Docker国内镜像的配置及使用

    Docker国内镜像 DaoCloud - Docker加速器 阿里云 - 开发者平台 微镜像 - 希云cSphere 镜像广场 - 时速云 灵雀云 网易蜂巢 阿里云的Docker加速器 阿里云 - ...

  4. Docker image 镜像介绍

    操作镜像 使用 docker 命令行操作 docker 镜像 获取镜像 使用「docker pull +镜像名称」从网络上下载image镜像 core@localhost ~ $ docker pul ...

  5. Docker - 定制镜像

    Dockerfile Docker Hub拥有大量高质的官方镜像:可直接使用的服务类镜像.语言应用镜像.基础操作系统镜像等,满足绝大部分需求. 此外,可以通过定制镜像的方式来满足实际使用中的特定需求. ...

  6. 从零开始构建docker基础镜像

    段子 今年基本已经结束了,我问了很多朋友今年挣钱了没?大多朋友都有挣,而且挣得五花八门:有挣个屁的,有挣个锤子的,有挣个毛的,更有甚者挣个妹的,奢侈之极!最恐怖的是挣个鬼的!有的还可以,挣个球,下午我 ...

  7. Docker 基础 : 镜像

    目录 获取镜像 查看镜像信息 搜索镜像 删除镜像 创建镜像 导出和导入镜像 上传镜像 总结 镜像是 Docker 的三大核心概念之一.Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的 ...

  8. 微服务架构 - 搭建docker本地镜像仓库并提供权限校验及UI界面

    搭建docker本地镜像仓库并提供权限校验及UI界面 docker本地镜像仓库的作用跟maven私服差不多,特别是公司级或者是小组级开发好的docker仓库可以上传到本地镜像仓库中,需要用时,直接从本 ...

  9. 使用Nexus3构建Docker私有镜像仓库

    一.安装Nexus3 Nexus3是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven.npm.Docker.YUM.Helm等格式数据的存储和发布:并 ...

随机推荐

  1. kettle——转换案例

    把stu1的数据按id同步到stu2,stu2有相同id则更新数据 (1)在mysql中创建两张表 mysql> create database kettle; mysql> use ke ...

  2. Avoided redundant navigation to current location: "/users"

    问题产生的原因:在Vue导航菜单中,重复点击一个菜单,即重复触发一个相同的路由,会报错,但不影响功能 解决:在router的配置文件中加入如下代码: const originalPush = Rout ...

  3. vue实现增删改查(内附源代码)

    VUE+Element实现增删改查 @ 目录 VUE+Element实现增删改查 前言 实验步骤 总结: 源代码 前言 &最近因为一些原因,没有更博客,昨天老师布置了一个作业,用vue实现增删 ...

  4. Unity Lod

    LOD是Level Of Detais 的简称,多细节层次,根据摄像机与物体距离,unity会自动切换模型.一般离摄像机近的时候显示高模,离摄像机远的时候显示低模,借此来提升性能. 如果你在Blend ...

  5. 新建Chrome标签页,极简+自用

    [跳转GitHub] chromeNewTab 已经入坑Chrome应用开发者,可以去:[应用商店地址]直接添加使用. 使用说明 下载chrome的一个[window组策略文件],解压文件后找到(\p ...

  6. 环境安装和pycharm中一些基本设置

    一.Pycharm的使用和Python环境 1.python和pycharm的安装 python推荐版本3.7/3.8 pycharm选择社区版本 查看python版本在cmd中输入"pyt ...

  7. 面试腾讯,字节跳动,华为90%会被问到的HashMap!你会了吗?

    简介 HashMap是平常使用的非常多的,内部结构是 数组+链表/红黑树 构成,很多时候都是多种数据结构组合. 我们先看一下HashMap的基本操作:   new HashMap(n); 第一个知识点 ...

  8. 【MathType教学】表示分类的大括号怎么打

    大括号是一种常见的数学符号,可以用于集合.分段函数中,其实大括号还可以用来总结数学知识,比如对三角形进行分类,此时用的大括号可以称为表示分类的大括号.MathType作为专业的数学公式编辑器,可以快速 ...

  9. nginx学习http_access_module模块

    location ~ ^/1.html { root /opt/app/code; deny XXXXX; #这个ip不能访问1.html allow all; #其他的可以访问这个页面1.html ...

  10. Apache Hudi初学者指南

    在深入研究Hudi机制之前,让我们首先了解Hudi正在解决的问题. 客户在使用数据湖时通常会问一个问题:当源记录被更新时,如何更新数据湖?这是一个很难解决的问题,因为一旦你写了CSV或Parquet文 ...