下載鏡像
docker pull ubuntu:18.04
docker run -it --rm ubuntu:18.04 bash # -it交互終端 --rm運(yùn)行完了自動(dòng)刪除容器
docker image ls
docker image rm <IMAGE ID>/<REPO:TAG>
創(chuàng)建自己的鏡像
編輯Dockerfile
渴肉,注釋忽略:
FROM python:3.8-slim-buster
WORKDIR /my/workdir/path
# 第1個(gè)點(diǎn)上下文千扔,第2個(gè)點(diǎn)是WORKDIR
COPY . .
# RUN為創(chuàng)建時(shí)執(zhí)行贮乳,如果多條九妈,就用 \換行&&
RUN "pip3 install -r requirements.txt"
# CMD為運(yùn)行時(shí)執(zhí)行
CMD ["python3", "app.py"]
編譯運(yùn)行
從當(dāng)前目錄下找Dockerfile
進(jìn)行編譯:
docker build -t my-app . # .代表上下文
運(yùn)行:
docker run -p 80:5000 -d my-app
# 參數(shù)的順序好像很重要涤伐,順序不對(duì)有時(shí)候失敗
docker container run -d --name qq-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mypwd mysql:5.7
其它命令:
docker ps -a
docker stop <container_id>
docker restart <container_id>
docker rm <container_id>
docker exec -it <container_id> /bin/bash # bash也行,比attach好
docker container prune # 清除所有停止的容器
掛載外部數(shù)據(jù):
docker volume create outer-shared-data
# -d后臺(tái), -p指定將容器的5000暴露到宿主的80, -v掛載
docker run -dp 80:5000 -v outer-shared-data:/path/in/container my-docker
多個(gè)鏡像組合
使用docker compose
,先配置docker-compose.yml
腺阳,build
是自己編譯馍盟,image
是下載的:
version: "2"
services:
web:
build: .
ports:
- "80:5000"
db:
image: "mysql"
environment:
MYSQL_DATABASE: my-db
MYSQL_ROOT_PASSWORD: my-secret
volumes:
- outer-shared-data:/var/lib/mysql
volumes:
outer-shared-data:
然后運(yùn)行:
docker compose up -d # 可能需要安裝命令, 與yaml一個(gè)目錄
docker compose down # 停止并刪除
其它
docker system df
docker image prune # 刪除<none>鏡像