这个博文主要是记录坑点, 安装步骤可以参考官方文档, 非常详细
参考文档
这些文件 都是官方文档, 非常详细的记录了docker安装的每一个步骤
sqlserver linux docker 部署 官方文档地址参考1
sqlserver linux docker 持久化部署 官方文档地址参考2
坑点记录
环境: win10, docker, bash(调试不成功), powershell(调试成功)
- 也就是说, 在win系统, 尽可能使用powershell吧
持久化存储时报错
- 使用的命令如下:
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Cib_r2020' --name 'mssql' -p 1401:1433 -v /msssql_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest
- 报错内容如下:
SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created. Errno [13]
这片文章很好的解析了这个问题, 文章链接, 尝试使用了多种组合, 但最终还是没有解决问题.
- 经过仔细查看官方的两个文档, 解决了问题
使用命令如下:
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Cib_r2020' --name 'mssql' -p 1401:1433 -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest
- 坑点: 挂载目录要为根目录才可以, 这…, 也许是我还没有找到可以正确挂载非根目录的方法.
- 实际挂载的目录为:
/var/lib/docker/volumes/sql1data
, 这也是坑点
调试过程
[root@bi home]# sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Cib_r2020' --name 'mssql' -p 1401:1433 -v mssqldata:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest
75aef70d73fefa41706e9086fc32c819191f4c666c7ede0dd1c5e217a44f5a10
[root@bi home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75aef70d73fe mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 5 seconds ago Up 3 seconds 0.0.0.0:1401->1433/tcp mssql
[root@bi home]# sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Cib_r2020' --name 'mssql2' -p 1402:1433 -v /home/mssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest
9e666315a32c787f8a66ae37af62f275e1a403dacd73605650a76e15c85bde4c
[root@bi home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e666315a32c mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 4 seconds ago Exited (1) 3 seconds ago mssql2
75aef70d73fe mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 54 seconds ago Up 52 seconds 0.0.0.0:1401->1433/tcp mssql
[root@bi home]# pwd
/home
[root@bi home]# mkdir mssql
mkdir: cannot create directory ‘mssql’: File exists
[root@bi home]# ll
total 0
drwxr-xr-x. 2 root root 6 Sep 10 17:13 mssql
drwxr-xr-x. 2 root root 6 Sep 10 17:03 project
[root@bi home]# chmod 777 /home/mssql/
[root@bi home]# ll
total 0
drwxrwxrwx. 2 root root 6 Sep 10 17:13 mssql
drwxr-xr-x. 2 root root 6 Sep 10 17:03 project
[root@bi home]# docker rm -f mssql2
mssql2
[root@bi home]# sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Cib_r2020' --name 'mssql2' -p 1402:1433 -v /home/mssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest
b6c86e0690b05b3ef49838c9bae126793aeb1c17db53425c4c54f210d0fe3d45
[root@bi home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6c86e0690b0 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 5 seconds ago Exited (1) 4 seconds ago mssql2
75aef70d73fe mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 3 minutes ago Up 3 minutes 0.0.0.0:1401->1433/tcp mssql
[root@bi home]# // 现在尝试加入 -u 0:0 参数试下
-bash: //: Is a directory
[root@bi home]# sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Cib_r2020' --name 'mssql2' -p 1402:1433 -v /home/mssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest -u 0:0
/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/mssql2" is already in use by container b6c86e0690b05b3ef49838c9bae126793aeb1c17db53425c4c54f210d0fe3d45. You have to remove (or rename) that container to be able to reuse that name..
See '/usr/bin/docker-current run --help'.
[root@bi home]# docker rm -f mssql2
mssql2
[root@bi home]# sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Cib_r2020' --name 'mssql2' -p 1402:1433 -v /home/mssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest -u 0:0
0d0aaca0d4bc302e9f24c4cfd1a9480d8ed8dcff2330014a48cfdcf9b1761e72
[root@bi home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0d0aaca0d4bc mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 3 seconds ago Exited (2) 3 seconds ago mssql2
75aef70d73fe mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 4 minutes ago Up 4 minutes 0.0.0.0:1401->1433/tcp mssql
[root@bi home]# 看来还是不行
-bash: 看来还是不行: command not found
[root@bi home]# chmod -R g=u /home/mssql/
[root@bi home]# ll
total 0
drwxrwxrwx. 2 root root 6 Sep 10 17:13 mssql
drwxr-xr-x. 2 root root 6 Sep 10 17:03 project
[root@bi home]# docker rm -f mssql2
mssql2
[root@bi home]# sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Cib_r2020' --name 'mssql2' -p 1402:1433 -v /home/mssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest -u 0:0
de58feb6496f20355563fba4710c3e46d70d62b48438a1404ea8d754dc225659
[root@bi home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de58feb6496f mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 8 seconds ago Exited (2) 6 seconds ago mssql2
75aef70d73fe mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 6 minutes ago Up 6 minutes 0.0.0.0:1401->1433/tcp mssql
[root@bi home]# 这也不行
-bash: 这也不行: command not found
[root@bi home]# chown -r 10001:0 /home/mssql/
chown: invalid option -- 'r'
Try 'chown --help' for more information.
[root@bi home]# chown -R 10001:0 /home/mssql/
[root@bi home]# ll
total 0
drwxrwxrwx. 2 10001 root 6 Sep 10 17:13 mssql
drwxr-xr-x. 2 root root 6 Sep 10 17:03 project
[root@bi home]# docker rm -f mssql2
mssql2
[root@bi home]# sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Cib_r2020' --name 'mssql2' -p 1402:1433 -v /home/mssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest -u 0:0
cb712e1fb080aa16fdc002443adcdd20567236a1eaff194a19061e4a54e8863a
[root@bi home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb712e1fb080 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 4 seconds ago Exited (2) 3 seconds ago mssql2
75aef70d73fe mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 8 minutes ago Up 8 minutes 0.0.0.0:1401->1433/tcp mssql
[root@bi home]# docker logs mssql2
SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
/opt/mssql/bin/permissions_check.sh: line 59: exec: -u: invalid option
exec: usage: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
[root@bi home]# docker rm -f mssql2
mssql2
[root@bi home]# sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Cib_r2020' --name 'mssql2' -p 1402:1433 -v /home/mssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest
9ec77540b767692a95e49caa95048549f6695b603130396e1e5ca3d37a41423a
[root@bi home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ec77540b767 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 5 seconds ago Exited (1) 4 seconds ago mssql2
75aef70d73fe mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/pe..." 9 minutes ago Up 9 minutes 0.0.0.0:1401->1433/tcp mssql
[root@bi home]# docker logs mssql2
SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created. Errno [13]
[root@bi home]#