生信分析流程

DeepVariant — step1 docker的学习

2019-07-01  本文已影响0人  小灰灰不会飞那又怎样

这部分是对docker的简单介绍,侧重在docker命令学习,因为本质不是要学习docker,而是用docker这个媒介学习deepvariant。

一、docker简介

docker是一种容器技术,能够将一整套的系统环境搭建在一个镜像中,便于移植,对于那些安装复杂的软件,docker给安装者提供了非常便捷的方法。

二、docker中几个概念:
1.镜像

可读的一个操作系统 。

2.容器

可以由镜像创建,是一个可读可写的进程。

3.仓库

用于储存镜像,可以在dockerhub上建立用于储存镜像的仓库。

三、docker常用命令:
1.docker images 查看本地镜像

docker images [OPTIONS] [REPOSITORY[:TAG]]

示例:查看本地全部镜像:

[root@fre365bgfnytm3265uTGf Result] docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
2.dokcer search 从dockerhub中查找镜像

docker search [OPTIONS] TERM

示例:查找dockerhub中名为deepvariant的镜像:

--filter=stars=1是指定星级大于等于1的

[root@fre365bgfnytm3265uTGf test] docker search deepvariant --filter=stars=1
INDEX       NAME                              DESCRIPTION                        STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/dajunluo/deepvariant    Run Google's DeepVariant locally   6
docker.io   docker.io/amrradwan/deepvariant                                      1
docker.io   docker.io/bisn/deepvariant  
3.docker pull 从仓库中下载一个镜像到本地

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

示例:从dockerhub上拉一个镜像到本地:

[root@fre365bgfnytm3265uTGf test] docker pull docker.io/dajunluo/deepvariant
Using default tag: latest
Trying to pull repository docker.io/dajunluo/deepvariant ...
latest: Pulling from docker.io/dajunluo/deepvariant
Digest: sha256:813e43ffa3b95ac11b549c8fcc000ad92b7ef7bab87bbfe67ee58598be150f35
Status: Image is up to date for docker.io/dajunluo/deepvariant:latest
4.docker run 运行一个容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

示例:从容器中拷贝数据到外部:

docker run -v /deepvariant/:/deepvariant/ docker.io/dajunluo/deepvariant:latest bash  -c " cp /opt/quickstart-testdata/* /deepvariant/quickstart-output/test/ "

示例:创建一个容器,并容器内执行bash命令 ,最后退出exit:

-v是挂载目录
-it是交互模式

[root@fre365bgfnytm3265uTGf test] docker run -it -v /tmp/:/tmp/ docker.io/dajunluo/deepvariant:latest bash
root@0b90a59849cc:/opt/deepvariant/bin  exit
exit

示例:用run运行完一个容器,就自动退出了:

[root@fre365bgfnytm3265uTGf test] docker run docker.io/dajunluo/deepvariant echo "hello world"
hello world
[root@fre365bgfnytm3265uTGf test] docker ps -l
CONTAINER ID        IMAGE                            COMMAND                CREATED             STATUS                      PORTS               NAMES
e51454eca923        docker.io/dajunluo/deepvariant   "echo 'hello world'"   16 seconds ago      Exited (0) 16 seconds ago                       zealous_bell
5.docker ps 查看容器情况

docker ps [OPTIONS]

示例:查看正在运行的容器:

[root@fre365bgfnytm3265uTGf test] docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a3860caa3176        11b5f360c5ef        "bash"              12 days ago         Up 12 days                              sleepy_edison
5807837e3e9b        bd32c5816c1f        "bash"              13 days ago         Up 13 days                              hopeful_yonath

示例:查看全部容器:

[root@fre365bgfnytm3265uTGf test] docker ps -a
CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS                      PORTS               NAMES
26bf0843f171        docker.io/dajunluo/deepvariant:latest      "echo 'hello world'"     18 minutes ago      Exited (0) 18 minutes ago                       jovial_feynman
55f150711f78        docker.io/dajunluo/deepvariant:latest      "bash"                   18 minutes ago      Exited (0) 18 minutes ago                       jovial_hodgkin
38f0553b1f58        pkrusche/hap.py                            "/opt/hap.py/bin/h..."   3 days ago          Exited (0) 3 days ago                           blissful_spence

示例:查看最近创建的一个容器:

[root@fre365bgfnytm3265uTGf test] docker ps -l
CONTAINER ID        IMAGE                                   COMMAND                CREATED             STATUS                      PORTS               NAMES
26bf0843f171        docker.io/dajunluo/deepvariant:latest   "echo 'hello world'"   18 minutes ago      Exited (0) 18 minutes ago                       jovial_feynman

示例:查看最近创建的一个容器,只输出容器ID:

[root@fre365bgfnytm3265uTGf test] docker ps -lq
26bf0843f171
6.docker tag 标记本地镜像

一般在push一个本地镜像到dockerhub中需要先进行tag操作

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

[root@fre365bgfnytm3265uTGf test] docker images 
docker.io/dajunluo/deepvariant          latest              dhuisj84jd80        2 months ago        2.87 GB
[root@fre365bgfnytm3265uTGf test] docker tag dhuisj84jd80 test/deepvariant
[root@fre365bgfnytm3265uTGf test] docker images 
docker.io/dajunluo/deepvariant          latest              dhuisj84jd80        2 months ago        2.87 GB
test/deepvariant                        latest              dhuisj84jd80        2 months ago        2.87 GB
7.docker push 推送镜像到仓库

docker push [OPTIONS] NAME[:TAG]

8.docker rm 删除一个容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]

示例:删除一个ID为a3860caa3176的容器:

docker rm a3860caa3176

示例:强制删除一个ID为a3860caa3176的容器:

docker rm -f a3860caa3176
9.docker rmi 删除一个镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]

示例:删除名为test/deepvariant:latest的容器:

[root@fre365bgfnytm3265uTGf test] docker images | grep deepvariant
docker.io/dajunluo/deepvariant          latest              dhuisj84jd80        2 months ago        2.87 GB
test/deepvariant                        latest              dhuisj84jd80        2 months ago        2.87 GB
[root@fre365bgfnytm3265uTGf test] docker rmi test/deepvariant:latest
Untagged: test/deepvariant:latest
Untagged: docker.io/dajunluo/deepvariant@sha256:813e43ffa3b95ac11b549c8fcc000ad92b7ef7bab87bbfe67ee58598be150f35
[root@fre365bgfnytm3265uTGf test] docker images | grep deepvariant
docker.io/dajunluo/deepvariant          latest              dhuisj84jd80        2 months ago        2.87 GB

示例:有时候会遇到无法删除的情况:

[root@fre365bgfnytm3265uTGf test] docker rmi -f 121de1d6ed2a
Error response from daemon: conflict: unable to delete 121de1d6ed2a (cannot be forced) - image has dependent child images

无法删除镜像的原因是因为这个id存在于多个库中,需要用库名和tag名称进行删除:

[root@fre365bgfnytm3265uTGf test] docker rmi test:v0.0.1
Untagged: test:v0.0.1
10.docker commit 提交一个容器为镜像

相当于发布一个版本,此版本commit完成以后成为一个镜像,具有读的权限

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

示例:

[root@fre365bgfnytm3265uTGf test]# docker ps -l
CONTAINER ID        IMAGE                            COMMAND                CREATED             STATUS                         PORTS               NAMES
e51454eca923        docker.io/dajunluo/deepvariant   "echo 'hello world'"   About an hour ago   Exited (0) About an hour ago                       zealous_bell
[root@fre365bgfnytm3265uTGf test]# docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
[root@fre365bgfnytm3265uTGf test]# docker commit -a "test test@163.com" -m "docker info commit" e51454eca923 test/commit:v1.0
sha256:4ad8d62d5be606934041890a4770e7fa82e68cafc5fc2e32a285eedefc5c84d4
[root@fre365bgfnytm3265uTGf test]# docker images
test/commit                             v1.0                4ad8d62d5be6        13 seconds ago      2.87 GB
11.docker exec 进入一个正在运行的容器/在运行容器中执行命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

docker exec -it 880c0faf97f8 bash
12.docker login 登陆一个docker账户

docker login [OPTIONS] [SERVER]

我用的一般就是dockerhub上的账户,用于pull和push镜像

13.docker logout 退出一个docker账户

docker logout [SERVER]

14.docker version 查看docker版本

docker version [OPTIONS]

示例:

[root@fre365bgfnytm3265uTGf test] docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64
 Go version:      go1.9.4
 Git commit:      8633870/1.13.1
 Built:           Fri Sep 28 19:45:08 2018
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64
 Go version:      go1.9.4
 Git commit:      8633870/1.13.1
 Built:           Fri Sep 28 19:45:08 2018
 OS/Arch:         linux/amd64
 Experimental:    false
15.docker build 用dockerfile创建一个镜像

docker build [OPTIONS] PATH | URL | -

示例:
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式
-f :指定要使用的Dockerfile路径
由于我之前构建过这个镜像,所以构建过程很快,应用了之前的缓存(Using cache)。
构建过程中会返回多个镜像ID,都是中间层镜像,最后会返回整个镜像的ID。

[root@fre365bgfnytm3265uTGf test] docker build -t test:v0.0.1  -f /Test/test.dockerfile /Test
Sending build context to Docker daemon 4.096 kB
Step 1/32 : FROM ubuntu:16.04
 ---> 2a697363a870
Step 2/32 : RUN apt-get update && apt-get -y install build-essential cpanminus curl git manpages perl perl-base vim wget mysql-client libmysqlclient-dev libssl-dev unzip apache2 libmysqlclient-dev libpng12-dev libssl-dev openssl
 ---> Using cache
 ---> df0f1fe26493
... ...
... ...
... ...
Step 31/32 : RUN pip install redis
 ---> Using cache
 ---> 742d34716d87
Step 32/32 : RUN pip install ntplib
 ---> Using cache
 ---> 121de1d6ed2a
Successfully built 121de1d6ed2a
[root@fre365bgfnytm3265uTGf test] docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
test                                     v0.0.1              121de1d6ed2a        2 weeks ago         1.66 GB
上一篇 下一篇

猜你喜欢

热点阅读