Docker学习进程(一)

全新小白学习docker,表示很晕。记录我的学习步骤。

1. 搜索:docker 菜鸟教程。

先不了解docker的原理,没用过这个东西,看原理也是晕晕的,先按照教程一步步来运行,感受下这个到底可以做什么。

2.理解docker常用命令原理图

Docker常用命令原理图
之后了解docker 命令的主要含义

3.尝试打包镜像

docker搭建python环境并打包镜像然后使用镜像启动python程序和flask程序
主要参考上述链接进行搭建。但是博主的步骤对于小白的我来说,产生了问题,所以我这里重新写一下步骤。

3.1 下载ubuntu镜像
docker pull ubuntu

这个ubuntu镜像是最新的,使用 docker images ,可以查看新建的镜像。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              93fd78260bd1        4 weeks ago         86.2MB

这个镜像是第一层,我是这样理解的。是你项目运行环境的最开始的一个层。相当于,你现在有了一台安装了ubantu系统的电脑。

3.2 进入ubuntu容器交互系统
docker run -i -t ubuntu /bin/bash

参数说明:
-t 是启动终端
-i 是允许进行交互

进入交互系统,表明你打开了ubuntu系统的终端,可以用命令行进行操作。可以看到终端变成了这样:

root@69dd17b70d12:/#  

输入python,是不存在的。

root@b4312b72a091:/# python3
bash: python3: command not found

安装Python3等一系列包

root@b4312b72a091:/# apt-get update
root@b4312b72a091:/# apt-get install python3
root@b4312b72a091:/# apt-get install python3-pip
root@b4312b72a091:/# apt-get install python3-dev
root@b4312b72a091:/# apt-get install openssl
root@b4312b72a091:/# apt-get install libssl-dev
root@b4312b72a091:/# apt-get install libffi-dev

输入 python3,pip3,可以看见已经有这些环境了。

3.3 打包容器成为镜像

之后输入exit,退出交互系统。输入docker images,我们可以看看现在是什么情况。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              93fd78260bd1        4 weeks ago         86.2MB

还是只有一个镜像。输入docker ps -a ,把所有的容器都打印出来

zldeAir-5:~ zl$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS                     NAMES
b4312b72a091        ubuntu              "/bin/bash"         12 minutes ago      Exited (0) About a minute ago                             heuristic_swanson

可以看到这里有个静态容器,之后打包装了python的容器,把它变成一个镜像
命令:docker commit <容器id> 新的镜像名

zldeAir-5:~ zl$ docker commit b4312b72a091 python3env
sha256:581bb80e1e5733f39154dbe13c7b15c571e4f79365f3630167b17d588c64fa27

再次输入 docker images,我们可以看到已经添加了一个新的镜像。

zldeAir-5:~ zl$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
python3env          latest              581bb80e1e57        11 seconds ago      499MB
ubuntu              latest              93fd78260bd1        4 weeks ago         86.2MB

python3env这个镜像有两个镜像层,第一层是Ubuntu,第二层是python3,pip3等上述一系列安装的包,环境。

3.4 测试新建镜像

用该镜像,来运行宿主机里面的Python脚本

docker run -v /Users/zl/project/celery_test:/celery_test -w /celery_test python3env python3 add.py

参数说明:
-v:冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径
-w:是指定为当前镜像工作目录

/Users/zl/project/celery_test 是我项目的路径。
python简单项目

运行成功会打出运行结果,终端输出7,运行成功。

3.5 pip安装库,再次进行打包

批量安装库:docker -v 宿主机目录:容器目录 -w 容器当前工作目录 镜像名 命令

之后跟上述一样,需要再次打包一次容器,保存安装对应库之后的python环境。

zldeAir-5:~ zl$ docker run -v /Users/zl/project/celery_test:/celery_test -w /celery_test python3env pip3 install -r requirements.txt

zldeAir-5:~ zl$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                     NAMES
143456e73cb8        python3env          "pip3 install -r req…"   3 minutes ago       Exited (0) 46 seconds ago                               serene_poincare

zldeAir-5:~ zl$ docker commit 143456e73cb8 python3env
sha256:0fe972bd9dac852e216abb18de9895862cbafe5a4a36e58fef596d160b460394

zldeAir-5:~ zl$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
python3env          latest              0fe972bd9dac        6 seconds ago       607MB

测试该环境是否是我们想要的。进入容器互动:

zldeAir-5:~ zl$ docker run -i -t python3env /bin/bash
root@1d8cb40a913a:/celery_test# python3
>>> import 导入的包名

没有报错就说明ok了。

python3env 有三个镜像层了,除了前面两个,再次增加了,各种库下载的第三个镜像层。

4.使用Dockerfile定制镜像

使用docker commit命令可以比较直观的帮助理解镜像分层存储的概念,但是实际环境中并不会这样使用。使用docker commit意味着所有对镜像的操作都是黑箱操作,生成的镜像也被称为黑箱镜像,换句话说,就是除了制作镜像的人知道执行过什么命令、怎么生成的镜像,别人根本无从得知。
这个时候就要用到Dockerfile。把每一层修改、安装构建、操作的命令都写入Dockerfile,用这个脚本来构建、定制镜像。

4.1 创建Dockerfile文件 Dockerfile使用说明
# 第一种写法,按照上面说的流程,可以这样写。但是并不建议
FROM ubuntu

RUN apt-get install -y python3
RUN apt-get install -y python3-pip

COPY . .

RUN pip install -r requirements.txt

# 第二种写法,推荐使用该写法
FROM python:3.6

COPY . .

RUN pip install -r requirements.txt
4.2 测试该镜像

在Dockerfile根目录下,输入以下代码

zldeAir-5:celery_test zl$ docker build -t vivi/python36 .
zldeAir-5:celery_test zl$ docker images

结果
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
vivi/python36       latest              c87219b7e326        3 minutes ago   

注意第一行代码最后的。可以看见创建了该镜像。

zldeAir-5:celery_test zl$ docker run vivi/python36 python3 add.py
7

创建镜像成功。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值