Back

docker - windows下使用docker

发布时间: 2022-02-09 02:58:00

先说结论: docker在windows下,还是跟Linux一样的。

cmd中的内容都是一样。
docker windows GUI则是一个怪胎。忘了它吧。
没有GUI,我们linux下面一样使用docker。
唯一不同的地方在于,运行docker-compose命令之前,我们需要先启动docker desktop (待确定)

安装 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 提示不运行,怎么办? (答案见下面:)

error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.35/info: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.

这个情况需要我们“先打开 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 一下试试

Back