Docker Toolbox 怎么像在 linux 平台下配置 daemon.json 一样配置 insecure-registries

本文主要是介绍Docker Toolbox 怎么像在 linux 平台下配置 daemon.json 一样配置 insecure-registries,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、引言

最近,在工作中,老大给了我一个任务,也就是在工作机上配置一个 docker 的私人镜像库。其实,想要配置一个 docker 的私人镜像库并不困难,你只需要参考这篇博客即可:
使用Docker Registry快速搭建私有镜像仓库

然而,成年人的世界总不会这么简单,在这里,有一个非常大的阻碍,那就是:

工作机 == 不能上外网

也就是说,所有在配置 docker 的私人镜像库的过程中所需要的东西,都需要我自己在外网中下载好放到这个工作机上,这增加了我完成这个任务相当大的难度。

让我再好好总结一下现在我遇到的场景:
1. 我有一台公司分配好的不能上外网的 linux 环境,用于当作 docker 私有镜像库服务的服务端
2. 我有一台公司的不能上外网的工作机,系统是 win7,这将作为 docker 私有镜像库的客户端
3. 现状是,我已经配置好了 docker 私有镜像库的服务端的环境,而为了测试其功能,我还需要把工作机变成 docker 私有镜像库的客户端

那么,让我们开始吧:)

二、用虚拟机装一个 Ubuntu?

我第一个想到的办法就是这样,在虚拟机中装一个 Ubuntu18.04,然后在 Ubuntu18.04 中离线安装 docker,配置其 docker 客户端的功能。

当我兴致勃勃配置好了 docker,并且也安装好了之后,想要开启 docker 服务,却发生了很奇怪的问题:

docker wrong

这个问题,我挂着梯子逛了好久的论坛也没能解决,因此我也只能忍痛无奈放弃了这条路。

三、Docker 不是有 Windows 的支持吗!

这时候,我除了想了想要么换 CentOS,要么试试 Ubuntu14.04 版本,结果想来想去,觉得还是挺麻烦的。

这个时候,一个思路闪现在了我的脑海里:

我可以试试 Docker Toolbox 啊!

对呀,说干就干,我马上就去下载了一个 Docker Toolbox。这里有必要一提的是,win7 还是只能用 Docker Toolbox,而 Win10 已经通过 Hyper-V 直接支持了,功能更加强大。

通过下载软件安装,一路点击 next 完成了 Docker Toolbox 的安装。最后点击桌面上的 Docker Quickstart Terminal,经过一系列自动的初始化配置,终于看到了海豚图案,意味着安装成功。

我迫不及待的敲击了几个 docker 命令,比如 docker images 啦 docker info 啦 docker ps -a 之类的,发现可以成功运行,这时的我已经兴奋不已了。

然而,当我按照引言的博客里配置好了 docker 私有镜像库的客户端的环境,准备上传的时候。也就是这行代码:

docker push 172.18.18.90:5000/busybox:v1

结果出现了跟博客里面一样的提示:

The push refers to repository [172.18.18.90:5000/busybox]
Get https://172.18.18.90:5000/v2/: http: server gave HTTP response to HTTPS client、

也就是说,这里上传镜像需要通过 https 的方法才能上传,而博客里面给出的方法是基于 linux 的解法方法,当然可以进入到 /etc/docker/daemon.json 中添加 insecure-registries 解决。

而尴尬的问题是:我是 Docker Toolbox 啊,而且是 win7 不像在 win10 或者 Mac 上还有友好的图形界面提示用户配置。

这下该怎么办呢?

三、问题总是能解决的:)

参考这篇博客中的 Docker ToolBox 部分的命令行教学:
如何修改Windows上Docker的镜像源

我们可以从 Windows 命令进入虚拟 bash 中去,然后根据这个讨论区的介绍,修改具体的值:
Insecure registry setup not clear for Docker Machine #3433
最后,最后再重启 docker 服务就成功了。

这里,我将两篇文章的步骤整合一下:

1. 首先,我们刚打开 Docker Quickstart Terminal 进入的是 Windows 命令行界面,此时输入下述命令进入虚拟 docker bash 中去:

docker-machine ssh default

后面的 default 也可以不用输入,会自动补上。

2. 然后,我们已经进入了虚拟 docker bash 中去了,此时我们需要编辑 /var/lib/boot2docker/profile 文件中的 EXTRA_ARGS 信息:

sudo vi /var/lib/boot2docker/profile

3. 此时,我们在 --label provider=virtualbox 的下一行添加下述代码:

--insecure-registry xxx.xxx.xxx.xxx:yyy

这里需要解释的是, xxx.xxx.xxx.xxx 是我们的私有镜像仓库的 ip 地址,yyy 是你配置私有镜像仓库时设定的端口号
4. 最后,不要忘了,我们还需要重启 docker 服务的:

// 在虚拟 docker 环境中
sudo /etc/init.d/docker restart
// 或者
// 退出虚拟 docker 环境(使用 exit 命令)然后在 Windows 命令行下敲入下列命令
docker-machine restart

我们等待 docker 服务重启后,再执行我们的那行提交镜像的命令即可看到成功的回馈。

docker success

至此,完结撒花 ^_^

四、总结

最近初接触 Linux 系统,觉得真的是一时间很难适应,不过通过 docker 的学习,还真是慢慢开始上手了。

Docker 的学习还需要继续,有很多资料需要去看英文论坛才能解决。更加遗憾或者说更有挑战的是,一篇博客有时候并不可能真正解决你的问题,需要我们在庞杂的资料中找寻解决的方法。

To be Stronger:)

这篇关于Docker Toolbox 怎么像在 linux 平台下配置 daemon.json 一样配置 insecure-registries的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/277787

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock