使用Docker构建企业级自定义镜像的方法
作者:java_small_ant 发布时间:2022-06-09 08:14:00
前言
临下班前,楼主接到了一个需求,由于基础镜像标准发生变更,需要按照最新的Docker 镜像标准构建自己应用的自定义镜像。目前的标准是这样的:基础架构组只提供所有项目必须接入的3个公共镜像,这3个公共基础镜像包含了:JDK8、Skywalking、Arthas。对于各自业务组的应用如果还需要加入其它镜像,则由各个业务组自己基于基础架构组提供的公共镜像之上,再添加自定义的镜像,结构图如下:
构建步骤
编写Dockerfile
基于最新的规范来看,我们需要编写一个Dockerfile,然后引用基础架构组提供的基础镜像,再加入应用需要的其他镜像。因此最终的 Dockerfile 文件如下:
FROM 基础镜像地址
RUN apk add 需要添加的自定义镜像
...
在Centos7下安装Docker环境
卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装 Docker Engine-Community
使用 Docker 仓库进行安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
使用以下命令来设置稳定的仓库。
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker Engine-Community
安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:
$ sudo yum install docker-ce docker-ce-cli containerd.io
如果提示您接受 GPG 密钥,请选是。
有多个 Docker 仓库吗?
如果启用了多个 Docker 仓库,则在未在 yum install 或 yum update 命令中指定版本的情况下,进行的安装或更新将始终安装最高版本,这可能不适合您的稳定性需求。
Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。
要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:
1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
2、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
启动 Docker。
$ sudo systemctl start docker
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。
$ sudo docker run hello-world
开始构建应用自定义镜像
根据 Dockerfile 文件进行自定义镜像的构建
在Dockerfile 文件所在的目录下执行如下命令进行自定义镜像的构建:
sudo docker build -f Dockerfile -t 你的自定义镜像名称 .
推送到企业私有的镜像harbor之前进行登录
docker login 企业私有的harbor地址
输入用户名
输入密码
完成登录
将构建完成的自定义镜像推送到企业私有的harbor
sudo docker push 你的自定义镜像名称
总结
通过 1.编写自定义构建镜像的Dockerfile 2.安装Docker环境 3.构建自定义镜像 4.上传自定义镜像到harbor 以上4个步骤,我们便完成了应用自定义镜像的构建,后续我们自己的应用中直接使用自定义镜像即可,这样做的好处就是基于基础的镜像,我们可以随意组合,构建出满足自己应用的镜像,更灵活、镜像分层管理、可扩展。
来源:https://segmentfault.com/a/1190000022689417
猜你喜欢
- 网络上曾经有过关于跨站脚本攻击与防御的文章,但是随着攻击技术的进步,以前的关于跨站脚本攻击的看法与理论已经不能满足现在的攻击与防御的需要了,
- 最近以来,许多关系老百姓衣食住行的B2C网站开始大量涌现,有在网上卖童装、卖衬衫、卖内衣、卖鞋子、卖米面粮油的,一应俱全。而一家以鞋业行业网
- 国外VPS 大多数是 Linux /Unix平台,Linux/Unix平台的优点也很多,重点是它还是免费的,(用过美国VPS 的朋友都知道国
- Google adsense终于改进了广告打开方式了,由原理的同一窗口打开改为新窗口打开,就像当初google搜索页面的窗口打开方式变化一样
- godaddy空间控制面板中英文对照,方便英文不大行的站长操作godaddy的空间Account Summary(帐号信息总览)----Do
- 一、首先把php的压缩包(这里以PHP4.3.2为例)解压到C:\php-4.3.2-Win32目录中,然后从其中找到一个叫php.ini-
- 中华人民共和国建立以来,共进行了13次阅兵,其中重大的周年阅兵分别是1949,1959,1984,1999年。各种国产先进装备推陈出新,向世
- 但这种实现会引起严重的饥饿问题。由于多个子进程同时执行这个循环,它们将在select中阻塞。当任何socket上出现一个请求时,所有被阻塞的
- UCenter Home是Comsenz公司发布的一款SNS建站系统,目前最新版本是1.5。用户栏目功能是UCenter Home中用于丰富
- Exchange Server2007 已经面市将近一年了,相信大家一定对它的强大功能已经有所体验了,其中值得我们关注的就是Exchange
- 12日晚上上线,看到红色联盟某会员在找我(为了安全起见,该会员我们下面称呼其为“站长X”)。说其网站被r了,让我去帮忙查查并恢复。我访问了一
- 如果要问全球最简单的广告系统是什么?那答案也许就是 Google 的在线广告系统。的确,你只要交了钱,来自无数网民的和你的线上业务有关的关键
- glibc是gnu发布的libc库,即c运行库,glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glib
- SupeSite7.0作为Comsenz旗下的社区产品SupeSite 7.0 全面支持对 Discuz!、UCenter Home 的聚合
- 像PR劫持一样,对一些比较难以预防的黑帽陷害手法,本来不太想积极讨论,因为有很多时候会对无辜的站长造成很大的伤害。在前两天的SEO案例中,提
- Windows2003服务器安装及设置教程——组件安全篇 卸载并删除WScript组件WScript.Shell可以调用系统内核运
- 由于众所周知的原因,微软的产品总能吸引黑客们的目光,IIS也不例外。IIS是什么?即因特网信息服务,作为当今流行的Web服务器之一,它提供了
- DNS软件是黑客热衷攻击的目标,它可能带来安全问题。这里是一些保护DNS服务器最有效的方法。1.使用DNS转发器DNS转发器是为其他DNS服
- 1)不要下载www.php.net上面那个Windows Installer装完了之后不能用MYSQL都不知道问题出在哪。永远修不好,没错的
- 经过了漫长的等待,站长终于迎来了期待已久的UCenter Home2.0正式版。与以前版本和2.0的测试版本不同,UCenter Home2