Docker - Docker Compose - 入門 - 啟動 Ubuntu 鏡像


  1. 概述

    1. docker compose 入門
      1. 后面簡稱 compose
  2. 背景

    1. 裝好了 compose
    2. 給自己畫了一個 大餅
    3. 畫好大餅, 可以開始慢慢用了
  3. 環境

    1. os

      1. centos7
    2. docker-engine

      1. 19.03.12
    3. docker-compose

      1. 1.26.2
    4. image

      1. ubuntu
        1. 19.04

1. compose: 基礎行為模式

  1. 概述

    1. compose 的 基礎行為模式
  2. 基礎行為模式

    1. 編寫 docker-compose.yml 文檔

      1. 不熟悉 yml 的同學, 請自學
    2. 創建 compose 項目目錄

      1. 目錄名是 項目名
      2. 把 docker-compose.yml 放到目錄下
    3. 進入 項目目錄

    4. 啟動項目

      > docker-compose up
      
    5. 查看項目狀態

      > docker-compose ps -a
      
    6. 銷毀項目

      > docker-compose down 
      
  3. 感覺

    1. 思路還是很清晰的
    2. 難點
      1. 就目前來看, 難點好像就是編寫 docker-compose.yml
      2. 這玩意, 如果第一次接觸, 確實很煩人
      3. 沒事, 我們先寫一個簡單的

2. compose file

  1. 概述

    1. 寫個最簡單的 compose file
  2. 目的

    1. 用 compose file 的形式, 起來一個 ubuntu 容器

1. conpose file

  1. 概述

    1. 簡介 compose file
  2. 格式

    1. yml
  3. 示例

    version: "3.8"
    services:
      ubuntu:
        image: ubuntu:19.04
    
  4. 字段

    1. version

      1. 版本

        1. compose file 的版本
      2. 意義

        1. 兼容
          1. 不同的 compose file 版本, 兼容不同的 docker-engine
        2. 語法與功能
          1. 不同版本有差別
        3. 所以
          1. 如果遇到了 不同的版本, 請先確認兼容, 在做操作
      3. 筆者

        1. 選擇 3.8 的版本號
    2. services

      1. 服務
        1. 定義 容器
        2. 就像 docker run 命令一樣
        3. 后面還會有其他的 字段, 來定義 網絡, 卷 之類的東西
    3. ubuntu

      1. 容器的名字
        1. 實際產生的容器, 會叫這種名字

          <project_name>_<container_name>_<no>
          
    4. image

      1. 鏡像
        1. 使用 已經存在的鏡像
          1. 本地
          2. 遠程
        2. 當然, 后續還可以自己做鏡像

2. 步驟

  1. 概述

    1. 執行的步驟
  2. 步驟

    1. 創建目錄 demo01

    2. 進入 demo01, 創建 docker-compose.yml 文件

      1. 並將 示例 內容, 復制進去
    3. 在 demo01 目錄下, 執行后續命令

    4. 命令

      > docker-compose up
      
  3. 結果

    1. 啟動成功
    2. 但是 容器立即退出 了
  4. 問題

    1. 問題1: 容器怎么沒了
      1. 問題
        1. 容器為什么自己退出了
      2. 思路
        1. 之前用 docker run 命令的時候, 也有類似情況
        2. 需要加 -it/-dt, 才能讓 ubuntu 容器不掛
        3. 也就是說, 可能需要一個 tty...

3. 問題: 如何讓 ubuntu 容器啟動

  1. 概述

    1. 讓 ubuntu 容器成功啟動
  2. 思路

    1. 找到 tty 相關的字段, 就可以了
  3. 字段

    1. tty
      1. 位置

        1. 容器元素的子元素
      2. 示例

        tty: true
        
  4. 嘗試

    1. 嘗試1: 直接啟動

      1. 啟動成功
      2. 但是卡住了, 顯示 attach, 但是沒有后續
      3. 處理
        1. 方案1: ctrl + c 終止
        2. 方案2: ctrl + z 退出命令, 但是容器已經啟動成功
    2. 嘗試2: 后台啟動

      1. 命令

        > docker-compose up -d
        
      2. 結果

        1. 啟動成功
  5. 驗證

    1. 查看狀態

      1. docker-cli

        > docker ps -a
        
      2. docker-compose

        > docker-compose ps
        
    2. 嘗試連接

      1. docker-cli

        > docker exec -it <container> /bin/bash
        
  6. 其他

    1. 銷毀

      1. 命令

        # compose file 下的所有東西, 全部干掉
        # 而且不會影響 compose file 之外的容器
        # 很輕松
        > docker-compose down
        
    2. docker-compose 命令的執行

      1. 位置

        1. 需要在 compose file 的目錄下執行
        2. 目錄名稱, 是項目名稱
      2. 配置文件

        1. 默認叫做 docker-compose.yml
        2. 可以指定, 需要在 命令行里加參數 -f <config>

ps

  1. ref
    1. Compose file version 3 reference

      1. 官方文檔
        1. 最下面有一個 點贊/反對 的控件
        2. 目前來看, 兩邊旗鼓相當啊
    2. docker-compose加了 -d 參數后啟動容器還是處於exit 0 狀態

      1. 感謝 SDingBa 的回答
      2. 搜索 docker-compose tty, 能搜出一大票
        1. 善用 搜索引擎...
    3. Compose file versions and upgrading

      1. compose file 的兼容性文檔
        1. 舊版本可以通過調整, 變成 新版本


免責聲明!

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



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