确实有些坑,本来之前坑都踩过了,但是时间一久就忘记了,这次换电脑又都踩了一遍。
几个要点(坑):
1.docker安装时默认就好。然后C盘必须设置共享,否则后面做文件夹挂载时总是报错。
2.预设SA密码时,别再搞SASASA这种了,必须使用强密码,例如 Abc!@#123456。
3.宿主机使用MSSM链接数据库时,目前我没有改端口使用1433:1433,则要写 "localhost,1433",而不是冒号。
4.做数据库存储目录共享时,注意宿主机(WIN)目录从盘符开始,:使用/代替,例如: /d/data=d:\data
创建mssql2017容器命令
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Abc!@#123456' -p 1433:1433 -v /d/sql.data/docker:/var/opt/mssql/data --name mssql2017 -d microsoft/mssql-server-linux:2017-latest
宿主机可以指安装 MSSM就好了,完整的数据库似乎就不需要了。
如果使用的是windows container
则需要拉取 mssql-server-windows-express 使用developer也可以
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Sa111111' -p 1433:1433 -v c:\sqldb:c:\'program files'\'microsoft sql server'\mssql14.sqlexpress\mssql\data1 --name mssql -d microsoft/mssql-server-windows-express
注意:路径的写法与linux容器的方式不同,空格使用引号括起来,以及,不能映射原始数据库的文件夹data,否则会一直提示失败,原因没具体查,随便建个文件夹就好了,比如data。
如果出现the process cannot access the file because it is being used by another process
考虑是主机端口1433被占用,换成14330即可。
docker run WEB时,如果用--network就不需要写-p了,因为主机暴露的端口和容器的就一样了。
docker run ` -d `
--link mssql01 ` 官方不建议使用link
--name siteserver01 `
-v C:/Users/Administrator/Desktop/Web/SiteServer01:C:/inetpub/wwwroot `
-p 80:80 `
--restart=always `
microsoft/aspnet
来源:oschina
链接:https://my.oschina.net/u/4418120/blog/3576077