阿里云docker培训

虚拟机与docker之间的区别

 

我们可以看到,传统的虚拟机是在宿主机之上,又添加了一个新的操作系统,这就直接导致了虚拟机的臃肿,与

不适合迁移。而docker这是直接寄存在宿主机上,完全就会避免大部分虚拟机带来的困扰。

另外Docker其实是一个黑盒的进程,为什么说是黑盒的,区别于传统的进程,Docker可以独立出一个自己的空间,不会使得在docker中的行为以及变量溢出到宿主机上。

为什么用docker

在没出现docker的时候,我们完成的java web项目需要打成一个war。然后得在服务器中配置各种各样的参数,例如说jdk,tomcat,数据库等。配置的周期相当的冗杂并且繁琐。但是现在有了docker,我们不但可以使用一个空的镜像,从头开始构建,还可以使用之前各种大牛已经build好的镜像,直接使用。而且在项目需要迁移的时候,我们只需要在需要部署的地方,直接使用之前项目使用的docker放置好自己的项目即可,方便快捷。

docker底层技术支持

  • NameSpaces:用于做进程之间的隔离
  • Control Groups: 用于做资源控制,根据需求划分资源的核心数,内存,硬盘等等,例如我们之前新建一个虚拟机一样
  • Union file systems(UFS,联合文件系统):Container和image的分层

docker的基本概念

docker最重要的三个概念是:镜像(image),容器(container),仓库(repository),在这三个概念中,镜像是最重要的概念。

镜像

  • 镜像是文件与meta data的集合
  • 分层的,并且每一层都可以添加删除文件,从而形成新的镜像
  • 不同的镜像可以共享相同的层(layout)
  • 只读的

镜像我们可以理解为树状结构,每一个镜像都会依赖于另一个镜像,这个依赖关系是体现在docker镜像制作的dockerfile中的FROM指令中的。如果要是树的根,那么我们需要"FROM scratch",这个是值得注意的。如果需要对它进行修改,该怎么办呢,别着急,这个就得看我们的容器了。

容器

  • 通过image创建
  • 在image 的最后一层上面再添加一层,这一层比较特殊,可读写。
  • image负责存储和分发,container负责运行

容器是镜像的一个运行实例,可以不准确的把镜像当作类,容器当作对象。容器其实他的结构是与镜像相类似的,底部也是一层层的只读层,只不过在最上层会存在一个存储层,我们可以在这一层定制化我们的这个容器,还可以通过build命令,把容器打包成我们自己需要的镜像。另外镜像启动后会形成一个容器,容器在计算机中是一个进程,但这个进程对其他进程并不可见。
容器的启动过程:
检查镜像是否在本地存在,如果不存在去远程仓库下载
==>利用镜像创建一个容器
==>启动刚刚创建的容器
==>分配一个文件系统给容器,并且在镜像层外挂载一个可读可写层
==>从宿主主机的网桥接口中桥接一个给容器
==>从网桥中分一个ip地址给容器
==>执行用户指定的应用程序
==>执行完毕后容器自动终止

仓库

这个理解起来就很简单了,大家应该有使用过git,他是有一个远程的仓库,这个仓库记录着我们的代码,和每一次我们提交的记录。但是在这里,把docker的仓库比做maven仓库更加恰当,就相当于我们可以去maven远程仓库取我们需要的依赖,多个依赖构成了我们的整个项目,这个思想同样适用于docker。默认情况下,我们都是从docker hub中取得的镜像(Docker Hub

其他名词解释:

TCC(天池竞赛计算平台-TianChi Computing):天池大赛docker提交模型评估的平台简称。

Docker:docker作为虚拟机领域成熟的轻量化容器产品,可以轻松的将代码和所依赖的整个环境(可以理解为包含整个操作系统)都打包在一起,不依赖于软件环境,方便把自己的代码从windows电脑分享到mac电脑运行、或者服务器上运行等。 docker三要素:镜像(image)、容器(contarin)、registry(包含多个仓库)

docker安装

Linux

$ sudo curl -sS https://get.docker.com/ | sh

测试

$ docker run hello-world

dockerfile应用

使用dockerfile 拉取镜像、执行等

# Base Images
## 从天池基础镜像构建(from的base img 根据自己的需要更换,建议使用天池open list镜像链接:https://tianchi.aliyun.com/forum/postDetail?postId=67720)
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.1.0-cuda10.0-py3
##安装python依赖包
RUN pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
## 把当前文件夹里的文件构建到镜像的根目录下,并设置为默认工作目录
ADD . /
WORKDIR /
## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]

构建本地镜像

docker build -t 镜像名:版本

ex. docker build -t mydocker:0.1 .

指定dockerfile文件

docker build -t  镜像名:版本 .  -f dockerfile文件路径

构建上传

命令行执行,构建镜像: tips: 镜像命名根据自己申请的仓库registry来,可以省去tag步骤直接上传,保持本地镜像清洁。

docker build -t registry.cn-shanghai.aliyuncs.com/xxxx/test:0.1

上传镜像仓库

docker push registry.cn-shanghai.aliyuncs.com/xxxx/test:0.1

3. 如何构建自己的基础镜像

通过获取第三方镜像,修改后打TAG提交,变成自己的镜像

【OPENLIST】Base Docker Image List-天池技术圈-天池技术讨论区 (aliyun.com)

3.1 拉取镜像

docker pull [选项] [docker镜像地址:标签]

ex.  docker pull registry.cn-shanghai.aliyuncs.com/test/pytorch:latest-py3

3.2 运行镜像并进入容器 (后台)

docker run -itd  registry.cn-shanghai.aliyuncs.com/test/pytorch:latest-py3 /bin/bash

3.3 查看正在运行的容器

docker ps -a

3.4 进入运行中/后台运行的容器

docker exec -it [CONTAINER ID] /bin/bash

3.5 保存修改

docker commit [CONTAINER ID] registry.cn-shanghai.aliyuncs.com/test/pytorch:myversion

3.6 查看镜像

docker images

3.7 运行自己本地镜像

docker run -itd registry.cn-shanghai.aliyuncs.com/test/pytorch:myversion /bin/bash

4. 在阿里云创景自己的容器镜像服务

https://cr.console.aliyun.com/

创建成功后,尝试登陆

docker login regi**** --username=***

gpu实践

AI开发者的Docker实践 - AI学习 - 阿里云天池 (aliyun.com)

根据阿里云申请的公网地址进行本地构建 打TAG

最后上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值