什麼是OrbStack
OrbStack 是一個可以在 macOS 上快速執行 Docker 容器,和 Linux 虛擬機器的工具,資源佔用率低,高頻寬,速度快。
OrbStack解決了官方Docker的缺陷
- 啟動速度快
- 網路快
- Rosetta x86 模擬
- 更低的CPU佔用,更低的記憶體佔用
- 更低的電量消耗
- 功能更簡潔,更加輕量化
使用OrbStack安裝Mysql
此處建議使用docker-compose
去快速編排、構建具有多個docker容器的專案,而不是透過docker run
的方式去完成單獨的Docker容器構建。(公司裡的運維老哥跟我說,小白才會用run去玩docker容器🙄,建議我直接上手docker-compose,透過配置檔案和配置命令的方式去管理具有多個Docker容器的專案)
Docker Compose 簡介
Compose 是用於定義和執行多容器 Docker 應用程式的工具。透過 Compose,您可以使用 YAML 檔案
(字尾名.yml
)來配置應用程式需要的所有服務。然後,使用一個命令,就可以從 YML 檔案配置中建立並啟動所有服務(預設使用的配置檔名稱為docker-compose.yml
)。OrbStack內部自動整合docker-compose,因此無需重複安裝,開箱使用
Docker Compose 核心概念
Docker Compose將所管理的容器分為三層,分別是工程(project),服務(service)以及容器(container)
Docker Compose 使用的三個步驟:
- 使用 Dockerfile 定義應用程式的環境。
- 使用 docker-compose.yml 定義構成應用程式的服務,這樣它們可以在隔離環境中一起執行。
- 執行 docker-compose up 命令來啟動並執行整個應用程式。
docker.compose.yml 檔案編寫-以此次搭建Mysql為例
docker-compose.yml
version: "3.3"
services:
db:
image: mysql:5.7
restart: always
platform: linux/amd64
container_name: dataDB
environment:
MYSQL_DATABASE: "niumu"
# So you don't have to use root, but you can if you like
MYSQL_USER: "user"
# You can use whatever password you like
MYSQL_PASSWORD: "123654"
# Password for root access
MYSQL_ROOT_PASSWORD: "123654"
ports:
# <Port exposed> : <MySQL Port running inside container>
- "3306:3306"
volumes:
- ./db-data:/var/lib/mysql
引數解釋
- version:
version
是必須指定
的,而且總是位於檔案的第一行
。它定義了Compose 檔案格式
(主要是 API)的版本,而不是Docker引擎 或是 Docker Compose的版本 - services:用於定義不同的應用服務。這裡services下的
db
表示服務名稱(此處可以取任意名稱),服務都是被Docker Compose部署在各自容器當中 - image:指定
映象tag
或者映象ID
。image是必須指定
的,或者可以選擇與build存在其一(version1版本不支援同時存在
)。 - restart:重啟策略,預設no,可選:always,no-failure,unless-stopped
- platform:支援的執行平臺。
- container_name:容器名稱
- environment:新增環境變數。這裡是為資料庫指定資料庫名稱,使用者名稱稱,密碼,root密碼
- ports:用於暴露埠。
[在宿主環境/主機暴露的埠]:[容器內部暴露的埠]
,此外與之類似的還有一個expose
,不過expose暴露的埠只提供給容器
使用,而不會暴露給主機/宿主環境 - volumes:掛載資料卷。上述表示將主機的./db-data掛載到容器的/var/lib/mysql上,訪問/var/lib/mysql就相當於訪問主機的./db-data,資料寫入也會同步到主機上。
啟動Docker Compose
在指定的目錄下建立好docker-compose.yml
後,cd到當前目錄,透過docker compose up -d
啟動
啟動後示意圖
終端
OrbStack
dataflare