1.1.Docker

0) Brief introduction

  • 如果我们需要在安装着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的优势,以及它和传统虚拟机的区别,可进一步参考为什么使用Docker

1) Install and Use Docker in Mac

1.0) Install Docker

docker程序在Mac上的安装很简单,可以通过Apple Store安装,或者直接从https://docs.docker.com/desktop/install/mac-install/下载 Docker安装程序后进行安装。

1.1) Load an image

我们可以如上面的简介里面所描述的,很快捷地从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。如果下载到了其他位置,请换成相应的路径

#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

1.2) Run a container from an image

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_,并使其在后台运行。

1.3) Use and exit the 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程序

2) Install and Use Docker in Windows

2.0) Install Docker

2.0.a) Update your Windows

docker对windows的系统版本有一定要求,请参考https://docs.docker.com/desktop/install/windows-install/。如果版本过低,建议更新操作系统。可从清华info的软件资源获取。

2.0.b) Download and install Docker

官网 下载 Docker安装包,并进行安装。

2.0.c) Setup Windows Subsystem for Linux (WSL)

  • 运行如下命令并重启电脑:

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

(2) Download WSL2 Linux kernel update package for x64 machines

(3) Set WSL 2 as your default version

wsl --set-default-version 2

更多升级WSL2的资料,可参考https://docs.microsoft.com/zh-cn/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package

2.1) Restart

安装完成后,选择Enable & Restart以启用Hyper-V

2.2) Check the installation

在power shell中输入以下命令,检查 Docker 程序是否成功安装。

2.3) Load a Docker Image

我们可以如上面的简介里面所描述的,很快捷地从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

2.4) Run a container from an image

  • 在宿主机上新建一个文件夹用于和docker container 实现文件共享。这里假设我们在桌面上新建了一个名为bioinfo_tsinghua_share的文件夹

  • 然后,用docker run新建一个名为 bioinfo_tsinghuacontainer

  • 请把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

2.6) Run and exit the container

如果_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程序

3) How to maintain a container

3.1) Check if Docker is installed

在不同操作系统中,均可在相应的终端(terminal或power shell)中运行以下命令,检查 Docker 是否正常安装:

docker info

3.2) Check how many containers are running

docker ps #查看当前正在运行的容器container
docker ps -a #查看所有容器container
docker images #查看所有镜像image

3.3) Remove a container

如果你误删的某些软件依赖,以至需要的程序无法正常使用,可以删除该_container_:

docker rm -f bioinfo_tsinghua

Tips:之前提到过 bioinfo_tsinghua 一直保持运行状态,所以我们这里用 -f 来强制(force)删除。

再用docker run新建一个干净的_container_。

3.4) Clean files

  • 打包的_image_加载后就不再需要,可以直接删除

  • 如果需要删除docker已经加载的_image_,可以使用以下命令:

docker rmi bioinfo_tsinghua # 删除image,慎重使用

4) Advanced Settings

打开docker的控制菜单,通过 Preferences 选择卡来进行参数修改。

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

建议存储空间为90G。

5) References

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

6) Teaching Videos

Last updated