Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。
docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。
主要解决的问题:不同的应用程序可能会有不同的应用环境。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
对比传统虚拟机总结
特性 | Docker | 传统虚拟机 |
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB | 一般为 GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
Docker 由镜像(Image)、容器(Container)、仓库(Repository) 三部分组成。
Docker 的镜像(Image)可以简单的类比为电脑装系统用的系统盘,包括操作系统,以及必要的软件。例如,一个镜像可以包含一个完整的 centos 操作系统环境,并安装了 samtools和 bwa 服务器。注意的是,镜像是只读的。这一点也很好理解,就像我们刻录的系统盘其实也是可读的。我们可以使用 docker images 来查看本地镜像列表。
Docker 的容器(Container)可以简单理解为提供了系统硬件环境,它是真正跑项目程序、消耗机器资源、提供服务的东西。例如,我们可以暂时把容器看作一个 Linux 的电脑,它可以直接运行。那么,容器是基于镜像启动的,并且每个容器都是相互隔离的。注意的是,容器在启动的时候基于镜像创建一层可写层作为最上层。我们可以使用 docker ps -a 查看本地运行过的容器。
Docker 的仓库(Repository)用于存放镜像。这一点,和 Git 非常类似。我们可以从中心仓库下载镜像,也可以从自建仓库下载。同时,我们可以把制作好的镜像 commit 到本地,然后 push 到远程仓库。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库 Dock Hub,国内的公开仓库也有很多选择,例如阿里云等。
注解:Docker Registry:镜像的仓库,比如官方的是Docker Hub。如果要在其它服务器上使用镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl start docker #启动 docker 服务
systemctl enable docker #设置开机启动docker服务
docker version #显示 Docker 版本信息 docker info #显示docker安装信息
普通用户要使用docker服务设置:设置非root账号使用docker服务:https://www.omicsclass.com/article/1186
docker search qiime
docker pull docker.io/centos
可能由于网络的问题会有报错。 无法连接到dockerhub 下载镜像。 如果你的网络没有问题,你可以下载。
解决: 使用阿里云docker镜像加速,提升pull的速度:
你只需要登录容器Hub服务 https://cr.console.aliyun.com的控制台,使用你的支付宝帐号,第一次登录时,需要设置一个独立的密码,左侧的加速器帮助页面就会显示为你独立分配的加速地址。
修改配置文件: vim /etc/docker/daemon.json #大括号{}中添加镜像地址:
{
"registry-mirrors":["https://koq0g34v.mirror.aliyuncs.com"]
}
systemctl daemon-reload
systemctl restart docker
docker pull docker.io/centos #再下载,就可以了。
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
docker load -i /root/docker.io-centos.tar.gz
以下为后台镜像查看
[root@omisclass ~]# docker images #查看后台镜像方法1
REPOSITORY TAG IMAGE ID CREATED SIZE
root/sra-toolkit 2.9.2 e8a5657b4e83 About an hour ago 615 MB
root/sra-toolkit latest e8a5657b4e83 About an hour ago 615 MB
docker.io/ubuntu 18.04 72300a873c2c 2 weeks ago 64.2 MB
docker.io/centos latest 470671670cac 7 weeks ago 237 MB
[root@omisclass ~]# docker image ls #查看后台镜像方法2
REPOSITORY TAG IMAGE ID CREATED SIZE
root/sra-toolkit 2.9.2 e8a5657b4e83 About an hour ago 615 MB
root/sra-toolkit latest e8a5657b4e83 About an hour ago 615 MB
docker.io/ubuntu 18.04 72300a873c2c 2 weeks ago 64.2 MB
docker.io/centos latest 470671670cac 7 weeks ago 237 MB
[root@omisclass ~]# docker image rm -f e8a5657b4e83 #强制删除后台镜像
Untagged: root/sra-toolkit:2.9.2
Untagged: root/sra-toolkit:latest
Deleted: sha256:e8a5657b4e838d3ce6581666752a9b428f4a1da9dd76ddac7cde90c93a93956f
Deleted: sha256:97df9b1202930ab3020ee1c503db104a02b932459e32bf95a4ad0c3082d572c2
Deleted: sha256:d81f279ea371ed4a05be93b3bc71726e3a38350ecaa7e19fc23c87fd61759c02
Deleted: sha256:988d8a9b4254d04e208ec281aa36cbce1bef5c4e51eae806b659387a57136b0f
Deleted: sha256:f778d0a1217a6a761ebad2dbff6ce5f34419d668410a4b34a986c47e3ba31b3f
Deleted: sha256:6f6d62c5d1b06671066794c4640c4959b7db0773474ce92b277256759de1a14f
Deleted: sha256:844f6b3eaaf0f3de53e0e72f676c455563a92d8ecce95f5edc5b03356415c2e7
Deleted: sha256:9373d3173020d86eb103eac32db58836c73670e6a3440f0598324b52a2b3a542
Deleted: sha256:ba7d13644b61b58c0f03abfdae3d208ef2f4819516ccfef56094927772a67e38
Deleted: sha256:9a8a3c79c50a7bac2ef01a5a73e2de9a2cac2117c308ca50eac77d4b3fbd0635
Deleted: sha256:6ba2b38850a58bf10195058e1952bad44c5d7240b62430ea6c553a62177d5895
Deleted: sha256:fe39aa1e284cea7136534344a139d8a1acbd079054639192541478ee94f2f055
Deleted: sha256:7439f6e10a4be5d6982f7f370cf5560a31cfb4cc3f69e807be22da1d02286fea
Deleted: sha256:0108cbe087a1f29916bcfbefdf9fe118eef0c69ea4eea4705c89ffc4da7dd1fa
[root@omisclass ~]# docker image ls #确认删除
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/ubuntu 18.04 72300a873c2c 2 weeks ago 64.2 MB
docker.io/centos latest 470671670cac 7 weeks ago 237 MB
[root@omisclass ~]# docker images #查看镜像 等于命令 docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 470671670cac 7 weeks ago 237 MB
[root@omisclass ~]# docker run -it docker.io/centos:latest /bin/bash #交互式运行container
[root@f866b20aea91 /]# exit #退出
exit
[root@omisclass ~]#
docker run -v /root/mydata:/data --privileged=true --rm -it docker.io/centos:latest /bin/bash
docker run -d docker.io/centos:latest /bin/bash -c "while true;do echo hello world; sleep 1; done"
-d 后台运行容器,并返回容器ID;
-c 后面跟待完成的命令
docker ps -a #-a 列出所有容器container(包含沉睡/退出状态的容器);
docker kill 1629581081a1 #杀死一个容器
docker rm e085da6919af #删除容器
docker rm -f 1a63ddea6571 #强制删除容器
docker stop 1a63ddea6571 #关闭容器 docker exec -it 1a63ddea6571 bash #新开一个bash端口, 并交互式进入正在运行的容器
docker export 7691a814370e |gzip > ubuntu.tar.gz #导出容器
zcat ubuntu.tar.gz | docker import - test/ubuntu:v1.0 #导入容器为镜像
docker save docker.io/centos | gzip > rna.tar.gz #镜像保存
docker load -i rna.tar.gz #镜像加载
用户也可以在登录后通过 docker push 命令来将自己的镜像推送到 Docker Hub。以下命令中的 username 请替换为你的 Docker 账号用户名。
docker tag ubuntu:18.04 username/ubuntu:18.04
docker image ls
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!