使用docker部署一個jar項目


簡介:

通過docker鏡像, docker可以在服務器上運行包含項目所需運行環境的docker容器, 在線倉庫里有很多各個軟件公司官方發布的鏡像, 或者第三方的鏡像. 如果我們需要使用docker把我們的應用程序打包成鏡像, 別的機器上只要安裝了docker, 就可以直接運行鏡像, 而不需要再安裝應用程序所需要的環境(比如 jre)了.

 

定制自己的鏡像:

更新已有的鏡像,再構建新的自定義鏡像.

1. 使用docker pull 鏡像名:版本從在線docker倉庫中拉取一個鏡像

docker pull ubuntu:18.04 使用docker images 可以看到你的鏡像: (默認路徑: /var/lib/docker/containers)

root@iZbp13tcf8gaqn21r6m8viZ:/var/lib/docker/containers# docker images
REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
lifetrack           1.0                 881e666fc6b3       21 minutes ago     1.49GB
ubuntu_jdk         1.0                 42d9398e7f50       40 minutes ago     1.46GB
ubuntu             18.04               8e4ce0a6ce69       3 weeks ago         64.2MB
star7th/showdoc     latest             e169aaaa88e2       3 months ago       389MB

各個選項說明:

  • REPOSITORY:表示鏡像的倉庫源

  • TAG:鏡像的標簽

  • IMAGE ID:鏡像ID

  • CREATED:鏡像創建時間

  • SIZE:鏡像大小

2.使用docker run -t -i -d 鏡像名:版本 /bin/bash 來根據鏡像運行一個容器</u>

參數說明:

  • -i: 交互式操作。

  • -t: 終端。

  • -d:在后台運行(加了這個 -i -t就沒用了)

  • ubuntu:15.10: 這是指用 ubuntu 15.10 版本鏡像為基礎來啟動容器。

  • /bin/bash:放在鏡像名后的是命令,這里我們希望有個交互式 Shell,因此用的是 /bin/bash。

    如果在后台運行容器, 想進入容器有兩種方法:

    1. docker attach 容器ID   : 退出時(exit)會停止容器
    1. docker exec -it 容器ID /bin/bash :退出時(exit)不會停止容器, 一般用這個

3. 修改容器

進入這個ubuntu容器后, 你可以自己安裝你的應用所需要的運行環境, 比如我要安裝

mysql: sudo apt-get install mysql

JDK: sudo apt-get install openjdk-8-jdk 以上在容器內操作, 退出輸入: exit

4. 將容器提交為一個新鏡像:

docker commit -m="has update" -a="qds" 容器ID 鏡像名:版本號

5. 用包含運行環境的新鏡像, 打包我們的應用程序為docker鏡像

把我們的java程序的jar包, 放在一個新建空文件夾, 然后新建一個Dockerfile文件

編輯Docerfile文件:

   FROM 鏡像名:版本號
 
  MAINTAINER 作者簽名

  RUN 打包時運行的linux命令

  COPY [--chown=<user>:<group>] <源路徑1>... <目標路徑>

  CMD nohup java -jar xxxx.jar > xxx.log 2>&1 &```

FROM:定制的鏡像都是基於 FROM 的鏡像,這里的 nginx 就是定制需要的基礎鏡像。后續的操作都是基於 nginx。

RUN:用於執行后面跟着的命令行命令。有以下倆種格式:

shell 格式:

RUN <命令行命令>
# <命令行命令> 等同於,在終端操作的 shell 命令。

exec 格式:

RUN ["可執行文件", "參數1", "參數2"]
# 例如:
# RUN ["./test.php", "dev", "offline"] 等價於 RUN ./test.php dev offline

COPY: 復制指令,從上下文目錄中復制文件或者目錄到容器里指定路徑。

CMD: 類似於 RUN 指令,用於運行程序,但二者運行的時間點不同:

CMD 在docker run 時運行。
RUN 是在 docker build。

作用:為啟動的容器指定默認要運行的程序,程序運行結束,容器也就結束。CMD 指令指定的程序可被 docker run 命令行參數中指定要運行的程序所覆蓋。

注意:如果 Dockerfile 中如果存在多個 CMD 指令,僅最后一個生效。
6. 根據Dockerfile文件構建包含應用程序的新鏡像:

docker build -t runoob/centos:6.7 .

   runoob@runoob:~$ docker build -t runoob/centos:6.7 .
  Sending build context to Docker daemon 17.92 kB
  Step 1 : FROM centos:6.7
  ---&gt; d95b5ca17cc3
  Step 2 : MAINTAINER Fisher "fisher@sudops.com"
  ---&gt; Using cache
  ---&gt; 0c92299c6f03
  Step 3 : RUN /bin/echo 'root:123456' |chpasswd
  ---&gt; Using cache
  ---&gt; 0397ce2fbd0a
  Step 4 : RUN useradd runoob
  ......

參數說明:

  • -t :指定要創建的目標鏡像名

  • . :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑

7. 使用 docker images 查看我們新建的鏡像
8. 使用docker run -it 鏡像名:版本 運行我們的鏡像並訪問其中的應用程序.
9. 這個鏡像可以在其他安裝了docker的設備上直接運行, 不需要提前裝jdk等環境了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM