docker 架構


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應用鏡像

—、准備

  1. 把你的spring boot項目打包成可執行jar包
  2. 把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


免責聲明!

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



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