Docker镜像的制作镜像的制作,上传上传,拉取和部署操作拉取和部署操作(利用阿里云利用阿里云)
由于学习过程中发现push镜像的时候一直超时,所以直接把阿里云的Docker仓库申请一个(管理中心–>创建镜像仓库–>我的是华东2绑定github账户即可),搞定!
以后push就用这个仓库,pull的时候使用加速器,注意切换根据使用场景进行切换,dockerhub丢弃……记录了一下操作流程:
1.创建命名空间hhu(以当前学校为单位,只能小写,每个账号只能创建5个),创建菜鸟Docker镜像仓库docker1(绑定github中某个仓库,个人可以随意,这个仓库
镜像就像是一个app,可以不断的更新它的版本),那么所有测试镜像可以推送到这里,以后作专门的其他镜像可以再申请其他的镜像仓库(比如作Tomcat时,单独
申请一个镜像仓库tomcat,作redis时再申请一个redis的仓库,依次类推)。完成;
2.镜像制作,这一步下面单独拎出来详细记录;
3.镜像推送:制作完事后,需要将镜像push到镜像测试仓库中docker1中。基本信息如下–
1.公网地址:registry.cn-shanghai.aliyuncs.com/hhu/docker1
2. 内网地址(ECS可选):registry-internal.cn-shanghai.aliyuncs.com/hhu/docker1
3.代码仓库(即绑定的github上的仓库):https://github.com/Jacksonary/Docker
我的第一个Docker镜像名字为:jacksonary/myfirstapp,根据网络情况选择公网推送,主要过程如下:
# 1.从加速器切换到仓库地址登录 docker login –username=jacksonary@163.com registry.cn-shanghai.aliyuncs.com
# 2.根据镜像名字或者ID为它创建一个标签,缺省为latest docker tag jacksonary/myfirstapp registry.cn-shanghai.aliyuncs.com/hhu/docker1[:镜像版本号]
# 3.推送镜像 docker push registry.cn-shanghai.aliyuncs.com/hhu/docker1[:镜像版本号]
随后可以在阿里云仓库中查看推送的镜像,如下:
在获取上述的镜像文件时,需要将指定镜像版本号,所以在推送镜像时还是建议追加必须的镜像版本号以作区分,如果我需要拉取上述的镜像可以通过如下操作:
# 因为版本缺省默认是latest的,所以获取时可以缺省,或者追加:latest(建议) docker pull registry.cn-shanghai.aliyuncs.com/hhu/docker1
一、一、Docker镜像的制作镜像的制作
一般是一个项目放一个文件夹,比如官网上有一个项目叫flask-app,那么所有的文件都在项目目录下,我们需要在项目根目录下添加一个叫做”Dockerfile”的文本文
件,并且将它的txt后缀去除,然后利用普通的文本编辑器进行Docker环境的编写即可,比如下面这个Dockerfile:
# 1.指定基本镜像为Linux(alipine Docker镜像是只有5M的轻量级Linux系统)
FROM alpine:3.5
# 在alipine下安装python和pip,这个app是用Python写的,所以需要安装Python环境,通常是复制文件和安装依赖
RUN apk add --update py2-pip
# 安装app所需的Python所必须的
COPY requirements.txt /usr/src/app/
RUN pip install --no-cache-dir -r /usr/src/app/requirements.txt
# 复制应用必须的文件到镜像中
COPY app.py /usr/src/app/
COPY templates/index.html /usr/src/app/templates/
# 设置需要暴露的端口号
EXPOSE 5000
# 设置应用通过cmd启动Python应用程序
CMD ["python", "/usr/src/app/app.py"]
然后创建Docker镜像,PowerShell进入项目根目录(即Dockerfile所在目录),执行
docker build -t jacksonary/myfirstapp .
这里需要注意的是当我们使用“Dockerfile”为Docker的配置文件名时,直接这么写,但是如果使用其他的配置文件名必须额外指定,比如指”jdk-9-alpine.Dockerfile”为
Docker的配置文件,应该用-f指定配置文件这么写:
docker build -t jacksonary/myfirstapp -f jdk-9-alpine.Dockerfile .
其中-t表示为当前创建的镜像打一个标签为“jacksonary/myfirstapp”,/前半部分必须是你Docker的用户名ID(如果你使用的是Dockerhub仓库,因为Dockerhub默认是
你的用户名,如果使用阿里云的话,我可以随意取),/后半部分是该应用的名字,合起来作为这个镜像的tag,后面的URL路径不能丢了,点号表示的是当前路径,执
行完成后会自动发布到当前HV的虚拟机中,利用docker images可以查看多了一个“jacksonary/myfirstapp”的镜像,完成。
【总结】关于【总结】关于Dockerfile文件配置需:文件配置需:
1. Dockerfile文件必须以FROM开头,后面跟基础容器和版本,指明当前镜像的父容器,父容器通常是以“用户名/镜像名:版本号”的形式存在(Dockerhub中是这一样
的)
2.RUN指令用于创建当前的Docker镜像,每次调用该指令的时候,Docker都会创建新的镜像层,这样便于回滚到之前的镜像版本,它的语法是在RUN后面接shell指令
(比如RUN mkdir /user/local/foo),它会自动执行/bin/sh的shell,当然也可以指定比如:RUN /bin/bash -c ‘mkdir /user/local/foo’
评论0
最新资源