docker - windows下使用docker
访问量: 986
先说结论: docker在windows下,还是跟Linux一样的。
安装 docker 与 docker composite
1.下载 docker for windows, 安装
2. 重启
3. 打开docker desktop, 会让我们下载这样的一个东西:wsl: windows内置的linux虚拟机
点击上方的链接,来到了这里:
https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
下载后安装,然后打开 power shell (我也不知道啥时候安装的)
wsl --set-default-version 2
4. 回到docker desktop, 按一下 按钮(表示我已经安装了wsl 的按钮)
5. 等待,就可以了。如果一直卡在docker starting的页面,就把windows 关机再启动(注意不是重启,是先“关机”,再 启动)
https://stackoverflow.com/questions/43041331/docker-forever-in-docker-is-starting-at-windows-task
使用
asdf
docker ps 提示不运行,怎么办? (答案见下面:)
这个情况需要我们“先打开 docker desktop”, 然后才可以在cmd中 docker ps
开启 docker desktop 报错,怎么办? ( 事实再次证明百度对于中文处理NB )
参考: https://www.lyile.cn/articles/2021/06/17/1623918094777.html
Failed to set version to docker-desktop: exit code: -1 stdout: �S��v�[a�{|�W N/ec\Ջ�v�d\O0```
1. 记得打开 hyper-v:
https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
Enable Hyper-V using PowerShell
Open a PowerShell console as Administrator.
Run the following command:
PowerShell
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
2. 遇到wsl无法启动的问题:
1. (注意都是管理员打开控制台,cmd, power shell 等)
https://github.com/microsoft/WSL/issues/4177#issuecomment-597736482
We have a tool that can make this call:
www.proxifier.com/tmp/Test20200228/NoLsp.exe
Please just run as admin with the full path to wsl.exe as the parameter:
NoLsp.exe c:\windows\system32\wsl.exe
2. 然后记得 netsh winsock reset
(run as admin, in cmd line) $ netsh winsock reset
3. 重启,问题即可解决
如何运行docker-compose?
1. 在命令行中, 修改对应文件 docker-compose.yml
2. 在cmd中, docker-compose up
3. 在docker desktop中就可以看到了。(会自动出现)
一定不要开启 setting -> general -> expose daemon on tcp://...2375 without TLS
它会大量消耗CPU, 大概20% 左右
对于数据库,如何使用 volume?
参考:
https://stackoverflow.com/questions/41334021/volume-binding-using-docker-compose-on-windows
- /g/workspace/docker_folder/mysql5.7:/var/lib/mysql
version: '3' services: mysql: container_name: "mysql-5.7" image: mysql:5.7 volumes: - /g/workspace/docker_folder/mysql5.7:/var/lib/mysql command: 'tail -F /dev/null' ports: - "3306:3306" stdin_open: true tty: true environment: - MYSQL_ROOT_PASSWORD=666666
host ip
http.docker.internal
就是主机地址
从docker中ping 一下试试