下载镜像
docker pull ubuntu:18.04
docker run -it --rm ubuntu:18.04 bash # -it交互终端 --rm运行完了自动删除容器
docker image ls
docker image rm <IMAGE ID>/<REPO:TAG>
创建自己的镜像
编辑Dockerfile
,注释忽略:
FROM python:3.8-slim-buster
WORKDIR /my/workdir/path
# 第1个点上下文,第2个点是WORKDIR
COPY . .
# RUN为创建时执行,如果多条,就用 \换行&&
RUN "pip3 install -r requirements.txt"
# CMD为运行时执行
CMD ["python3", "app.py"]
编译运行
从当前目录下找Dockerfile
进行编译:
docker build -t my-app . # .代表上下文
运行:
docker run -p 80:5000 -d my-app
# 参数的顺序好像很重要,顺序不对有时候失败
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 # 清除所有停止的容器
挂载外部数据:
docker volume create outer-shared-data
# -d后台, -p指定将容器的5000暴露到宿主的80, -v挂载
docker run -dp 80:5000 -v outer-shared-data:/path/in/container my-docker
多个镜像组合
使用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:
然后运行:
docker compose up -d # 可能需要安装命令, 与yaml一个目录
docker compose down # 停止并删除
其它
docker system df
docker image prune # 删除<none>镜像