0045【宏基因组】-通过docker常用命令及安装qiime2
Docker简介1.什么是容器一种操虚拟化的方案操作系统级别的虚拟化只能允运行相同或相似内核的操作系统——只能允许linux依赖于linux内核特性:Namespace和C groups(control group)2. 容器的优点内存占用容器只需要占用应用的内存,而虚拟机需要占用几个G的系统硬件内存硬件消耗容器与宿主共同占用硬件消耗。而虚拟机需要单独...
Docker简介
1.什么是容器
- 一种操虚拟化的方案
- 操作系统级别的虚拟化
- 只能允运行相同或相似内核的操作系统——只能允许linux
- 依赖于linux内核特性:Namespace和C groups(control group)
2. 容器的优点
内存占用
容器只需要占用应用的内存,而虚拟机需要占用几个G的系统硬件内存
硬件消耗
容器与宿主共同占用硬件消耗。而虚拟机需要单独消耗硬件资源。
3. Docker来源
- 由Go语言开源引擎编写。
- 作用为:将应用程序化部署到容器。
- 2013年初dotCloud发布
- 基于Apache 2.0 开源授权协议发行
4.Docker的目标
- 提供简单轻量的建模方式
- 职责的逻辑分离
- 快速高效的开发生命周期
- 鼓励面向服务的架构
开发思想:高内聚,低耦合,单一任务
5.docker的使用场景
- 使用docker容器开发、测试、部署服务
- 创建隔离的运行环境
- 搭建测试环境
- 构建多用户的平台即服务基础设施
- 提供软件即服务应用程序
- 高性能、超大规模的宿主部署
6.Docker的基本组成
- Docker的客户端、守护进程
Docker image镜像——只读
Docker Container容器——写时复制
Docker Registry 仓库
- 公有-通过账号在Docker hub下载
- 私有
Docker 基本使用
1. 安装Docker
sudo apt-get install docker.io
切换到root用户进行操作
# 查看版本号
$docker --version
Docker version 17.12.1-ce, build 7390fc6
显示:
一个客户端、一个服务器端
root@tssys:/home/toucan/software# docker version
Client:
Version: 17.12.1-ce
API version: 1.35
Go version: go1.10.1
Git commit: 7390fc6
Built: Wed Apr 18 01:23:11 2018
OS/Arch: linux/amd64
Server:
Engine:
Version: 17.12.1-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.10.1
Git commit: 7390fc6
Built: Wed Feb 28 17:46:05 2018
OS/Arch: linux/amd64
Experimental: false
2.查找名为”tutorial”的镜像
root@tssys:/home/toucan/software# docker search tutorial
# 显示
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
learn/tutorial 39
georgeyord/reactjs-tutorial This is the backend of the React comment box… 5 [OK]
3.镜像从仓库下载到本地,名字为:用户名/镜像名
root@tssys:/home/toucan/software# docker pull learn/tutorial
# 下载中
Using default tag: latest
latest: Pulling from learn/tutorial
271134aeb542: Downloading [===> ] 4.308MB/71.04MB
# 下载完成
Using default tag: latest
latest: Pulling from learn/tutorial
271134aeb542: Pull complete
Digest: sha256:2933b82e7c2a72ad8ea89d58af5d1472e35dacd5b7233577483f58ff8f9338bd
Status: Downloaded newer image for learn/tutorial:latest
4.运行镜像,执行显示“hello world”
docker run learn/tutorial echo 'hello world'
# 显示
hello world
5.在容器中安装,ping命令
docker run learn/tutorial apt-get install -y ping
6.列出当前系统下有哪些容器的运行记录
docker ps -a
# -a显示如有运行过的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTSNAMES
8fbc64458d78 learn/tutorial "apt-get install -y …" 49 seconds ago Exited (0) 44 seconds agoserene_visvesvaraya
a0106fb110ff learn/tutorial "echo 'hello world'" About a minute ago Exited (0) About a minute agopriceless_wozniak
docker ps -l
# -l显示最后一次运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8fbc64458d78 learn/tutorial "apt-get install -y …" 2 minutes ago Exited (0) 2 minutes ago serene_visvesvaraya
# 批量退出容器
docker stop $(docker ps -a -q)
# 批量删除退出的容器
docker rm -v $(docker ps -a -q -f status=exited)
7.查看有哪些镜像
docker images
# 显示
REPOSITORY TAG IMAGE ID CREATED SIZE
learn/tutorial latest a7876479f1aa 5 years ago 128MB
8.根据容器ID号,提交新docker镜像
root@tssys:/home/toucan/software# docker commit 8fbc64458d78 learn/ping_toucan
# 提交后返回了一串号码
sha256:d9d887ece8e9769a429d8b5a70d482c0809b8aa8fed84ed979bd1aca7e9a8b67
9.查看镜像
出现新提交的镜像learn/ping_toucan
root@tssys:/home/toucan/software# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
learn/ping_toucan latest d9d887ece8e9 2 minutes ago 140MB
learn/tutorial latest a7876479f1aa 5 years ago 128MB
10.运行新的docker镜像,连接网站
docker run learn/ping ping www.baidu.com
# 原理的镜像没有ping,连接不成功
root@tssys:/home/toucan/software# docker run learn/tutorial ping www.baidu.com
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"ping\":executable file not found in $PATH": unknown.
ERRO[0000] error waiting for container: context canceled
# 安装ping后的镜像,可以连接成功
root@tssys:/home/toucan/software# docker run learn/ping_toucan ping www.baidu.com
PING www.a.shifen.com (163.177.151.109) 56(84) bytes of data.
64 bytes from 163.177.151.109: icmp_req=1 ttl=127 time=7.47 ms
64 bytes from 163.177.151.109: icmp_req=2 ttl=127 time=7.92 ms
docker ps
查看运行中的容器,docker inspect
查看容器运行的详细信息
root@tssys:/Bio/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f6cc08689e9 learn/ping_toucan "ping www.baidu.com" 10 seconds ago Up 9 seconds inspiring_almeida
docker inspect 容器ID
root@tssys:/Bio/# docker inspect 7f6cc08689e9
11.查看当下的镜像
root@tssys:/home/toucan/software# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
learn/ping_toucan latest d9d887ece8e9 11 minutes ago 140MB
learn/tutorial latest a7876479f1aa 5 years ago 128MB
12.将新镜像保存到docker hub中
docker push learn/ping
由于还没有登录docker的账号,密码,因此无法上传
root@tssys:/home/toucan/software# docker push learn/ping_toucan
The push refers to repository [docker.io/learn/ping_toucan]
9092c0b708ff: Preparing
ee1ba0cc9b81: Preparing
denied: requested access to the resource is denied
13,docker安装准备
检查内核版本
root@tssys:/Bio/# uname -a
Linux tssys 4.15.0-23-generic #25-Ubuntu SMP Wed May 23 18:02:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
检查存取驱动Device Mapper
root@tssys:/Bio/# ls -l /sys/class/misc/device-mapper
lrwxrwxrwx 1 root root 0 6月 14 22:14 /sys/class/misc/device-mapper -> ../../devices/virtual/misc/device-mapper
14.安装ubuntu维护的版本
sudo apt-get install docker.io
source /etc/bash_completion.d/docker.io # 无此文件,不影响正常使用
sudo docker version
15.查看守护进程的运行状态
ps -ef|grep docker
16.使用service命令管理
启动、停止、重启
sudo service docker start
sudo service docker stop
sudo service docker restart
17. 查看docker的状态
sudo status docker
docker守护进程配置文件,修改后需要服务重启
/etc/default/docker
18.使用bash的方法进入容器,不需要每次指定容器名称
互动标准输入i和分配新命令行t。i: –interactive Keep STDIN open even if not attached; t: –tty Allocate a pseudo-TTY
root@tssys:/Bio/# docker run -i -t learn/ping_toucan /bin/bash
# 已经进入系统,主机名称为数字
root@c10e44454ebd:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var
root@c10e44454ebd:/# pwd
/
# 退出
root@c10e44454ebd:/# exit
exit
root@tssys:/Bio/#
19.指定容器名字
root@tssys:/Bio/# docker run --name=container01 -i -t learn/ping_toucan /bin/bash
后续,输入此名字与输入ID效果一致
docker inspect container01
20.重新启动停止的容器
# 重新启动旧容器
root@tssys:/Bio/# docker start -i container01
root@6f6902a3723d:/#
# 删除已经停止的容器,不能删除运行中的容器
root@tssys:/Bio/# docker rm a0106fb110ff
a0106fb110ff
21.守护式容器
- 能够长期运行
- 没有交互会话适
- 适合运行应用程序和服务
方式一run
docker run -i -t IMAGE /bin/bash
# 使用Ctrl + P 或者Ctrl + Q 退出
# 这样的容器,在后台长期运行
# 查看正在运行的容器
root@tssys:/Bio# docker ps
# 使用acttach方法,重新返回运行中的容器,指定容器ID或者NAMES
root@tssys:/Bio# docker attach 236116a6d5c2
# 直到使用exit退出
方式二run
docker run -d IMAGE [COMMAND][ARG...]
-d 使用循环脚本,让容器一直运行
root@tssys:/Bio# docker run --name container03 -d learn/ping_toucan /bin/sh -c "while true;do echo hello world;sleep 30;done"
266827bbdf65c1a91f6c190db6933c8d399a462c42004a3047dabe50a1f86459
# 容器在运行
root@tssys:/Bio# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
266827bbdf65 learn/ping_toucan "/bin/sh -c 'while t…" 4 seconds ago Up 3 seconds container03
查看后台容器运行的日志
- f 实时显示log输入,默认为false
- t 显示时间,默认为false
- –tail 默认为 –tail=”all“,显示所有,tail 0表示显示最新的一条。
root@tssys:/Bio# docker logs -ft container03
2018-06-15T10:39:10.448145859Z hello world
2018-06-15T10:39:40.450413197Z hello world
2018-06-15T10:40:10.452890338Z hello world
^C
root@tssys:/Bio# docker logs -ft --tail 0 container03
2018-06-15T10:40:40.455818035Z hello world
使用top命令,显示指定容器的进程
root@tssys:/Bio# docker top container03
UID PID PPID C STIME TTY TIME CMD
root 14149 14130 0 18:39 ? 00:00:00 /bin/sh -c while true;do echo hello world;sleep 30;done
root 14316 14149 0 18:44 ? 00:00:00 sleep 30
对运行中的容器,启动新的进程
docker exec -d -i -t 容器名 命令
# 多增加一个bash
root@tssys:/Bio# docker exec -it container03 /bin/bash
停止守护式容器
docker stop 容器名——发送信息,让容器停止
docker kill 容器名——直接停止容器
22.安装Docker
# 安装Docker
sudo apt-get install docker.io
# 启动Docker服务
service docker start
# 关闭Docker服务
service docker stop
# 查看是否有容器进程在运行
docker ps -a
非root用户,不需要使用sudo使用docker,需要将用户添加到docker组
1. sudo groupadd docker
2. sudo gpasswd -a 用户名 docker
3. sudo service docker restart
显示输出
$sudo groupadd docker
groupadd: group 'docker' already exists
toucan@tssys /Bio 五 6月 15 19:10 forstart
$sudo gpasswd -a toucan docker
Adding user toucan to group docker
$docker version
Client:
Version: 17.12.1-ce
API version: 1.35
Go version: go1.10.1
Git commit: 7390fc6
Built: Wed Apr 18 01:23:11 2018
OS/Arch: linux/amd64
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.35/version: dial unix /var/run/docker.sock: connect: permission denied
需要用户重新登录才能,接收权限
23.宿主与容器文件共享
$docker run --rm -it --name=ubuntu4 -v /home/toucan/Temp:/tmp ubuntu
root@a7fb537b1ac5:
参数详解
run 运行镜像
-it 启动终端命令行模式
--nane 指定容器名称
-v 左边为宿主的绝对地址,右边为容器的绝对地址
ubuntu 为镜像名称
23.删除docker镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
-f --force=false 强制删除镜像
--no-prune=false 保留镜像中被打标签的父镜像
删除时若使用IMAGE名和TAG名的形式则每次会删除一个,如果一个镜像有多个TAG那么只有当最后一个IMAGE +TAG被删除时镜像菜会被删除
若使用IMAGEID可以删除其对应的多个IMAGE+TAG
安装qiime2
执行命令,安装最新版qiime2
docker pull qiime2/core
输出显示,其中有一个是2G,下来许久,过夜下载吧。
$docker pull qiime2/core
Using default tag: latest
latest: Pulling from qiime2/core
85b1f47fba49: Pull complete
6b3cb0c49789: Pull complete
fecb432dacf0: Downloading [=================================================> ] 132.3MB/134.3MB
f461f7e3890d: Download complete
5f703fd294da: Download complete
564fce31ff2d: Download complete
4f0aaff99b30: Download complete
aec65fe0f052: Downloading [> ] 13.37MB/2.691GB
30623f442f76: Download complete
98b7fa203a9c: Download complete
4cdf4a2e6d3d: Downloading [=================================> ] 380.1kB/561.6kB
注:最终还是无法安装,2.89GB的下载过夜也无法动静,也没有断线。估计要翻墙才能下载。
参考文档:
宏基组订阅号:
扩增子分析流程QIIME. 1 使用Docker配置QIIME1安装
Docker的基本使用-Ubuntu18.04
更多推荐
所有评论(0)