Win10 家庭版 2004 版本以后拥有了WSL2 可以使用Docker了。
在我这里无论是Win10 Home 还是 Win10 Pro,Docker都与VMware存在冲突。
结果就是安装完Docker准备运行的时候会遇到:
Hardware assisted virtualization and data execution protection must be enabled in the BIOS. See https://docs.docker.com/docker-for-windows/troubleshoot/#virtualization-must-be-enabled
这个问题就是之前安装完VMware解决了它的问题以后给docker的安装造成了问题。
解决方法也很简单,就是在 “Windows 功能” 中,关闭“虚拟机平台”(virtual machine platform),此时电脑会重启。重启以后再开启“虚拟机平台”,又会重启,之后再开启Docker就没有这个问题了。
个人觉得是重装了一下虚拟机的底层支持。因为我之前使用VMware的时候遇到问题,记得通过命令行修改过一些设置。
$ docker run -tid -p 8080:8080 --name museum1 museum:0.1 /bin/bash
参数说明:
主机(宿主)端口:容器端口
$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
各个参数说明:
$ docker stop [CONTAINER ID]或[CONTAINER NAME]
$ docker exec -it [CONTAINER ID] /bin/bash
用exec命令的好处是,在从container中使用 exit
命令退出时,容器不会停止运行。
如果不进容器,在宿主机上操作也可以用docker命令实现宿主机和容器内部的文件交互,以下是在宿主机操作
把宿主机上的文件复制到docker容器内部
$ docker cp [/path/filename] [CONTAINER ID]:[/path/filename]
也可以把docker容器内部的文件复制到本地
$ docker cp [CONTAINER ID]:[/path/filename] [/path/filename]
假设当前已经得到一个Ubuntu的镜像
$ docker run -tid -p 2022:22 --name xxxx ubuntu:20.04 /bin/bash
$ apt update
$ apt upgrade
$ apt install vim
$ apt install openssh-server
想必到这里docker的虚拟系统中的root账户还没有密码吧
$ passwd
$ vim /etc/ssh/sshd_config
注释这一行PermitRootLogin prohibit-password 添加一行PermitRootLogin yes
# PermitRootLogin prohibit-password
PermitRootLogin yes
保存退出
$ /etc/init.d/ssh restart
$ ssh root@127.0.0.1 -p 2022
看到如下结果即表示连接成功:
The authenticity of host '[127.0.0.1]:2022 ([127.0.0.1]:2022)' can't be established.
ECDSA key fingerprint is SHA256:rK0B/Ord927tKmkP23Ql9pGfRq1yJ+CAFpMf+OFokC8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?