【docker】: docker如何打包后端代码(mysql+python)以及docker一些常用命令
如果该镜像有依赖的容器(即该镜像正在被某个容器使用),你可能会遇到删除失败的情况。如果你想删除多个镜像,可以将它们的。如果你想删除所有未使用的镜像,包括。,可以使用以下命令来删除该镜像。查看本地 Docker 镜像。作为空格分隔的列表传递给。
最新有个项目需要docker,随现学了一下,下面是一些常用命令:
需要编写两个文件:
Dockerfile
:
# 使用 Python 官方基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 将代码和依赖文件拷贝到容器
COPY . .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露 Flask 的默认端口
EXPOSE 5000
# 启动命令
CMD ["source", ".env"]
CMD ["python", "app.py"]
docker-compose.yml
:
version: '3.8'
services:
flask-app:
build: .
ports:
- "5000:5000"
environment:
- DB_USER=${DB_USER}
- DB_PASSWORD=${DB_PASSWORD}
- DB_HOST=${DB_HOST}
- DB_NAME=${DB_NAME}
- OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID}
- OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET}
depends_on:
- mysql
networks:
- backend
mysql:
image: mysql:8.0
container_name: mysql-container
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql # 持久化 MySQL 数据
- ./amps_backup.sql:/docker-entrypoint-initdb.d/amps_backup.sql # 复制备份文件到容器
ports:
- "3306:3306"
networks:
- backend
networks:
backend:
driver: bridge
volumes:
mysql_data:
driver: local # 持久化存储数据
需要注意的是这个里面有两个容器,所以单独的docker run不行,需要docker-compose来运行。
1. Install Docker Compose
sudo apt-get install docker-compose
2.set environment to .env
DB_USER={your mysql username}
DB_PASSWORD=2
DB_ROOT_PASSWORD=rootpassword
DB_HOST=mysql
DB_NAME=amps
OSS_ACCESS_KEY_ID={your access key}
OSS_ACCESS_KEY_SECRET={your secret key}
OSS_ENDPOINT=https://oss-cn-hangzhou.aliyuncs.com
OSS_REGION=cn-hangzhou
OSS_BUCKET_NAME=lscp-tools-data
pdb_folder_path=AMP-SEMiner/
3.Use Docker Compose
Start the service:
sudo docker-compose up --build
Stop service:
sudo docker-compose down
Other commands:
Execute the following command to delete useless resources in Docker, including unused images, containers, networks, and volumes:
sudo docker system prune -a
-
This command will delete the following:
-
stopped container
-
Image not used by any container
-
unused network
-
unused volume
到此为止,该项目就完成了,以下是常规的docker常用命令:
4. 上传镜像
# 1. 登录 Docker Hub
docker login
# 2. 查看构建的镜像
docker images
# 3. 标记镜像 (替换 <your-image-id> 为实际的镜像 ID)
docker tag <your-image-id> jackkuo666/amp_seminer_portal_backend:v1
或者直接文件夹下:
```bash
docker build -t jackkuo666/amp_seminer_portal_backend:v1 .
5. 推送镜像到 Docker Hub
docker push jackkuo666/amp_seminer_portal_backend:v1
拉取镜像:
docker pull jackkuo666/amp_seminer_portal_backend:v1
运行容器:
docker run -d --name amp-seminer-backend -p 5000:5000 jackkuo666/amp_seminer_portal_backend:v1
查看运行的容器:
docker ps -a
docker logs -f amp-seminer-backend
删除环境
docker ps -a
docker stop amp-seminer-backend
docker ps -a
docker rm amp-seminer-backend
删除镜像
docker images
docker rmi f75c9dc119c7
进入容器(可选):
docker exec -it amp-seminer-container /bin/bash
停止容器(可选):
docker stop amp-seminer-container
docker run -d --name amp-seminer-container -p 5000:5000 jackkuo/amp-seminer-portal:latest
查看本地 Docker 镜像
docker image ls
例如,查看容器 flask-app_1 的日志:
docker logs flask-app_1
如果你不确定容器的名称或 ID,可以使用以下命令列出所有正在运行的容器:
docker ps -a
ocker rm amp_seminer_portal_backend
6. 要删除本地 Docker 镜像,可以使用以下命令。
查看本地镜像
首先,查看本地 Docker 镜像:
docker images
这将显示一个镜像列表,类似于:
REPOSITORY TAG IMAGE ID CREATED SIZE
jackkuo666/amp_seminer_portal_backend v1 d9671def5ff3 2 hours ago 1.2GB
ubuntu latest 5e2d1c3e4f77 3 days ago 64MB
删除单个镜像
如果你知道镜像的 IMAGE ID 或 REPOSITORY:TAG,可以使用以下命令来删除该镜像。
- 使用 IMAGE ID 删除镜像:
docker rmi IMAGE_ID
例如:
docker rmi d9671def5ff3
- 使用 REPOSITORY:TAG 删除镜像:
docker rmi REPOSITORY:TAG
例如:
docker rmi jackkuo666/amp_seminer_portal_backend:v1
删除多个镜像
如果你想删除多个镜像,可以将它们的 IMAGE ID 或 REPOSITORY:TAG 作为空格分隔的列表传递给 docker rmi
:
docker rmi IMAGE_ID_1 IMAGE_ID_2 IMAGE_ID_3
例如:
docker rmi d9671def5ff3 5e2d1c3e4f77
强制删除镜像
如果该镜像有依赖的容器(即该镜像正在被某个容器使用),你可能会遇到删除失败的情况。你可以使用 -f
(强制删除)来删除镜像,即使有容器在使用它:
docker rmi -f IMAGE_ID
删除所有未使用的镜像
如果你想删除所有没有被任何容器使用的镜像(即 dangling 镜像),可以运行:
docker image prune
如果你想删除所有未使用的镜像,包括 dangling 镜像,可以使用 -a
选项:
docker image prune -a
删除所有镜像
如果你想删除所有本地镜像,可以运行:
docker rmi $(docker images -q)
注意
- 如果你尝试删除的镜像正在运行或者有容器依赖于它,你将需要先停止并删除相关容器,然后再删除镜像。
- 使用
docker rmi
命令时,确保该镜像没有正在运行的容器。可以使用docker ps -a
查看所有容器(包括已停止的容器)。
删除容器
如果需要删除相关容器,可以使用以下命令停止并删除容器:
- 停止容器:
docker stop container_id
- 删除容器:
docker rm container_id
7. 总结:一些常用命令
docker run -d --name amp_seminer_portal_backend -p 5000:5000 jackkuo666/amp_seminer_portal_backend:v2
docker ps -a
docker logs -f amp_seminer_portal_backend
docker stop amp_seminer_portal_backend
docker rm amp_seminer_portal_backend
如果你想删除所有未使用的镜像,包括 dangling 镜像,可以使用 -a 选项:
docker image prune -a

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)