我正在关注此tutorial to run mssql in a docker。首先,用户提取图片
docker pull microsoft / mssql-server-linux
他在下面做了
导出DIR = / var / lib / mssql
sudo mkdir $ DIR
最后他跑了
docker run \
-d \
--name mssql \
-e'ACCEPT_EULA = Y'\
-e'SA_PASSWORD ='\\ -p 1433:1433 \
-v $ DIR:/ var / opt / mssql \
microsoft / mssql-server-linux
作者解释第二步如下
在主机上创建一个目录,该目录将存储容器中的数据,并将值保存在环境变量中以方便:
问:
作者的意思是什么,以及如果我们不创建目录
我尝试搜索下面的不同字词
但无法理解。有人可以说明这个
答案 0 :(得分:1)
所以这就是事情。请考虑以下代码
export DIR=/var/lib/mssql
sudo mkdir $DIR
我可以将其重写为
sudo mkdir /var/lib/mssql
但我还必须将我的RUN命令更改为
docker run \
-d \
--name mssql \
-e 'ACCEPT_EULA=Y' \
-e 'SA_PASSWORD=' \
-p 1433:1433 \
-v /var/lib/mysql:/var/opt/mssql \
microsoft/mssql-server-linux
现在,如果您更改目录,则必须更新两个位置。这就是为什么使用DIR。
如果您从泊坞窗运行中删除
-v /var/lib/mysql:/var/opt/mssql \
您的数据库的数据将存储在/var/opt/mssql
的容器内,并且数据仅在容器运行之前存在。下次重新启动容器时,数据库将为空。
这就是您将其映射到主机上的外部目录的原因。因此,当您重新启动容器或启动新容器时,该容器内的目录内容将可用,并且数据库将具有您所做的所有更改