p.s.這是萌新自己自學總結的筆記,如果想學習得更透徹的話還是請去看大佬的講解
目錄
- 鏡像與容器
- 一些命令與鏡像命名規范
- 數據卷
- 自定義鏡像
- Dockerfile
鏡像與容器
當我們利用Docker安裝應用時,Docker會自動搜索并下載應用鏡像(image),鏡像不僅包含應用本身,還包含應用運行所需要的環境、配置、系統函數庫。Docker會在運行鏡像時創造一個隔離環境,稱為容器(container)
鏡像倉庫:存儲和管理鏡像的平臺,Docker Hub
一些命令與鏡像命名規范
docker run:創建并運行一個容器
docker stop:停止容器進程
docker start:啟動容器進程
-d:讓容器在后臺運行
–name mysql:給容器起個名字,必須唯一
-p 3306:3306:設置端口映射(宿主機端口映射到容器內端口)
-e KEY=VALUE:設置環境變量
mysql:指定運行的鏡像的名字
docker pull:將遠端鏡像拉取到本地
docker push:將本地鏡像推送到遠端
docker images:查看本地所有鏡像
docker rmi:刪除本地鏡像
docker build:構建鏡像
docker save:將鏡像保存為壓縮文件
docker load:將鏡像加載到本地
docker ps:查看當前容器的運行狀態
docker rm:刪除本地容器
docker logs:查看容器運行日志
docker exec:進入容器內部
鏡像名稱一般分兩部分組成:[repository]:[tag]。
● 其中repository就是鏡像名
● tag是鏡像的版本
在沒有指定tag時,默認是latest,代表最新版本的鏡
數據卷
**數據卷(volume)**是一個虛擬目錄,是容器內目錄和宿主機目錄之間映射的橋梁
命令 說明
docker volume create 創建數據卷
docker volume ls 查看所有數據卷
docker volume rm 刪除指定數據卷
docker volume inspect 查看某個數據卷的詳情
docker volume prune 清除數據卷
自定義鏡像
鏡像就是包含了應用程序、程序運行的系統函數庫、運行配置等文件的文件包。構建鏡像的過程其實就是將上述文件打包的過程
部署一個java應用的步驟
準備一個Linux容器
安裝JRE并配置環境變量
拷貝jar包
運行jar包
。。。。。。。。。。。。。。
構建有一個java鏡像的步驟
準備一個Linux運行環境
安裝JRE并配置環境變量
拷貝jar包
編寫運行腳本
docker會把構建鏡像的每一步產生的文件分別打成壓縮包,作為鏡像的一部分,而不是將每一步產生的文件全部整成一個包作為鏡像
而這每一步產生的壓縮包稱為層(Layer)。進行添加安裝包、依賴、配置等每步操作時,每次操作都會產生一個新的層
優點:當你制作好了一個基礎鏡像后,以后制作鏡像可以使用該鏡像作為基礎,簡化了鏡像的構建
并且在下載鏡像時,如果docker檢測到該鏡像的前幾層在本地有的話就不會重復下載了,節省了空間,提升了下載速度
基礎鏡像(BaseImage):即應用依賴的系統函數庫、環境、配置、文件等
入口(EntryPoint):鏡像運行入口,一般指程序啟動的腳本和參數這層
Dockerfile
Dockerfile就是一個文本文件,其中包含一個個的指令(Instruction),用指令來說明要執行什么操作來構建鏡像。將來Docker可以根據Dockerfile幫我們構建鏡像。常見指令如下:
總結
鏡像包含了應用程序所需要的運行環境、函數庫、配置、以及應用本身等各種文件,這些文件分層打包而成
Dockerfile就是利用固定的指令來描述鏡像的結構和構建過程,這樣Docker才可以依次來構建鏡像