Docker 架構
三個基本概念
- 鏡像(Image):Docker 鏡像(Image),就相當於是一個 root 文件系統。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統的 root 文件系統。
- 容器(Container):鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。
- 倉庫(Repository):倉庫可看着一個代碼控制中心,用來保存鏡像。
Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。
Docker 容器通過 Docker 鏡像來創建。
Docker daemon(Docker 守護進程):
運行在宿主機上,Docker守護進程,用戶通過Docker client(Docker命令)與Docker daemon交互。
Images(鏡像):
將軟件環境打包好的模板,用來創建容器的,一個鏡像可以創建多個容器。
Containers(容器):
Docker的運行組件,啟動一個鏡像就是一個容器,容器與容器之間相互隔離,並且互不影響。
常用命令
查找鏡像
docker search 關鍵詞
下載鏡像
docker pull 鏡像名:TAG
Tag表示版本,有些鏡像的版本顯示latest,為最新版本
查看鏡像
docker images
刪除鏡像
docker rmi -f 鏡像ID或者鏡像名:TAG
-f 表示強制刪除
獲取元信息
docker inspect 鏡像ID或者鏡像名:TAG
運行鏡像
docker run --name 容器名 -i -t -p 主機端口:容器端口 -d -v 主機目錄:容器目錄:ro 鏡像TD或鏡像名:TAG
docker run --name how2jtmall -dit --privileged -p21:21 -p80:80 -p8080:8080 -p30000-30010:30000-30010 how2j/tmall:latest /usr/sbin/init # --name 指定容器名,可自定義,不指定自動命名
--privileged 啟動容器的時候,把權限帶進去。 這樣才可以在容器里進行完整的操作
-i 以交互模式運行容器
-t 分配一個偽終端,即命令行,通常組合來使用
-p 指定映射端口,將主機端口映射到容器內的端口
-d 后台運行容器
-v 指定掛載主機目錄到容器目錄,默認為rw讀寫模式,ro表示只讀
容器列表
docker ps -a -q
-a 查看所有容器(運行中、未運行)
-q 只查看容器的ID
啟動容器
docker start 容器ID或容器名
停止容器
docker stop 容器ID或容器名
刪除容器
docker rm -f 容器ID或容器名
-f 表示強制刪除
查看日志
docker logs 容器ID或容器名
進入正在運行容器
docker exec -it 容器ID或者容器名
/bin/bash 進入正在運行的容器並且開啟交互模式終端
/bin/bash是固有寫法,作用是因為docker后台必須運行一個進程,否則容器就會退出,在這里表示啟動容器后啟動bash。
也可以用docker exec在運行中的容器執行命令
拷貝文件
docker cp 主機文件路徑 容器ID或容器名:容器路徑
主機中文件拷貝到容器中
docker cp 容器ID或容器名:容器路徑 主機文件路徑
容器中文件拷貝到主機中
獲取容器元信息
docker inspect 容器ID或容器名
創建鏡像
更新鏡像
先使用基礎鏡像創建一個容器,然后對容器內容進行更改,然后使用docker commit命令提交為一個新的鏡像(tomcat為例)。
1.根據基礎鏡像,創建容器
docker run --name mytomcat -p 80:8080 -d tomcat
2.修改容器內容
docker exec -it mytomcat /bin/bash cd webapps/ROOT rm -f index.jsp echo hello world > index. html exit
3.提交為新鏡像
docker commit -m="描述消息" -a="作者" 容器ID或容器名 鏡像:TAG # 例: # docker commit -m="修改了首頁" -a="測試" mytomcat zong/tomcat:v1.0
4.使用新鏡像運行容器
docker run --name tom -p 8080:8080 -d zong/tomcat:v1.0
使用Dockerfile構建鏡像
Dockerfile是一個包含創建鏡像所有命令的文件,使用docker build命令可以根據Dockerfile的內容創建鏡像(以tomcat為例)。
1.創建一個Dockerfile文件vi Dockerfile
#注意dockerfile指令須大寫
FROM tomcat
MAINTAINER zong
RUN rm -f /usr/local/tomcat/webapps/ROOT/index.jsp
RUN echo "<h1>hello world2<h1>" > /usr/local/tomcat/webapps/ROOT/index.html
2.構建新鏡像
docker build -f Dockerfile -t zong/tomcat:v2.0 .
# -f Dockerfile路徑,默認是當前目錄
# -t 指定新鏡像的名字以及TAG
使用Dockerfile構建Spring Boot應用鏡像
—、准備
- 把你的spring boot項目打包成可執行jar包
- 把jar包上傳到Linux服務器
二、構建
1.在jar包路徑下創建Dockerfile文件vi Dockerfile
# 指定基礎鏡像,本地沒有會從dockerHub pull下來 FROM java:8 # 可執行jar何復制到基礎鏡像的根目錄下 ADD test.jar /test.jar # 鏡像要暴露旳端口,如要使用端口,在執行docker run命令時使用-p生效 EXPOSE 8080 # 在鏡像運行為容器后執行旳命令 ENTRYPOINT ["java", "-jar", "/test.jar"]
2.使用docker build命令構建鏡像,基本語法
docker build -f Dockerfile -t zong/mypro:v1 . # -f 指定Dockerfile文件的路徑 # -t 指定鏡像名字和TAG # . 指當前目錄,這里實際上需要一個上下文路徑
三、運行
運行自己的Spring Boot鏡像
docker run --name pro -p 80:80 -d 鏡像名:TAG
