Docker 学习实战路线

每日一图
202110201614382

FileName: Docker.md

Auther: alvinszhang

Email: alvinszhang@outlook.com

CreateDate: 2021-10-20


Docker 学习实战路线

学习Docker的原因:这样一个场景,你打算学习 Machine LearningDeep Learning 等等,但是不想把电脑本地的环境变量搞乱,或许可以通过Anaconda去创建虚拟的Python环境,但是这样依然是在本地电脑创建的Python环境,治标不治本,而且也可能有卸载不干净的问题φ(* ̄0 ̄)。

现在我们来看一下Docker,我们可以用它创建不同版本Python的镜像(Image),基于镜像还可以创建互相隔离的容器(Container),然后在容器中进行编程环境的配置。

202110201803273

关键词:Docker、镜像Image、容器Container、Dockerfile、Python、Centos、Linux

01 Docker安装

安装比较简单,大家按照自己的操作系统,在Docker官网下载对应的版本就行了,在官网先注册账号登陆进去,然后会自动跳转到Docker Hub,然后在这里下载安装Docker。

202110211604836

安装好之后,可以在终端输入 docker 查看是否安装成功。

202110211608589

02 Docker常用指令

docker的指令有很多,我这里就介绍一下常用的指令,其他的指令你可以查看文档去学。

docker pull {image:tag}  #拉取镜像
docker images  #查看镜像
docker ps -a  #查看容器
docker rm -f {CONTAINER ID}  #删除容器
docker rmi {IMAGE ID}  #删除镜像
docker run -dit {IMAGE ID}  #镜像创建容器
docker exec -it {CONTAINER ID} /bin/bash  #进入容器
Ctrl+P+Q  #退出容器

下面我们就会简单上手。

03 Docker简单尝试

Docker Hub查看各种各样的镜像(Image),然后选择你喜欢的镜像,使用指令 docker pull {image:tag} 获取。这里我们以ubuntu镜像为例。

202110211636415

找到ubuntu镜像,建议选择特定版本的Tag,例如 ubuntu:21.04

202110211646952

然后在终端运行 docker pull ubuntu:21.04

202110211654872

依次在终端执行以下命令:

docker pull ubuntu:21.04  #获取镜像
docker images   #查看镜像的{IMAGE ID}
docker run -dit {IMAGE ID}  #镜像创建容器
docker ps -a  #查看容器的{CONTAINER ID}
docker exec -it {CONTAINER ID} /bin/bash  #进入容器
# {随意操作一下试试,例如pwd、cd等等}
exit   #退出容器
202110211728318

可以发现这是一个极简的ubuntu系统,其中没有python环境,甚至没有vim工具,我们是无法在如此“干净”的系统中进行开发的,那我们需要手动一步步的去安装我发所需要的工具,那这样岂不是很麻烦,有没有什么办法是可以直接创建一个已经符合自己开发环境的镜像呢?这样的话,我直接用这个镜像创建出来的容器就直接可以用于开发了,不需要在容器中一步步的配置开发环境。Dockerfile,它就可以解决我们这个疑问!

04 Dockerfile

大家可以先简单浏览一下教程,Dockerfile 菜鸟教程,然后我这里以centos7镜像为基础镜像,构建一个带有python3.8.12的环境的简单镜像。下面附上dockerfile内容与实践。

此链接为dockerfile,点击可以查看,简单理解一下里面的语法,把它下载下来。

这里需要一些终端的操作知识,首先将dockerfile放到本地文件夹里,然后 cd {dockerfile_path} ,然后在此目录下终端输入 docker build -t centos7:1.0.0 -f ./centos7.dockerfile . ,这个文件目录要注意一下,可以看下我下面放的截图参考一下,然后等待它build完成。

202110211500487

然后在上一部分那样,简单尝试一下,先列出镜像、再创建容器、最后进入容器,在终端输入vim,发现这个镜像创建的容器按照我们的dockerfile创建得很成功!

202110211554311

也有python3环境,dockerfile里也安装了python3的pandas、numpy等库。

202110211948235

05 上传镜像到Docker Hub

我们使用dockerfile打造了个性化的镜像,那么如果想把这个镜像分享给别人呢?别人也得按照dockerfile创建一遍,这样显得有些麻烦。这个时候我们就可以把创建好的镜像上传到Docker Hub,然后别人仅仅需要执行一句 docker pull {image:tag} 就可以直接克隆下来你的镜像,这样就很方便。

首先得在Docker Hub创建一个仓库,用来存储自己制作的镜像。

202110220001092

在终端执行以下命令

docker login -u   #登陆自己的账号,需要输入密码
docker tag {image:tag} {username/image:tag} 
docker push {username/image:tag}
202110220006856

报错了timeout,是因为docker地址为国外仓库上传、下载速度较慢。解决办法,在docker客户端直接修改 Preferences - Docker Engine ,把里面原有的几行删掉,替换成如下的内容,这是换上了国内的阿里源。

202110220020966
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

再重新push一遍。

202110220027196

Push上传成功,然后在Docker Hub官网看一下自己的镜像,官网已经同步上来了。

202110220028507

06 Pull自己的镜像

我先把自己电脑本地的centos7镜像删掉,以免影响从Docker Hub拉取下来的镜像,顺便在这里介绍一下如何删除镜像和容器,删除镜像的前提是保证没有基于此镜像创建的容器,所以大部分时候,要首先删除对应的容器,然后在删除镜像。

docker rm -f {CONTAINER ID}  #删除容器
docker rmi {IMAGE ID}  #删除镜像
202110220039206

测试下 docker pull alvinszhang/centos7:1.0.0 ,成功!

202110220040334

结语:基本的docker全流程已经学习的差不多了,入门docker!


对了,这个是我的docker客户端原本 Preferences - Docker Engine 的内容,在这里记录一下,这个内容应该是没什么用的。

{
  "experimental": false,
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "features": {
    "buildkit": true
  }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值