基础镜像
什么是基础镜像?基础镜像(Base Image)
是 Dockerfile 中 FROM 指令指定的起始镜像,通常包含操作系统、运行时环境或特定软件的预配置环境。
基础镜像在Docker Hub是有很多的,各种环境都有,比如 python
,php
,nginx
等.
选中基础镜像后,你的 dockerfile
后续所做的一系列操作都是基于这个基础镜像进行再次封装,比如增加一些软件包什么的.
假设你想将官方提供的 python 镜像做为基础镜像,那么你可以你这样.
怎么开始
基于上面所说的,使用 python3
来作为基础镜像.
这里先把官方提供的示例扒下来,研究一下,看看他做了什么,以及我们要做什么.
1 | FROM python:3 |
首先可以看见他通过FROM
指定了一个 python3 的基础镜像,这正是我们需要的.
接着,他通过WORKDIR
关键字将/usr/src/app
设置为了工作目录,但是这里我得改改,我想将/data
作为我的工作目录.
下面使用了COPY
和RUN
做了一些拷贝文件和执行命令的操作,但我们可以自己改改,我准备用RUN
去安装一些我自己需要的软件包,比如jq jc bc ipmitool curl
等.
下面依然是一个 COPY
不需要的话也可以去掉了.
最终通过CMD
关键字去运行了当前工作目录下的一个 py
脚本.
以上就是这个 dockerfile
大概做的事情,我这里基于我自己的想法,将这个官方示例变成我想要的样子.
1 | FROM python:3 |
最后使用docker build
进行构建,执行完成后没有产生错误,那么就表示构建成功了.
并且镜像的REPOSITORY
设置为 reverse/python
, 镜像的TAG
设置为 t250518
, 当然这个是我自己定义随便写的, 按需填写就行了.
1 | # 开始构建,构建时工作目录为当前目录 |
阿里云 ACR
既然镜像已经构建好了,那么肯定是需要有一个地方可以存储镜像的,如果没有自己搭建的镜像仓库,那么可以考虑使用阿里云的镜像仓库.
具体操作方式如下:
- 访问阿里云 ACR然后
创建一个个人实例
就行. - 进入个人实例中,选择
仓库管理 -> 访问凭证 -> 固定密码
设置密码,这是docker login
时的凭证. - 接着进入
命名空间
中,创建一个命名空间,假设我创建为reverse_python
. - 然后访问
镜像仓库
中创建一下,命名空间就使用刚才创建的,还有仓库名字啥的都设置一下,最后选择本地仓库
.
因为我们的本地构建的镜像,所以我们就选择本地仓库,这样的话就可以用命令行吧构建好的镜像推送上去了.
接下来创建好镜像仓库后他会提供给我们一个文档,告诉我们如何将镜像推送上来.
这里注意你的username
,别错了,然后输入你前面设置好的固定密码
.
然后[ImageId]
通过docker images
来查看就行,找到你构建好的镜像 ID
最后的[镜像版本号]
自行看着设置就行了,然后推送一下就完事了.
1 | docker login --username=xxxxxx registry.cn-hangzhou.aliyuncs.com |
1 | ╭─root@localhost /apps/data/workspace/tmp |
然后你就可以在阿里平台看见你 push 上去的镜像了.
如何使用
前面文档也有提到,创建镜像仓库
时他给默认给你一份文档,里面就详细说了如何使用.
参照文档里面的代码,直接:
1 | docker pull registry.cn-hangzhou.aliyuncs.com/reverse_python/python:[镜像版本号] |
以上就是从构建镜像到发布阿里 ACR 的全流程了,可能文档也有误解的地方,但是我懒得改了 :) 大伙凑合看看.