建立並執行容器:
FROM python:3.10-slim
WORKDIR /app
COPY . .
RUN pip install numpy
CMD ["python","a.py"]
首先建立一個Dockerfile
然後FROM指定基礎映象,WORKDIR指定之後所有docker命令工作路徑,COPY把檔案從一個本地路徑複製到映象路徑(這裡就是把當前目錄的所有內容複製到映象路徑/app下),RUN指定建立映象時執行的命令,CMD指定容器執行時執行的命令
之後,
docker build -t myapp .
-t後面跟映象名,.
表示在當前目錄尋找Dockerfile
docker run -p 80:5000 -d myapp
-p指定從本地主機到容器的埠對映(前面是本地埠,後面是容器埠),-d指定容器後臺執行,最後是映象名
一些其他指令:
docker ps #列舉所有容器
docker stop <id> #停止容器
docker restart <id> #重啟容器
docker rm <id> #刪除容器
docker exec -it <id> /bin/bash #啟動遠端容器
為防止資料隨著容器刪除消失,可以建立volume資料卷
docker volume create my_volume
在docker run的時候透過-v引數指定容器用的資料卷以及掛載到容器的哪個路徑上
docker run -p 80:5000 -d myapp -v my_volume:/etc/myapp
連線兩個容器:
建立一個 docker-compose.yml
檔案以連線兩個 Docker 映象,可以透過定義服務和網路來實現。以下是一個示例,以及每個引數的解釋:
示例 docker-compose.yml
version: '3.8'
services:
app:
image: your_app_image:latest
build:
context: ./app
dockerfile: Dockerfile
ports:
- "8080:8080"
environment:
- DATABASE_HOST=db
- DATABASE_PORT=5432
- DATABASE_USER=user
- DATABASE_PASSWORD=password
networks:
- app-network
depends_on:
- db
db:
image: postgres:13
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=your_database
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
networks:
- app-network
networks:
app-network:
volumes:
db-data:
引數解釋
-
version:
- 定義
docker-compose
檔案的版本。這決定了可用的功能和語法。
- 定義
-
services:
- 定義了多個服務,每個服務會執行一個容器。
-
app:
image
: 使用的映象名(例如your_app_image:latest
)。build
: 構建映象的配置。context
: Dockerfile 所在的目錄。dockerfile
: Dockerfile 的檔名。
ports
: 對映主機和容器的埠。格式為"主機埠:容器埠"
。environment
: 環境變數列表,用於配置容器內部的應用。networks
: 該服務所連線的網路。depends_on
: 定義服務的依賴關係,確保服務按順序啟動。
-
db:
image
: 使用的映象名(例如postgres:13
)。volumes
: 資料卷,用於持久化資料。db-data:/var/lib/postgresql/data
: 將主機上的db-data
卷掛載到容器內的指定路徑。
environment
: 環境變數列表,用於配置資料庫。
-
networks:
- 定義網路。在這個例子中,只有一個網路
app-network
,用於連線app
和db
服務。
- 定義網路。在這個例子中,只有一個網路
-
volumes:
- 定義資料卷。在這個例子中,只有一個資料卷
db-data
,用於持久化資料庫的資料。
- 定義資料卷。在這個例子中,只有一個資料卷
執行 docker-compose.yml
-
確保你已經安裝了 Docker 和 Docker Compose。
-
在包含
docker-compose.yml
檔案的目錄中執行以下命令:docker-compose up
這將會啟動定義的服務並建立網路和卷。
-
若要在後臺執行服務,可以使用:
docker-compose up -d
透過這種方式,你可以輕鬆地管理和連線多個 Docker 容器,並使用 docker-compose.yml
檔案進行配置和部署。