目录
- [一. 使用普通docker命令启动容器](#一. 使用普通docker命令启动容器)
- [二. 使用`docker compose`](#二. 使用
docker compose) -
- [2.1 创建`docker-compose.yml` 配置文件](#2.1 创建
docker-compose.yml配置文件) - [2.2 `docker compose build` 构建镜像](#2.2
docker compose build构建镜像) - [3.4 `docker compose run` 启动一次性容器](#3.4
docker compose run启动一次性容器) - [3.5 `docker compose up` 运行容器](#3.5
docker compose up运行容器)
- [2.1 创建`docker-compose.yml` 配置文件](#2.1 创建
一. 使用普通docker命令启动容器
如果容器被销毁,容器中的数据也会一同消失,所以一般不会将数据存储在容器内部,而是通过挂载的方式将其存储在宿主机的指定位置中。
⏹将容器运行所需要的db.sqlite3文件,在容器启动时挂载
-v /主机路径文件:/容器路径文件这会让容器内部使用主机上的文件,从而让db.sqlite3的内容得以持久保存。-w /app设置容器内的工作目录是/app,这个要与你 Dockerfile 中 WORKDIR 设置一致(通常也是/app)
bash
docker run -it -p 8100:8000 \
-v $(pwd)/db.sqlite3:/app/db.sqlite3 \
-w /app \
helloworld-django

💦但是输入这么长的命令,非常繁琐,而且如果我们有多个需要部署多个容器,并且对这些容器的顺序有要求的话,每次手动输入非常容器出错。那么,有没有什么更好的办法?
二. 使用docker compose
2.1 创建docker-compose.yml 配置文件
- 将命令行中的配置命令,通过
yml文件的方式简化到配置文件中。
bash
apluser@FengYeHong-HP:helloworld-django$ ls -l
total 152
-rw-r--r-- 1 apluser apluser 131072 Jun 14 2025 db.sqlite3
-rw-r--r-- 1 apluser apluser 303 Mar 8 19:20 docker-compose.yml
-rw-r--r-- 1 apluser apluser 483 Jun 11 2025 Dockerfile
drwxr-xr-x 4 apluser apluser 4096 Jun 7 2025 hello
-rwxr-xr-x 1 apluser apluser 667 Jun 7 2025 manage.py
-rw-r--r-- 1 apluser apluser 16 Jun 7 2025 requirements.txt
drwxr-xr-x 3 apluser apluser 4096 Jun 7 2025 web_project
apluser@FengYeHong-HP:helloworld-django$
apluser@FengYeHong-HP:helloworld-django$ cat docker-compose.yml
services:
web:
image: helloworld-django:0.0.2
build:
context: .
dockerfile: Dockerfile
ports:
- "8100:8000"
volumes:
- /home/apluser/project/helloworld-django/db.sqlite3:/app/db.sqlite3
working_dir: /app
command: python manage.py runserver 0.0.0.0:8000
apluser@FengYeHong-HP:helloworld-django$
2.2 docker compose build 构建镜像

3.4 docker compose run 启动一次性容器
docker compose up:启动整个服务(长期运行)docker compose run:启动一个临时容器执行命令- 非常适合:
- 数据库迁移
- 管理命令
- debug
⏹docker compose run web python manage.py migrate
- 执行命令进行数据迁移
- 此处的
web应当和docker-compose.yml文件中的services对应的名称相同

💥需要注意的是
docker compose run会启动一个一次性容器,它不会被docker-compose up管理到。

3.5 docker compose up 运行容器
docker compose up --remove-orphans:--remove-orphans在启动的时候,删除被遗漏的容器
docker compose up -d- 在后台启动容器
⏹如下图所示,容器启动成功,页面也能正常访问。
