2.3.3 使用Docker
使用Docker之前,请一定先看看前面的《概念介绍》,了解Docker的镜像、容器的概念。
2.3.3.1 运行“Docker Desktop”
双击桌面“Docker Desktop”图标运行,如果一切正常,可以在任务栏看到以下图标:
如果上图中的鲸鱼图标一直在喷水,表示它还在启动中。启动完毕后,鲸鱼图标就不再喷水,你就可以使用Docker了。
2.3.3.2 设置Docker存储目录
2.3.3.3 使用MobaXterm打开命令行
这不是必须的。 可以在Windows命令行、PowerShell下执行各种Docker命令,但是这2个工具都太难用了,MobaXterm比它们好用100倍。 启动MobaXterm后,照下图操作新建一个Session:
执行完上述操作后,可以在MobaXterm左侧看到名为“Powershell”的按钮,双击它就可以进入命令行:
2.3.3.4 下载Ubuntu镜像
在MobaXterm中打开Powershell命令行,执行如下命令:
代码语言:javascript复制docker pull weidongshan/ubuntu-18.04:version1.0
以后可以执行以下命令查看这些镜像:
代码语言:javascript复制docker image ls
2.3.3.5 创建volume
volume用来保存我们的数据,在MobaXterm中打开Powershell命令行,执行如下命令。本命令只需要执行一次:
2.3.3.6 创建容器
这个命令只需要执行一次,在MobaXterm中打开Powershell命令行,执行如下命令。 注意:为了方便大家复制,这些命令写成了多行,把它们复制到记事本,合并成一行,注意空格:
代码语言:javascript复制docker run -h 100ask --name ubuntu
-p 1234:1234 -p 22:22 -p 2049:2049 -p 9999:9999
-it --privileged=true
--mount source=homedate,target=/home/book -w /home/book
--user book weidongshan/ubuntu-18.04:version1.0 bash
如下图所示:
这时,可以启动另一个Powershell命令行,执行以下命令查看容器:
代码语言:javascript复制docker ps // 查看“正在运行的容器”
docker ps -a // 查看“所有容器”
如下图:
2.3.3.7 运行、进入、退出、停止容器
如果你重启电脑,或是重启Docker,里面的容器都是“Exited”状态,表示它已经不再运行了,可以执行以下命令启动它:
代码语言:javascript复制docker start ubuntu
如果容器的状态是“Up”,表示它正在运行,可以执行以下命令停止它:
代码语言:javascript复制docker stop ubuntu
一个容器启动后,可以执行它里面的命令,使用以下命令进入容器,它的意思是执行ubuntu容器里的bash命令,i表示interactive(交互)、t表示tty(会打开一个交互终端):
代码语言:javascript复制docker exec -it ubuntu bash
在Ubuntu命令行中执行exit即可退出容器。
2.3.3.8 日常工作
假设你已经创建了容器,那么在日常工作中,你每天打开电脑后,你需要做的就是这个命令:
代码语言:javascript复制docker start ubuntu // 启动容器
docker exec -it ubuntu bash // 进入容器,开始工作,可以在多个命令行中执行这命令
在Ubuntu下,要先执行start 命令,它会启动SSH、NFS等服务
在Ubuntu下,执行exit退出容器
docker stop ubuntu // 停止容器,下班回家
如下图所示:
2.3.4 常见问题
2.3.4.1 安装问题
Windows 10教育版、家庭版无法安装Docker,请使用VMware吧。 大部分安装问题都是Hyper-V服务无法启动,请参考《2.3.2 安装Docker》里的1、2、3进行设置;如果还是无法安装,可以参考《2.3.2.5 可能需要升级Windows》。 注意:我曾经在Hyper-V上折腾了一天,网上各种方法可能有用也可能无用,我是升级系统才解决的。
2.3.4.2 网络问题
如果Windows无法远程登录Ubuntu,使用Filezilla无法连接Ubuntu、开发板无法通过NFS挂载Ubuntu,那么很可能是防火墙的问题,或是端口被占用了。 端口被占用时,很可能是VMware的NAT服务,可以如下关闭: