Dockerfile
一、簡介
1.1 dockerfile中常用的命令合集
1.2 docker build 基於dockerfile制作鏡像的命令
docker build [OPTIONS] PATH | URL | -參數
1.3 參數選項
-
--build-arg=[] :設置鏡像創建時的變量;
-
--cpu-shares :設置 cpu 使用權重;
-
--cpu-period :限制 CPU CFS周期;
-
--cpu-quota :限制 CPU CFS配額;
-
--cpuset-cpus :指定使用的CPU id;
-
--cpuset-mems :指定使用的內存 id;
-
--disable-content-trust :忽略校驗,默認開啟;
-
-f :指定要使用的Dockerfile路徑;
-
--force-rm :設置鏡像過程中刪除中間容器;
-
--isolation :使用容器隔離技術;
-
--label=[] :設置鏡像使用的元數據;
-
-m :設置內存最大值;
-
--memory-swap :設置Swap的最大值為內存+swap,"-1"表示不限swap;
-
--no-cache :創建鏡像的過程不使用緩存;
-
--pull :嘗試去更新鏡像的新版本;
-
--quiet, -q :安靜模式,成功后只輸出鏡像 ID;
-
--rm :設置鏡像成功后刪除中間容器;
-
--shm-size :設置/dev/shm的大小,默認值是64M;
-
--ulimit :Ulimit配置。
-
--tag, -t: 鏡像的名字及標簽,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標簽。
-
--network: 默認 default。在構建期間設置RUN指令的網絡模式
#例如
FROM centos:7
ARG user # ARG user=root
USER $user
docker build --build-arg user=yhhu .
1.4 這里講一下CMD
、ENTRYPOINT
和RUN
的區別,其他相關內容可以查看下方參考鏈接
- 一個Dockerfile中只能有一個CMD命令。( docker run時運行,dockerfile 中如果存在多個CMD指令,僅最后一個生效。CMD 指令指定的程序可被 docker run 命令行參數中指定要運行的程序所覆蓋。)
- 一個Dockerfile中可以有許多個RUN命令。(docker buld時運行)
- ENTRYPOINT 指令:類似於 CMD 指令,但其不會被 docker run 的命令行參數指定的指令所覆蓋,而且這些命令行參數會被當作參數送給 ENTRYPOINT 指令指定的程序;但是, 如果運行 docker run 時使用了 --entrypoint 選項,此選項的參數可當作要運行的程序覆蓋 ENTRYPOINT 指令指定的程序;
參考
Docker-compose
安裝方法
官方文檔
簡單介紹docker-compose文件的編寫方法
這里以一個mysql+redis的配置方法舉例
一. 先判斷docker-compose是否安裝完成
$ docker-compose --version
二. docker-compose常見參數
#版本號
version: "3.1"
#服務列表
services:
#服務名
mysql:
#容器名稱
container_name: mysql-docker
#使用的鏡像
image: mysql
#沒啟動時是否自動重啟
restart: always
#映射端口 :前的為本地端口,:后的為容器的端口
ports:
- "3306:3306"
#添加環境變量
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: "Asia/Shanghai"
#掛載文件目錄
volumes:
- "./storages/data/mysql:/var/lib/mysql"
- "./storages/config/my.cnf:/etc/my.cnf"
redis:
image: redis
restart: always
command: --appendonly yes
ports:
- 6379:6379
volumes:
- "./storages/data/redis:/data"