参考
1.【入门】Docker练习场2. docker practice

创建阿里云镜像仓库

这里具体的构建内容见参考1,要注意在创建仓库时要地域的选择,否则会找不到你创建的仓库。

可以在你的阿里云容器镜像仓库控制台那里进行地域更换,因为我买的是张家口的服务器,所以我也就把他设置为张家口,这样在你后续创建镜像仓库时,他就会默认把地域设置为张家口。

如果你选择了其他地域,记得要先在控制台这里进行地域调换,然后才能看到你的镜像仓库。

docker buildx 推送harbor docker build push_容器

Dockerfile创建

首先从阿里云拉取Python3镜像

docker pull registry.cn-shanghai.aliyuncs.com/tcc-public/python:3

然后你会看到一个Python3的镜像,我这里的IMAGE IDa4cc999cf2aa 然后你可以在本地运行一下

sudo docker run -it a4cc999

你会发现进入了一个Python环境,运行成功了。

比如这时我们想使用这个镜像中的Python环境,在这个环境中写一些程序,此时我们创建一个文件夹,叫docker_learn_tianchi,并在其中创建两个文件test.py,run.shDockerfile

test.py代码如下

print("docker_learn_tianchi") 
print("aliyun")
print(1+998)

run.sh代码如下

python docker_test.py

最后,为了让我们的代码能够成功打包为镜像文件,我们需要书写一个Dockerfile,示例如下

# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3

## 把当前文件夹里的文件构建到镜像的根目录下
ADD . /

## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
WORKDIR /

## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]

最终的目录结构是这样的

docker buildx 推送harbor docker build push_容器_02

build构建镜像

执行下边这条指令,更换成你自己的镜像仓库哦

docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
  • 注意:registry.~~~是上面自己创建仓库的公网地址,可以再你的镜像仓库中看到,用自己仓库地址替换。地址后面的:1.0为自己指定的版本号,用于区分每次build的镜像。最后的.是构建镜像的路径,不可以省掉。也就是说,自己实际需要修改的,只有最后的版本号,其他的直接从镜像仓库复制即可。如果你不加版本号,那他会默认设置为latest。
    上边那一串网址分别是阿里云Registry实例/你使用的命名空间/你使用的仓库名称 此时你使用docker images就可以看见你刚刚创建的镜像了。

运行build后的Docker镜像

运行命令如下,其中40370185是你的IMAGE ID

docker run 40370185 sh run.sh

这时你就可以看到你的test.py的输出了

docker buildx 推送harbor docker build push_Dockerfile_03

push到你的镜像仓库

这一句和前边的build指令很像,需要将你刚刚创建的镜像文件push上去

docker push yourImageName
docker push registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0

格式为docker push 注册用户名/镜像名,对于阿里云,具体如下,在阿里云服务器镜像仓库里都有教程,一般直接复制你的网络地址就可以

docker push registry.cn-zhangjiakou.aliyuncs.com/namespace/RepoName:1.0

这时你push可能会出错,告诉你对资源的访问被拒绝了,因为你还没有登录,登录方式如下,在你的镜像仓库的基本信息里也有这些内容

sudo docker login --username=yourname registry.cn-zhangjiakou.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

然后重新push就可以了

第一次提交会比较缓慢,十分缓慢,特别缓慢,静待即可,push完成后,你就可以在镜像版本里看到你刚刚上传的镜像

你还可以重新build一下,比如修改一下docker_test.py中的内容为下方内容
docker_test.py

print("docker_learn_tianchi")
print("aliyun")
print(1+998)
print(2.0)

然后再Dockerfile所在的目录下,执行下方的build指令

sudo docker build -t build_py_test:version2.0 .

然后执行一下,确认没问题后,进行推送,但是推送之前记得要把名字改掉,使用docker tag命令,记得修改对应的仓库公网地址版本号

docker tag [ImageID] registry.cn-zhangjiakou.aliyuncs.com/wangxy_docker/tianchi_test:[镜像版本号]

然后你会发现多了一个IMAGE ID相同的镜像文件,但是REPOSITORYTAG两项不同了
然后push

docker push registry.cn-zhangjiakou.aliyuncs.com/wangxy_docker/tianchi_test:[镜像版本号]

此时应该是会秒传的,因为大部分文件都存在了

这是你就可以看到你的仓库中存在两个版本的镜像了

docker buildx 推送harbor docker build push_版本号_04

后续我想的是能不能修改其中的文件,比如我修改刚才的test.py文件,而不是重新build