Dockerfile+Docker-compose


Dockerfile

一、簡介

1.1 dockerfile中常用的命令合集

image.png

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 這里講一下CMDENTRYPOINTRUN的區別,其他相關內容可以查看下方參考鏈接

  • 一個Dockerfile中只能有一個CMD命令。( docker run時運行,dockerfile 中如果存在多個CMD指令,僅最后一個生效。CMD 指令指定的程序可被 docker run 命令行參數中指定要運行的程序所覆蓋。)
  • 一個Dockerfile中可以有許多個RUN命令。(docker buld時運行)
  • ENTRYPOINT 指令:類似於 CMD 指令,但其不會被 docker run 的命令行參數指定的指令所覆蓋,而且這些命令行參數會被當作參數送給 ENTRYPOINT 指令指定的程序;但是, 如果運行 docker run 時使用了 --entrypoint 選項,此選項的參數可當作要運行的程序覆蓋 ENTRYPOINT 指令指定的程序;

參考

Docker系列07—Dockerfile 詳解

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"


免責聲明!

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



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