Comment on page
1.1.Docker
- 如果我们需要在安装着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版)虚拟机的方法(注意保持联网):
# A Quick Start in Terminal after you installed Docker software in your computer:
docker pull ubuntu # download an image of ubuntu, you can also specify a version tag (ubuntu is equivalent to ubuntu:latest)
docker run -i -t ubuntu # run (create) a container of ubuntu, same as docker run -i -t ubuntu /bin/bash
exit # exit your container
- 我们也可以手工加载我们自己配置的docker _image ,_如下图所示,如果我们自己有一个 image (可以打包成.tar.gz结尾的一个压缩包,如 bioinfo_tsinghua.docker.tar.gz),大家在自己的机器上安装了docker软件后,就可以加载这个 image,从中创建出docker container,利用docker _container _ 中的运行环境进行后续的学习。

docker程序在Mac上的安装很简单,可以通过Apple Store安装,或者直接从https://docs.docker.com/desktop/install/mac-install/下载 Docker安装程序后进行安装。
我们可以如上面的简介里面所描述的,很快捷地从Docker Hub中获取一些别人配置好的 _image。_除此之外,我们也可以手工加载。
下面介绍如何手工加载我们为本课程配置的 image。
- 双击运行docker程序,然后在“/Applications/Utilities” 中打开 "Terminal" 软件
- 以下命令默认都是在“Terminal”中运行。“#”以及"#"之后的内容是注释语句,实际操作中不用输入
- 假设我们这里将打包好的docker _image_下载到了桌面上
~/Desktop/bioinfo_PartI-PartII-PartIII1-3.tar.gz
。如果下载到了其他位置,请换成相应的路径
#load the image
docker load -i ~/Desktop/bioinfo_PartI-PartII-PartIII1-3.tar.gz
- 经过这一步操作后,输入
docker images
将显示导入的_image_信息:
REPOSITORY TAG IMAGE ID CREATED SIZE
xfliu1995/bioinfo_tsinghua 2 cc2dc08c705b 11 months ago 2.84GB
docker run
用于从 image 创建 (run) 一个 container。mkdir ~/Desktop/bioinfo_tsinghua_share
docker run --name=bioinfo_tsinghua -dt -h bioinfo_docker --restart unless-stopped -v ~/Desktop/bioinfo_tsinghua_share:/home/test/share xfliu1995/bioinfo_tsinghua:2
这里我们新建了一个名为
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_提供的运行环境,如下图

docker
- c) 退出_container_:
exit
注:每次使用_container_时要检查docker程序是否运行了,否则请双击docker程序图标运行docker程序
docker对windows的系统版本有一定要求,请参考https://docs.docker.com/desktop/install/windows-install/。如果版本过低,建议更新操作系统。可从清华info的软件资源获取。
- docker的运行需要依赖WSL2,因此需要启用WSL。在开始菜单搜索 PowerShall, 并启动。
- 运行如下命令并重启电脑:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- 如果您的机器上安装的是WSL1,则需要进行升级,否则可能出现报错。可以按照下面的步骤进行升级。
(1) enable the Virtual Machine Platform optional feature
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
(3) Set WSL 2 as your default version
wsl --set-default-version 2
安装完成后,选择
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系统的路径中使用的是 反斜杠。
# 假设我们把image下载到了桌面上
docker load -i C:\Users\xxx\Desktop\bioinfo_PartI-PartII-PartIII1-3.tar.gz

- 在宿主机上新建一个文件夹用于和docker container 实现文件共享。这里假设我们在桌面上新建了一个名为bioinfo_tsinghua_share的文件夹
- 然后,用docker run新建一个名为
bioinfo_tsinghua
的 container。 - 请把C:\Users\xxx\Desktop\bioinfo_tsinghua_share换成你刚刚新建的共享目录在你的宿主机上的绝对路径
docker run --name=bioinfo_tsinghua -dt -h bioinfo_docker --restart unless-stopped -v C:\Users\xxx\Desktop\bioinfo_tsinghua_share:/home/test/share xfliu1995/bioinfo_tsinghua:2
- 这里的参数含义和在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用户所有:
#用root的身份(-u root)运行已在运行的container: bioinfo_tsinghua中的chown命令,把/home/test/share的所有权给test用户
docker exec -u root bioinfo_tsinghua chown -R test:test /home/test/share
执行这一步时,系统会弹出以下提示,我们选择
Share it

如果_container创建成功,之后每次只需要启动Docker程序,然后在 Power shell 中输入以下命令即可进入container_:
docker exec -it bioinfo_tsinghua bash
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 是否正常安装:
docker info
docker ps #查看当前正在运行的容器container
docker ps -a #查看所有容器container
docker images #查看所有镜像image
如果你误删的某些软件依赖,以至需要的程序无法正常使用,可以删除该_container_:
docker rm -f bioinfo_tsinghua
Tips:之前提到过bioinfo_tsinghua
一直保持运行状态,所以我们这里用-f
来强制(force)删除。
再用
docker run
新建一个干净的_container_。- 打包的_image_加载后就不再需要,可以直接删除
- 如果需要删除docker已经加载的_image_,可以使用以下命令:
docker rmi bioinfo_tsinghua # 删除image,慎重使用
打开docker的控制菜单,通过 Preferences 选择卡来进行参数修改。

建议 CPUs 设置为4, 内存为7G, Swap为2G。

建议存储空间为90G。

这里推荐阅读两篇Docker安装教程,分别是《macOS 安装 Docker》和《Windows 10 PC 安装 Docker CE》,来自于《Docker——从入门到实践》书,这本书对Docker进行了深入浅出的讲解,对于初学者 理解和学习docker技术有所帮助。另外,网上也有很多docker教程,有深入学习兴趣的同学可以自行了解。
Last modified 1mo ago