一、快速入門
Docker run命令中的常見參數
- -d:讓容器后臺運行
- --name:給容器命名(唯一)
- -e:環境變量
- -p:宿主機端口映射到容器內端口
- 鏡像名稱結構:Repository :TAG(鏡像名:版本號)
二、Docker基礎
1.常見命令
Docker最常見的命令就是操作鏡像,容器的命令
2.數據卷
(1)介紹
數據卷(volume)是一個虛擬目錄,是容器內目錄與宿主機目錄之間映射的橋梁,方便我們操作容器內文件,或者方便遷移容器產生的數據
(2)數據卷常見命令
(3)如何掛載數據卷
在創建容器時,使用
docker run -v 數據卷名:容器內目錄
完成掛載,在容器創建時,如果發現掛載的數據卷不存在時,會自動創建
(4)本地目錄掛載
docker run -v 本地目錄:容器內目錄
可以完成本地目錄掛載,本地目錄必須以“?/?”或“?./?”開頭,如果直接以名稱開頭,會被識別為數據卷而非本地目錄
3.自定義鏡像
鏡像就是包含了應用程序,程序運行的系統函數庫,運行配置等文件的文件包。構建鏡像的過程其實就是把上述文件分層打包的過程。
(1)鏡像結構
①層(Layer)
添加安裝包,依賴,配置等,每次操作都形成新的一層
②基礎鏡像(BaseImage)
應用依賴的系統函數庫,環境,配置,文件等
③入口(Entrypoint)
鏡像運行入口,一般是程序啟動的腳本和參數
(2)Dockerfile
Dockerfile就是一個文本文件,其中包含一個個的指令(Instruction),用指令來描述要執行什么操作來構建鏡像。將來Docker可以根據Dockerfile幫我們構建鏡像,常見指令如下:
示例:
當編寫好了Dockerfile,可以利用下面命令來構建鏡像:
docker build -t 鏡像名 Dockerfile目錄? .
其中:
- -t:是給鏡像起名,格式依然是repository:tag,不指定tag時,默認為latest
- .?:是指定Dockerfile所在目錄,如果就在當前目錄,則指定為“.”
4.容器網絡互連
默認情況下,所有容器都是以bridge方式連接到Docker的一個虛擬網橋上:
加入自定義網絡的容器才可以通過容器名互相訪問,Docker的網絡操作命令如下:
三、項目部署
1.Docker Compose
Docker Compose通過一個單獨的docker-compose.yml模板文件(YAML文件)來定義一組相關聯的應用容器,幫助我們實現多個相互關聯的Docker容器的快速部署。
示例:
version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "./mysql/conf:/etc/mysql/conf.d"- "./mysql/data:/var/lib/mysql"- "./mysql/init:/docker-entrypoint-initdb.d"networks:- hm-nethmall:build: context: .dockerfile: Dockerfilecontainer_name: hmallports:- "8080:8080"networks:- hm-netdepends_on:- mysqlnginx:image: nginxcontainer_name: nginxports:- "18080:18080"- "18081:18081"volumes:- "./nginx/nginx.conf:/etc/nginx/nginx.conf"- "./nginx/html:/usr/share/nginx/html"depends_on:- hmallnetworks:- hm-net
networks:hm-net:name: hmall