Docker

Pipeline

Data Structure

We provide a Linux docker, which is a modern solution of setting up a virtual Linux OS.

1. 安装并运行docker程序:

docker官网下载Mac或Windows版本的docker程序,下载注册docker账号,然后安装。安装完成后,需要检查软件是否正常运行,docker官网有docker get started,例如MAC用户可以按照进入get started地址,按照提示启动并设置Docker Desktop。

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

2. 装载docker镜像文件:

首先下载该教程的配套文件,bioinfor_docker.bar,到本地目录,例如,下载到桌面~/Desktop。

注意: 该教程默认操作路径:/User/your_account(你的电脑用户名)/Desktop/bioinfo_docker.bar

Inputs & #Outputs--Notes

docker load < ~/Desktop/bioinfo_docker.tar
#安装镜像
docker run -it --name=bioinfo -h bioinfo -v /Users/your_account/Desktop/bioinfo:/desktop ubuntu:latest
#创建并进入name=bioinfo新容器(命令行-v /Users/your_account/Desktop/bioinfo:/desktop是用于挂载主机目录的方法,详细介绍请参考本节Tips/Utilities部分)

useradd -m cs -s /bin/bash #创建新用户cs
passwd cs #设置新用户密码
usermod -aG sudo cs #修改用户信息
chown -R root /home/cs  #修改目录所有者
su cs #切换用户

exit #退出当前用户(容器)

docker stop bioinfo #停止bioinfo容器
docker start bioinfo #启动bioinfo容器
docker attach bioinfo #进入bioinfo容器

ctrl+p+q(暂停当前运行容器的快捷键,相当于detach命令,恢复用attach命令)

docker ps #查看当前正在运行的容器
docker ps -a #查看所有容器
docker iamges #查看所有镜像
docker stop bioinfo #停止bioinfo容器
docker rm contianer_name #删除容器(参数为容器name)
docker rmi image_ID #删除镜像(参数为镜像ID)

Running Scripts(MacOS+Terminal(终端)程序进行操作)

1.Load image

输入命令 docker load < ~/Desktop/bioinfor_docker.tar(注意空格),如果load成功,则输出以下内容:

qianqiandexiaopingguodeMacBook-Pro:~ daisy$ docker load < ~/Desktop/bioinfor_docker.tar db9476e6d963: Loading layer [==================================================>] 83.62MB/83.62MB 3a89e0d8654e: Loading layer [==================================================>] 15.87kB/15.87kB 904d60939c36: Loading layer [==================================================>] 10.24kB/10.24kB a20a262b87bd: Loading layer [==================================================>] 5.632kB/5.632kB b6f13d447e00: Loading layer [==================================================>] 3.072kB/3.072kB 82143e17d6a8: Loading layer [==================================================>] 1.081GB/1.081GB 88376dbb6a81: Loading layer [==================================================>] 75MB/75MB 3374281cd25f: Loading layer [==================================================>] 107.4MB/107.4MB 270db015b4b1: Loading layer [==================================================>] 238MB/238MB a79214c809ab: Loading layer [==================================================>] 149MB/149MB 5d983e72cca3: Loading layer [==================================================>] 992.5MB/992.5MB Loaded image: ubuntu:latest

2.First time running & Create container

有以下两种操作:

方法一:自动运行并进入docker镜像,输入docker run -it ubuntu:latest命令 ,如果run成功进入镜像,则输出以下内容(注意:此时docker自动创建并进入了ID为148601f6edf1的容器):

root@148601f6edf1:/#

方法二:创建并进入一个名为“bioinfo“的容器,输入命令,docker run -it --name=bioinfo -h bioinfo ubuntu:latest

如果创建成功,则输出以下内容:

root@bioinfo:/#

3. add new user

创建新用户cs,并进入cs目录。此过程需要经过创建新用户设置用户密码修改用户信息修改目录所有者切换用户身份五个步骤,输入命令分别如下所示:

创建新用户:useradd -m cs -s /bin/bash

设置用户密码:passwd cs

输出如下

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

修改用户信息:usermod -aG sudo cs

修改目录所有者:chown -R root /home/cs

切换用户身份:su cs

例如

root@bioinfo:/# usermod -aG sudo cs
root@bioinfo:/# chown -R root /home/cs
root@bioinfo:/# su cs
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

cs@bioinfo:/$

4.exit

输入命令exit,则会一层一层退出,直到进入terminal用户界面。

例如

cs@bioinfo:/$ exit
exit
root@bioinfo:/# exit
exit
qianqiandexiaopingguodeMacBook-Pro:

5.detach & attach

第一步,输入detach命令快捷键ctrl+p+q,暂停当前容器,不会停止,容器仍在运行,可以输入docker ps查看;

第二步,输入命令docker attach bioinfo,则可恢复。

例如

root@bioinfo:/# read escape sequence
qianqiandexiaopingguodeMacBook-Pro:~ daisy$ docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS               NAMES
40e01dc8c209        dongzhuoer/lulab:base   "/bin/bash"         30 hours ago        Up 30 hours                             bio
bd0fae9c5092        ubuntu:latest           "/bin/bash"         36 hours ago        Up 39 seconds                           bioinfo
qianqiandexiaopingguodeMacBook-Pro:

6. start&stop

第一步,输入docker ps,查看当前运行的容器,输入命令 docker stop bioinfo,停止bioinfo容器,效果等同于bioinfo运行状态下使用exit命令;

第二步,输入命令docker start bioinfo,启动bioinfo容器;

第三步,输入命令docker attach bioinfo,则可进入。

例如

qianqiandexiaopingguodeMacBook-Pro:~ daisy$ docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS               NAMES
40e01dc8c209        dongzhuoer/lulab:base   "/bin/bash"         30 hours ago        Up 30 hours                             bio
bd0fae9c5092        ubuntu:latest           "/bin/bash"         36 hours ago        Up 2 minutes                            bioinfo
qianqiandexiaopingguodeMacBook-Pro:~ daisy$ docker stop bioinfo
bioinfo
qianqiandexiaopingguodeMacBook-Pro:~ daisy$ docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS               NAMES
40e01dc8c209        dongzhuoer/lulab:base   "/bin/bash"         30 hours ago        Up 30 hours                             bio
qianqiandexiaopingguodeMacBook-Pro:~ daisy$ docker start bioinfo
bioinfo
qianqiandexiaopingguodeMacBook-Pro:~ daisy$ docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS               NAMES
40e01dc8c209        dongzhuoer/lulab:base   "/bin/bash"         30 hours ago        Up 30 hours                             bio
bd0fae9c5092        ubuntu:latest           "/bin/bash"         36 hours ago        Up 10 seconds                           bioinfo
qianqiandexiaopingguodeMacBook-Pro:~ daisy$ 

7.delete/clean containers and images

删除镜像image前必须先删除此镜像所应用的所有容器containers,删除镜像的命令是rmi,删除容器的镜像是rm。例如,输入命令docker images,查看所有镜像,本此示例删除dongzhuoer/lulab:base 镜像。

例如

qianqiandexiaopingguodeMacBook-Pro:~ daisy$ docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
dongzhuoer/lulab                           base                dc04dfe2738f        46 hours ago        259MB
centos                                     latest              5182e96772bf        3 weeks ago         200MB
ubuntu                                     latest              bb702f884abc        3 weeks ago         2.67GB

第一步,输入命令 docker ps -a,查询所有容器,dongzhuoer/lulab:base的image版本下只有bio容器,然后输入容器删除命令docker rm contianer_name or ID,此处要删除name=bio的容器;

第二步,输入镜像删除命令docker rmi image_version or ID ,此处要删除dongzhuoer/lulab:base;

最后可以通过docker images 命令查看镜像是否还存在。

Tips/Utilitie

上图所示的命令是新建name=bioinfo容器,并将bioinfo容器中的Desktop下路径挂载到mac主机桌面上的bioinfo文件夹中。

因此,在mac的terminal终端输入docker 挂载宿主机目录命令前,必须确定两件事,第一件事是mac桌面上有bioinfo文件夹,没有则需要新创建;第二件事是已经load了ubuntu:latest 镜像。然后才能输入挂载主机目录的命令。

推荐使用挂载主机目录的方法创建的容器去练习本教程接下来的章节,在所有章节running scripts前切换docker工作目录到Desktop,最后你会发现所有inputs&outputs的文件都会同步到mac桌面的bioinfo文件夹中,便于管理和查看结果。同时,从本地添加到bioinfo文件夹下面的文件或子文件夹,也可以在docker中ls查看。

so,同步的前提是,工作目录与挂载主机目录一致。也就是说,在所有章节running scripts前切换docker工作目录到Desktop,也就是输入 cd Desktop 命令,否则将无法同步,如下图所示。

Homework and more

根据教程指导,安装Docker,load本教程提供的ubuntu:latest镜像,完成Running Scripts部分的基础操作练习,然后尝试更多的镜像和容器管理操作,例如容器创建、查看、启动、终止、删除等。

Last updated