Linux Docker鏡像部署 -- Dockerfile文件

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

看下面這個圖


docker鏡像圖片.jpg

從中可以看出,Docker 包含三個基本概念,分別是鏡像(Image)、容器(Container)和倉庫(Repository)。鏡像是 Docker 運行容器的前提,倉庫是存放鏡像的場所,可見鏡像更是Docker的核心。

回到正題,Docker 鏡像可以看作是一個特殊的文件系統(tǒng),除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會被改變。

要想更深入的了解 Docker 鏡像,鏡像的原理也必不可少,而這其中最重要的概念就是鏡像層(Layers)(如下圖)。鏡像層依賴于一系列的底層技術(shù),比如文件系統(tǒng)(filesystems)、寫時復(fù)制(copy-on-write)、聯(lián)合掛載(union mounts)等。

docker 鏡像圖片2.png

總的來說,你最需要記住這點:

在 Dockerfile 中, 每一條指令都會創(chuàng)建一個鏡像層,繼而會增加整體鏡像的大小。

鏡像作為 Docker 最突出的創(chuàng)新之一,它變革了軟件交付標準。理解鏡像,對理解整個 Docker 的生命周期非常重要。

二: 把你的項目打包成docker鏡像文件

在Linux下操作

Java項目

在當前文件夾下創(chuàng)建個文件夾目錄:docker(注:可以隨便找個地方創(chuàng)建此文件夾)

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

在當前目錄下創(chuàng)建dockerfile 文件

里面編輯添加如下內(nèi)容:

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"]

# 設(shè)置時區(qū)

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

此時docker 文件夾下有如下文件:

image

三:基于該Dockerfile構(gòu)建Jave應(yīng)用鏡像

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

Docker build -t auth-authentication-1.0.0.jar:v1.0 .
auth-authentication-1.0.0.jar:v1.0 構(gòu)建docker鏡像為1.0版本

查看你構(gòu)建的docker鏡像

docker images 
image

這個圖是隨便截的

那里是你構(gòu)建的docker鏡像的名字(auth-authentication-1.0.0) tag是版本號(v1.0)

Image id 是此鏡像的ID號(d124ab8e75a7)

把構(gòu)建的docker 鏡像打為tar包

docker save d124ab8e75a7 > xxx.tar(名字隨便起的,你可以按你項目的名字來起)

這時候就可以在你創(chuàng)建的docker 的文件夾下看到你打的tar包了,打出來的包很大

image

這時候就可以上傳到docker 的服務(wù)器上了

四:上傳docker鏡像

登錄

docker login 127.0.0.1 (此IP我隨便填寫的,到時候看你的服務(wù)器IP地址)

輸入自己的docker賬號密碼

載入tar包

docker load -i xxx.tar  然后就會出來鏡像的id
image
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 (后明填你服務(wù)器地址和文件夾路徑在帶你的鏡像包名字和版本號)

這樣自己就tag 好了

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

這時候 你就可以在你的docker上看到你剛才推上去的包了

下面是 vuepython 的dockerfile 文件

VUE dockerfile

#dockerfile
#使用 nginx最新版本作為基礎(chǔ)鏡像
FROM nginx

#將當前文件夾的dist文件復(fù)制到容器的/usr/share/nginx/html目錄
COPY ./dist /usr/share/nginx/html/
# 拷貝.conf文件到鏡像下,替換掉原有的nginx.conf
COPY nginx.conf /etc/nginx/nginx.conf

#聲明運行時容器暴露的端口(容器提供的服務(wù)端口)

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

image

Python

image

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容