DeepVariant — step1 docker的学习
这部分是对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