Linux Docker镜像部署 -- Dockerfile文件

一:首先你要明白什么是镜像部署 

看下面这个图

从中可以看出,Docker 包含三个基本概念,分别是镜像(Image)、容器(Container)和仓库(Repository)。镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是Docker的核心。

回到正题,Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

要想更深入的了解 Docker 镜像,镜像的原理也必不可少,而这其中最重要的概念就是镜像层(Layers)(如下图)。镜像层依赖于一系列的底层技术,比如文件系统(filesystems)、写时复制(copy-on-write)、联合挂载(union mounts)等。

 

 

总的来说,你最需要记住这点:

在 Dockerfile 中, 每一条指令都会创建一个镜像层,继而会增加整体镜像的大小。

镜像作为 Docker 最突出的创新之一,它变革了软件交付标准。理解镜像,对理解整个 Docker 的生命周期非常重要。

二: 把你的项目打包成docker镜像文件

在Linux下操作

Java项目

在当前文件夹下创建个文件夹目录:docker(注:可以随便找个地方创建此文件夹)

里面放你的Java对的程序Jar包

在当前目录下创建dockerfile 文件

里面编辑添加如下内容:

FROM  java:8

# 把jar包添加到镜像中

#  auth-authentication-1.0.0.jar  这里是我Java打出来的Jar包的名字 你的要改成你的名字

ADD auth-authentication-1.0.0.jar /app.jar

# 镜像暴露的端口

EXPOSE 8010

RUN bash -c 'touch /app.jar'

# 容器启动命令

ENTRYPOINT ["java","-jar","/app.jar"]

# 设置时区

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezonei

此时docker 文件夹下有如下文件:

三:于该Dockerfile构建Jave应用镜像

运行如下命令,注意不要少了最后的“ . ”

Docker build -t auth-authentication-1.0.0.jar:v1.0 .

# auth-authentication-1.0.0.jar:v1.0 构建docker镜像为1.0版本

查看你构建的docker镜像

docker images 

 

这个图是随便截的

那里是你构建的docker镜像的名字(auth-authentication-1.0.0) tag是版本号(v1.0)

Image id 是此镜像的ID号(d124ab8e75a7)

把构建的docker 镜像打为tar包

 

docker save d124ab8e75a7 > xxx.tar(名字随便起的,你可以按你项目的名字来起)

这时候就可以在你创建的docker 的文件夹下看到你打的tar包了,打出来的包很大

 这时候就可以上传到docker 的服务器上了

四:上传docker镜像

登录

docker login 127.0.0.1 (此IP我随便填写的,到时候看你的服务器IP地址)

输入自己的docker账号密码

载入tar包

docker load -i xxx.tar  然后就会出来镜像的id

Docker tar sha256:xxx 192.xxx.xxx.xxx/xxx.tar:v1.0.0.1
Docker push 192.xxx.xxx.xxx/xxx.tar:v1.0.0.1

Docker tag  sha256:xxxx (这里填上面出来的镜像id)  192.xxx.xxx.xxx/xxx.tar:v1.0.0.1 (后明填你服务器地址和文件夹路径在带你的镜像包名字和版本号)

这样自己就tag 好了

然后docker push 推到docker 上 就可以了

这时候 你就可以在你的docker上看到你刚才推上去的包了

 

下面是 vuepython 的dockerfile 文件

# VUE dockerfile

#dockerfile
#使用 nginx最新版本作为基础镜像
FROM nginx

#将当前文件夹的dist文件复制到容器的/usr/share/nginx/html目录
COPY ./dist /usr/share/nginx/html/
# 拷贝.conf文件到镜像下,替换掉原有的nginx.conf
COPY nginx.conf /etc/nginx/nginx.conf

#声明运行时容器暴露的端口(容器提供的服务端口)

EXPOSE 9123 

#CMD:指定容器启动时要运行的命令
CMD ["nginx", "-g", "daemon off;"]

#=====================vue还需要配一个nginx.conf文件。防止地址404 找不到地址

worker_processes auto;

events {
    worker_connections  1024;
}
 
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65;
    client_max_body_size   20m;
    server {
        listen       80;
        server_name  www.longdb.com;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
     location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

#===========================python ==dockerfile

# syntax=docker/dockerfile:1

FROM python:3.9

WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt

COPY . .

CMD [ "python3","-m" , "flask", "run", "--host=0.0.0.0", "--port=20010"]

#====================== requirements.txt  这个里面是你python用到的依赖库 直接填名字就好

下面截图下每个文件里的配置

VUE

Python

把dockerfile 和 requirements.txt 文件 放到项目中 然后再项目里面运行docker的一系列操作就可以了

 

 

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种开源的容器化平台,它可以帮助开发者将应用程序和服务以容器的形式进行打包、分发和部署。而Gluster是一个分布式存储系统,它可以将多个服务器的存储空间整合在一起,形成一个统一的、可扩展的存储池。 CentOS是一种基于Red Hat Enterprise Linux(RHEL)的开源操作系统,它提供了稳定性和安全性,并且具备广泛的应用支持。 Dockerfile是用于构建Docker镜像的脚本文件,它可以定义容器的运行环境、设置启动命令等。 那么,docker-gluster-centos Dockerfile是指在CentOS系统上构建一个包含Gluster分布式存储系统的Docker镜像的脚本文件。 在docker-gluster-centos Dockerfile中,我们可以使用CentOS的官方镜像作为基础镜像,并在此基础上安装和配置Gluster分布式存储系统。可以通过使用适当的软件包管理工具(如yum)来安装Gluster软件包和依赖项。然后,可以使用Dockerfile中的指令来启动和配置Gluster节点、创建Gluster卷以及设置其他必要的参数和选项。 通过构建docker-gluster-centos Docker镜像,我们可以在任何支持Docker的环境中快速部署和运行Gluster分布式存储系统,而无需手动安装和配置。这样可以大大简化Gluster的部署过程,提高运维效率,并且能够实现更加轻量级、可移植和可扩展的存储解决方案。 总而言之,docker-gluster-centos Dockerfile是用于在CentOS系统上构建包含Gluster分布式存储系统的Docker镜像的脚本文件,使得Gluster的部署和运行变得更加简单、可靠和可扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值