docker 安装 sqlserver中的坑点

本文记录了在Windows 10环境下使用Docker部署SQL Server 2019时遇到的持久化存储错误及解决方案。通过多次调试,发现挂载目录必须为根目录才能避免创建系统目录权限错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个博文主要是记录坑点, 安装步骤可以参考官方文档, 非常详细

参考文档

这些文件 都是官方文档, 非常详细的记录了docker安装的每一个步骤

sqlserver 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]# 

<think>嗯,用户想了解中高级Java开发人员的电脑配置。首先,我需要确定用户的具体需求。中高级开发人员可能会处理复杂的项目,比如大型企业应用、微服务架构、大数据处理或者云原生开发,这些对硬件的要求可能更高。 接下来,我应该考虑不同的操作系统选择。Windows、macOS和Linux各有优缺。比如,macOS对Docker的支持可能不如Linux,但开发体验较好。而Linux在服务器端开发中更常见,适合需要频繁使用命令行和容器化工具的情况。 然后,硬件配置是关键。CPU方面,Java项目编译和运行可能需要多核处理,所以i7或Ryzen 7以上的处理器会更合适。内存方面,16GB可能勉强够用,但32GB会更流畅,尤其是在运行多个虚拟机或容器时。存储方面,SSD是必须的,NVMe的读写速度更快,能提升编译和启动速度。 开发工具方面,IDE如IntelliJ IDEA对资源消耗较大,特别是处理大型项目时,足够的内存和快速的存储能显著提高效率。此外,Docker和Kubernetes的使用也需要较多的系统资源,尤其是在本地运行多个容器时。 网络方面,稳定的连接很重要,特别是需要频繁拉取依赖或与远程服务器交互的情况。外设方面,多显示器能提升效率,机械键盘和高质量鼠标也能提高舒适度。 可能用户没有明确提到的需求包括是否需要经常进行本地测试,比如运行多个服务实例或数据库,这会影响内存和CPU的选择。另外,是否需要进行移动开发或机器学习,这些可能需要更强的GPU,但通常Java开发对GPU要求不高,除非涉及相关领域。 最后,预算也是一个因素。提供不同价位的配置方案会更有帮助,让用户根据自己的情况选择。还要考虑未来的扩展性,比如是否容易升级内存或存储。</think>中高级Java开发人员的电脑配置需兼顾开发效率、多任务处理和长期使用稳定性。以下为推荐配置方案及注意事项: ### 一、操作系统选择 1. **Windows**:兼容性最强(适合需用Visual Studio、SQL Server等场景) 2. **macOS**:Unix环境+优秀生态(适合全栈/移动端开发) 3. **Linux**:服务器开发首选(推荐Ubuntu LTS/CentOS) > 建议双系统或虚拟机方案:$Windows/Linux + WSL2$ 或 $macOS + Parallels$ ### 二、核心硬件配置 | 组件 | 最低要求 | 推荐配置 | 性能影响场景 | |------------|-----------------------|-----------------------|------------------------------| | CPU | i5/R5 6核12线程 | i7/R7 8核16线程 | 项目编译、JVM调优、Docker集群 | | 内存 | 16GB DDR4 | 32GB DDR4 3200MHz+ | 微服务联调、IDEA多开、Redis | | 存储 | 512GB SSD | 1TB NVMe SSD + 2TB HDD| 本地Maven仓库、Docker镜像存储 | | 显卡 | 集成显卡 | RTX 3060(CUDA加速) | 大数据计算、本地AI模型调试 | | 显示器 | 24寸1080p | 双27寸2K/带鱼屏 | 多窗口并排、日志监控 | ### 三、开发环境专项优化 1. **JVM调优基础**: ```bash # 在~/.bashrc或环境变量中设置 export JAVA_OPTS="-Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200" ``` 2. **Docker配置建议**: - `/var/lib/docker` 挂载到独立SSD分区 - 分配至少4核CPU/8GB内存给Docker Engine - 启用BuildKit加速镜像构建:`export DOCKER_BUILDKIT=1` 3. **IDE优化方案**(以IntelliJ IDEA为例): ```ini # idea.vmoptions配置示例 -Xms2048m -Xmx8192m -XX:ReservedCodeCacheSize=1024m -XX:+UseZGC ``` ### 四、网络与外设 1. **网络要求**: - 千兆有线网卡(优先使用网线连接) - Wi-Fi 6(802.11ax)备用方案 - 配置本地Hosts解决依赖下载问题: ```hosts 199.232.28.133 raw.githubusercontent.com ``` 2. **外设套装**: - 机械键盘(推荐茶轴/红轴) - 支持宏定义的鼠标(如Logitech MX系列) - USB-C扩展坞(至少支持双4K输出) ### 五、成本控制方案 | 预算范围 | CPU | 内存 | 存储方案 | 适用场景 | |-----------|-----------------|--------|----------------------|----------------------| | ¥6000-8000 | i5-12400F | 16GB | 512GB SSD | 单体应用开发 | | ¥8000-12000| R7 5800H | 32GB | 1TB NVMe + 1TB HDD | 微服务开发 | | ¥12000+ | i9-12900H | 64GB | 2TB NVMe RAID0 | 大数据/云原生开发 | ### 六、避指南 1. 避免使用低功耗CPU(如带U后缀的移动处理器) 2. 警惕"开发本"营销噱头,重关注实际性能释放 3. 定期清理本地Maven仓库:`mvn dependency:purge-local-repository` 4. 使用JDK Mission Control监控资源占用: ```bash jcmd <pid> JFR.start duration=60s filename=profile.jfr ``` > 最终建议:开发机应比生产环境高1个配置等级,本地能模拟的压力场景越多,上线的风险就越小。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值