目錄
1、docker 是啥
1.1 docker概念
1.2 docker 和虛擬機的區別
1.3 docker 的架構
2、dockerfile 制作
3、常用的docker命令
4、一個例子
做了好久的游戲,感覺和外面的技術有點脫節,游戲公司的技識訓本上都是固定的,因為生產效率第一,所以更新換代比較慢,作為一個程式不能停止學習,因為停止學習就會被社會拋棄,今天聊一下docker ,這個現在比較火的交付容器技術,還不趕緊學起來,
1、docker 是啥
1.1 docker概念
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的 Linux或Windows 機器上,也可以實作虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面,
換句人話說docker 就是在部署的時候屏蔽環境細節的一個環境,
1.2 docker 和虛擬機的區別
docker 是更輕量級的虛擬機,就是一個軟體,更節省系統資源
Docker 容器將軟體以及它運行安裝所需的一切檔案(代碼、運行時、系統工具、系統庫)打包到一起,這就保證了不管是在什么樣的運行環境,總是能以相同的方式運行,就好像 Java 虛擬機一樣,“一次撰寫,到處運行(Write once, run anywhere)”,而 Docker 是“一次構建,到處運行(Build once,run anywhere)
1.3 docker 的架構
client 就是我們發送命令的地方,也是我們常操作的地方
docker host 就是我們服務器上的容器,也是app 運行的地方
registry 就是存放app 的地方,可以搭建私有的倉庫,官方的Docker hub是一個用于管理公共鏡像的好地方,

2、dockerfile 制作
dockerfile 是一個用來構建鏡像的文本檔案,文本內容包含了一條條構建鏡像所需的指令和說明,
Docker通過讀取Dockerfile中的指令自動生成映像,
Dockerfile的基本結構
Dockerfile 一般分為四部分:基礎鏡像資訊、維護者資訊、鏡像操作指令和容器啟動時執行指令,’#’ 為 Dockerfile 中的注釋,
Dockerfile檔案說明
Docker以從上到下的順序運行Dockerfile的指令,為了指定基本映像,第一條指令必須是FROM,一個宣告以#字符開頭則被視為注釋,可以在Docker檔案中使用RUN,CMD,FROM,EXPOSE,ENV等指令,

# 基礎鏡像
FROM java:8
# 默認作業空間
VOLUME /tmp
WORKDIR /opt/his
# 復制為ecard
ADD target/server-adapter-0.0.1-SNAPSHOT.jar /opt/his/server-adapter.jar
ADD run.sh /opt/his/run.sh
?
RUN bash -c 'touch /server-adapter.jar'
# 時鐘
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#暴露埠對外
EXPOSE 9083
EXPOSE 9081
#執行 腳本
ENTRYPOINT ["bash","/opt/his/run.sh"]
3、常用的docker命令
docker ps 列出容器

配合 grep 使用,查出自己的app的容器id :d4f5ae7107f3
docker inspect : 獲取容器/鏡像的元資料,可以查看自己配置的環境變數和掛載的目錄
docker top :查看容器中運行的行程資訊,支持 ps 命令引數,
docker logs -f 跟蹤日志輸出
docker exec :在運行的容器中執行命令 docker exec -it cid bash
docker cp :用于容器與主機之間的資料拷貝 docker cp src dest
docker rm :洗掉一個或多個容器, -f 強制洗掉一個運行中的容器 docker
docker start :啟動一個或多個已經被停止的容器
docker stop :停止一個運行中的容器
docker restart :重啟容器
docker images 來列出本地主機上的鏡像
-v 掛載的只能
有幾點需要注意:
-
host機器的目錄路徑必須為全路徑(準確的說需要以
/或~/開始的路徑),不然docker會將其當做volume而不是volume處理 -
如果host機器上的目錄不存在,docker會自動創建該目錄
-
如果container中的目錄不存在,docker會自動創建該目錄
-
如果container中的目錄已經有內容,那么docker會使用host上的目錄將其覆寫掉
volume也是繞過container的檔案系統,直接將資料寫到host機器上,只是volume是被docker管理的,docker下所有的volume都在host機器上的指定目錄下/var/lib/docker/volumes,
將my-volume掛載到container中的/mydata目錄:
4、一個例子
下面是一個在公司使用的啟動腳本,主要做了幾件事情
注入環境變數
掛載目錄
暴露埠
設定檔案鏡像
?

全面,本書從并發的底層核心技術、互聯網應用框架、資料處理等三部分對高并發系列技術做了系統講解,
(2)實用,本書以實戰化訓練為宗旨,用詳盡且經典的案例闡述了 Java大資料及高級編程中的重點、難點,書中案例由真實專案演化而來,既體現了所述知識點的精華,又屏蔽了無關技術的干擾,
(3)案例完整,案例都是以“理論講解 環境搭建 完整代碼及分析 運行截圖”這種完善的結構進行講解,考慮到了讀者可能會遇到的各種問題,
京東自營購買鏈接:
《億級流量Java高并發與網路編程實戰》(顏群)【摘要 書評 試讀】- 京東圖書
當當自營購買鏈接:
《億級流量Java高并發與網路編程實戰》(顏群)【簡介_書評_在線閱讀】 - 當當圖書
大家點贊關注,三天后在留言的同學中抽取送兩本書
注:如果中獎了沒關注則放棄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302598.html
標籤:其他
上一篇:【3D目標檢測/跟蹤】Center-based 3D Object Detection and Tracking閱讀筆記(2021)
