Run jobs in a Docker
Last updated
Last updated
如果我们需要在安装着windows或者mac操作系统的机器上获得linux的运行环境,一个常见的做法是安装linux的虚拟机。Docker相当于是一种轻量级的虚拟机。
除了可以当作虚拟机来使用,Docker可以对软件依赖等进行很好的封装,可以极大的提高运行环境的可移植性。所以如果您的机器原本就安装着linux的发行版,也可以通过使用我们提供的docker _image_来节约一些安装软件依赖的时间。
镜像(image)和容器(container)是docker的两个比较重要的概念。image可以理解成是一个用于创建虚拟机的模板,而container相当于是一个根据image创建出的虚拟机。这二者的关系有点类似于面向对象编程中类(class)和对象(object)的关系。Docker Hub上维护了很多别人配置好的image (如 Ubuntu Image),我们可以直接拿来使用。大家如果在自己的机器上安装好了docker软件,下面是一个快捷的获取和使用Linux(Ubuntu版)虚拟机的方法(注意保持联网):
我们也可以手工加载我们自己配置的docker _image ,_如下图所示,如果我们自己有一个 image (可以打包成.tar.gz结尾的一个压缩包,如 bioinfo_tsinghua.docker.tar.gz),大家在自己的机器上安装了docker软件后,就可以加载这个 image,从中创建出docker container,利用docker _container _ 中的运行环境进行后续的学习。
如果大家希望进一步了解docker的优势,以及它和传统虚拟机的区别,可进一步参考为什么使用Docker。
docker程序在Mac上的安装很简单,可以通过Apple Store安装,或者直接从https://docs.docker.com/desktop/install/mac-install/下载 Docker安装程序后进行安装。
我们可以如上面的简介里面所描述的,很快捷地从Docker Hub中获取一些别人配置好的 _image。_除此之外,我们也可以手工加载。
下面介绍如何手工加载我们为本课程配置的 image。
从 Teaching Dockers 里面下载docker _image_文件 (如 bioinfo_PartI-PartII-PartIII1-3.tar.gz) 到本地
双击运行docker程序,然后在“/Applications/Utilities” 中打开 "Terminal" 软件
以下命令默认都是在“Terminal”中运行。“#”以及"#"之后的内容是注释语句,实际操作中不用输入
假设我们这里将打包好的docker _image_下载到了桌面上~/Desktop/bioinfo_PartI-PartII-PartIII1-3.tar.gz
。如果下载到了其他位置,请换成相应的路径
经过这一步操作后,输入docker images
将显示导入的_image_信息:
docker run
用于从 image 创建 (run) 一个 container。
这里我们新建了一个名为bioinfo_tsinghua
的_container_,重要参数说明如下:
-dt --restart unless-stopped
: 设置该_container_能一直在后台保持运行状态
-v ~/Desktop/bioinfo_tsinghua_share:/home/test/share
: 将宿主机的目录~/Desktop/bioinfo_tsinghua_share
作为数据卷挂载到_container的/home/test/share
目录下。docker通过数据卷(volume)实现宿主机和container之间的文件同步。我们在container_中修改/home/test/share
目录下的内容,就相当于修改宿主机~/Desktop/bioinfo_tsinghua_share
目录下的内容。
到此为止,我们已经成功地安装了Docker程序,成功地载入一个_image,创建container_,并使其在后台运行。
进入一个_container_ (例如上节中开启的_container:_bioinfo_tsinghua),只需执行如下3个步骤:
a) 运行_container_: 在Terminal中输入 docker exec -it bioinfo_tsinghua bash
。
docker exec
用于在一个正在运行的_container_中执行命令
-it
: 交互(interactive, -i)式的运行_container_中的bash命令,并在terminal中显示输入输出(-t)
b) 使用_container_提供的运行环境,如下图
c) 退出_container_:exit
注:每次使用_container_时要检查docker程序是否运行了,否则请双击docker程序图标运行docker程序
docker对windows的系统版本有一定要求,请参考https://docs.docker.com/desktop/install/windows-install/。如果版本过低,建议更新操作系统。可从清华info的软件资源获取。
从 官网 下载 Docker安装包,并进行安装。
运行如下命令并重启电脑:
如果您的机器上安装的是WSL1,则需要进行升级,否则可能出现报错。可以按照下面的步骤进行升级。
(1) enable the Virtual Machine Platform optional feature
(2) Download WSL2 Linux kernel update package for x64 machines
(3) Set WSL 2 as your default version
更多升级WSL2的资料,可参考https://docs.microsoft.com/zh-cn/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package
安装完成后,选择Enable & Restart
以启用Hyper-V
在power shell中输入以下命令,检查 Docker 程序是否成功安装。
我们可以如上面的简介里面所描述的,很快捷地从Docker Hub中获取一些别人配置好的 _image。_除此之外,我们也可以手工加载。
下面介绍如何手工加载我们为本课程配置的 image。
从 Teaching Dockers 里面下载docker image文件**:** bioinfo_PartI-PartII-PartIII1-3.tar.gz到本地,并且通过在 Power shell 中输入以下命令导入将_image_导入到 Docker 中。
需要将路径C:\Users\xxx\Desktop\bioinfo_PartI-PartII-PartIII1-3.tar.gz
换成打包的docker _image_的实际路径,建议使用绝对路径。
注意windows系统的路径中使用的是反斜杠。
在宿主机上新建一个文件夹用于和docker container 实现文件共享。这里假设我们在桌面上新建了一个名为bioinfo_tsinghua_share的文件夹
然后,用docker run新建一个名为 bioinfo_tsinghua
的 container。
请把C:\Users\xxx\Desktop\bioinfo_tsinghua_share换成你刚刚新建的共享目录在你的宿主机上的绝对路径
这里的参数含义和在mac上基本一致:
-dt --restart unless-stopped
: 设置该_container_能一直在后台保持运行状态
-v C:\Users\xxx\Desktop\bioinfo_tsinghua_share:/home/test/share
: 将宿主机的目录C:\Users\xxx\Desktop\bioinfo_tsinghua_share
作为数据卷挂载到_container的/home/test/share
目录。我们在container_中修改/home/test/share
目录下的内容,就相当于修改宿主机~/Desktop/bioinfo_tsinghua_share
目录下的内容。
在 Windows 10 Pro 上,Docker中的/home/test/share
目录归root所有,所以要将其改为归test用户所有:
执行这一步时,系统会弹出以下提示,我们选择 Share it
如果_container创建成功,之后每次只需要启动Docker程序,然后在 Power shell 中输入以下命令即可进入container_:
docker exec
用于在一个正在运行的_container_中执行命令
-it
: 交互(interactive, -i)式的运行_container_中的bash命令,并在terminal中显示输入输出(-t)
注:如果power shell在这一步出现了卡死的情况,可以尝试使用windows的其他终端,如cmd等。
之后即可运行_container_中提供的各种Linux命令;
输入 exit
即可回到 Power shell。
注:每次使用_container_时要检查docker程序是否运行了,否则请双击docker程序图标运行docker程序
在不同操作系统中,均可在相应的终端(terminal或power shell)中运行以下命令,检查 Docker 是否正常安装:
如果你误删的某些软件依赖,以至需要的程序无法正常使用,可以删除该_container_:
Tips:之前提到过
bioinfo_tsinghua
一直保持运行状态,所以我们这里用-f
来强制(force)删除。
再用docker run
新建一个干净的_container_。
打包的_image_加载后就不再需要,可以直接删除
如果需要删除docker已经加载的_image_,可以使用以下命令:
打开docker的控制菜单,通过 Preferences 选择卡来进行参数修改。
建议 CPUs 设置为4, 内存为7G, Swap为2G。
建议存储空间为90G。
这里推荐阅读两篇Docker安装教程,分别是《macOS 安装 Docker》和《Windows 10 PC 安装 Docker CE》,来自于《Docker——从入门到实践》书,这本书对Docker进行了深入浅出的讲解,对于初学者理解和学习docker技术有所帮助。另外,网上也有很多docker教程,有深入学习兴趣的同学可以自行了解。
docker的运行需要依赖WSL2,因此需要启用WSL。在开始菜单搜索 PowerShall, 并启动。