Skip to content
60.Docker»60.CNB下的Docker应用»LV035-存储管理应用实例.md

应用实例

一、使用 Volume 部署 MySQL 数据库

我们将通过一个 MySQL 数据库的例子来演示如何使用 Volume 持久化数据。

1. 创建并管理 Volume

shell
# 创建一个命名卷
docker volume create mysql_data

# 查看卷信息
docker volume inspect mysql_data

# 列出所有卷
docker volume ls

2. 使用 Volume 运行 MySQL

shell
# 运行 MySQL 容器并挂载卷
docker run -d \
  --name mysql_db \
  -e MYSQL_ROOT_PASSWORD=mysecret \
  -v mysql_data:/var/lib/mysql \
  mysql:8.0

# 进入容器创建测试数据
docker exec -it mysql_db mysql -uroot -pmysecret -h127.0.0.1

# 在 MySQL 中创建测试数据
mysql> CREATE DATABASE test_db;
mysql> USE test_db;
mysql> CREATE TABLE users (id INT, name VARCHAR(50));
mysql> INSERT INTO users VALUES (1, 'John Doe');
mysql> SHOW TABLES;
mysql> SELECT * FROM users;
mysql> exit

3. 验证数据持久化

shell
# 删除原容器
docker rm -f mysql_db

# 使用同一个卷启动新容器
docker run -d \
  --name mysql_db2 \
  -e MYSQL_ROOT_PASSWORD=mysecret \
  -v mysql_data:/var/lib/mysql \
  mysql:8.0

# 验证数据是否存在
docker exec -it mysql_db2 \
   mysql -uroot -pmysecret -e "USE test_db; SELECT * FROM users;"

二、使用 Bind Mounts 运行 Jupyter Notebook

在这个案例中,我们将演示如何使用 Bind Mounts 来运行 Jupyter Notebook。 这个案例很好地展示了 Bind Mounts 在处理 jupiter 数据文件时的优势:

笔记文件存储在代码仓库中,需要使用的时候,可以直接在云原生开发环境中使用 docker run 命令来运行 jupyter 容器, 使用 Bind Mounts 可以直接挂载代码仓库中的笔记文件,这样就可以直接在 jupyter 中使用笔记文件了。

1. 构建 Jupyter Notebook 镜像

先构建一个 Jupyter Notebook 镜像:Dockerfile

shell
cd /workspace/tutorial-samples/10-storage/jupyter
docker build -t jupyter-notebook .

2. 运行 Jupyter Notebook 容器

shell
# 查看本地的 ipynb 文件是否存在
ls -l notebooks

# 运行 jupiter notebook 容器
docker run \
    --name jupyter-notebook \
    -p 8888:8888 \
    -it -d \
    -v $(pwd)/notebooks:/notebooks \
    jupyter-notebook

# 查看容器状态
docker ps
docker logs jupyter-notebook

我们使用了 -p 参数来将容器内的 8888 端口映射到宿主机的 8888 端口,在 cnb 上我们可以通过添加一个端口映射来实现外网访问。

3. 使用 jupiter notebook

  • 在 jupyter notebook 中修改笔记文件会反映到代码仓库中.
  • 在代码仓库中修改笔记文件会反映到 jupyter notebook 中.

莫道桑榆晚 为霞尚满天.