Dockerfile应用容器化

2020-09-08  本文已影响0人  是立品啊

应用容器化

容器是为应用而生!具体来说,容器能够简化应用的构建、部署和运行过程。

容器化步骤

完整的应用容器化过程主要分为以下几个步骤。

  1. 编写应用代码。
  2. 创建一个Dockerfile,其中包括当前应用的描述、依赖以及该如何运行这个应用。
  3. 对该Dockerfile执行docker image build命令。
  4. 等待Docker将应用程序构建到Docker镜像中。
image.png

Dockerfile文件分析

Dockerfile的两个用途

  1. 对当前应用的描述。
  2. 指导Docker完成应用的容器化(创建一个包含当前应用的镜像)。

编写准则:

文件分析

# Test web-app to use with Pluralsight courses and Docker Deep Dive book
# Linux x64
FROM alpine

LABEL maintainer="nigelpoulton@hotmail.com"

# Install Node and NPM
RUN apk add --update nodejs nodejs-npm

# Copy app to /src
COPY . /src

WORKDIR /src

# Install dependencies
RUN  npm install

EXPOSE 8080

ENTRYPOINT ["node", "./app.js"]

以alpine镜像作为当前镜像基础,指定维护者(maintainer)为“nigelpoultion@hotmail.com”,安装Node.js和NPM,将应用的代码复制到镜像当中,设置新的工作目录,安装依赖包,记录应用的网络端口,最后将app.js设置为默认运行的应用。

新增镜像层的指令包括FROMRUN以及COPY,而新增元数据的指令包括EXPOSEWORKDIRENV以及ENTERPOINT。关于如何区分命令是否会新建镜像层,一个基本的原则是,如果指令的作用是向镜像中增添新的文件或者程序,那么这条指令就会新建镜像层;如果只是告诉Docker如何完成构建或者如何运行应用程序,那么就只会增加镜像的元数据

命令

构建镜像

# 构建并生成一个名为web:latest的镜像
docker image build -t web:latest .

查看构建

docker image history web:latest
docker image inspect web:latest

推送构建到dockerHub

  1. 登录DockerHub
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: testerlp
Password:
Login Succeeded
  1. 为待推送镜像打上合适的标签

    • Registry(镜像仓库服务)
    • Repository(镜像仓库)
    • Tag(镜像标签)

    无须为RegistryTag指定值。如果没有为上述信息指定具体值的时候,Docker会默认Registry=docker.ioTag=latest。但是Docker并没有给Repository提供默认值,而是从被推送镜像中的REPOSITORY属性值获取

    查看待推送镜像信息

    docker images | grep alpine
    
    
    image.png

docker image ls命令。在该命令对应的输出内容中可以看到,镜像仓库的名称是alpine。这意味着执行docker image push命令,会尝试将镜像推送到docker.io/alpine:latest中。但是其实testerlp这个用户并没有alpine这个镜像仓库的访问权限,所以只能尝试推送到testerlp这个二级命名空间(Namespace)之下。因此需要使用testerlp这个ID,为当前镜像重新打一个标签。

image.png image.png
  1. 推送镜像
    docker image push testerlp/alpine:latest
    
image.png

ps:虽然超时了~~~

上一篇 下一篇

猜你喜欢

热点阅读