簡介:
通過docker鏡像, docker可以在服務器上運行包含項目所需運行環(huán)境的docker容器, 在線倉庫里有很多各個軟件公司官方發(fā)布的鏡像, 或者第三方的鏡像. 如果我們需要使用docker把我們的應用程序打包成鏡像, 別的機器上只要安裝了docker, 就可以直接運行鏡像, 而不需要再安裝應用程序所需要的環(huán)境(比如 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:鏡像創(chuàng)建時間
-
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)會停止容器
-
docker exec -it 容器ID /bin/bash :退出時(exit)不會停止容器, 一般用這個
-
3.?修改容器
進入這個ubuntu容器后, 你可以自己安裝你的應用所需要的運行環(huán)境, 比如我要安裝
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.?用包含運行環(huán)境的新鏡像, 打包我們的應用程序為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 就是定制需要的基礎鏡像。后續(xù)的操作都是基于 nginx。
RUN:用于執(zhí)行后面跟著的命令行命令。有以下倆種格式:
shell 格式:
RUN <命令行命令> # <命令行命令> 等同于,在終端操作的 shell 命令。
exec 格式:
RUN ["可執(zhí)行文件", "參數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 ? ---> d95b5ca17cc3 ? Step 2 : MAINTAINER Fisher "fisher@sudops.com" ? ---> Using cache ? ---> 0c92299c6f03 ? Step 3 : RUN /bin/echo 'root:123456' |chpasswd ? ---> Using cache ? ---> 0397ce2fbd0a ? Step 4 : RUN useradd runoob ? ......
參數說明:
-
-t?:指定要創(chuàng)建的目標鏡像名
-
.?:Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑
7. 使用?docker images
?查看我們新建的鏡像
8. 使用docker run -it 鏡像名:版本
?運行我們的鏡像并訪問其中的應用程序.
9. 這個鏡像可以在其他安裝了docker的設備上直接運行, 不需要提前裝jdk等環(huán)境了.
?以下是我收集到的比較好的學習教程資源,雖然不是什么很值錢的東西,如果你剛好需要,可以評論區(qū),留言【777】直接拿走就好了
各位想獲取資料的朋友請點贊 + 評論 + 收藏,三連!文章來源:http://www.zghlxwxcb.cn/news/detail-625839.html
三連之后我會在評論區(qū)挨個私信發(fā)給你們~文章來源地址http://www.zghlxwxcb.cn/news/detail-625839.html
到了這里,關于使用docker部署一個jar項目的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!