容器环境的安装和程序开发实验报告

一、实验目的

  1. 了解Docker相关知识
  2. 测试Docker基本操作
  3. 创建一个 Docker 应用程序

二、实验环境

容器需要管理工具、runtime 和操作系统,我们的选择如下:
1. 管理工具 - Docker Engine
因为 Docker最流行使用最广泛
2. runtime - runc
Docker 的默认 runtime
3. 操作系统 - Ubuntu
虽然存在诸如 CoreOS的容器 OS,因考虑到我们目前处于初学阶段,选择大家熟悉的操作系统更为合适。等具备了扎实的容器基础知识后再使用容器 OS 会更有利。

三、实验原理

Docker是一种构建在LXC之上,基于进程容器的轻量级虚拟化解决方案,实现了应用程序级别的资源隔离。通过Docker技术,开发者把应用以及依赖包封装到一个镜像中,可以发布到Linux或Windows机器上。
Docker镜像就像停止运行的容器,镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包。Docker镜像存储在镜像仓库服务(Image Registry)当中。Docker客户端的镜像仓库服务是可配置的,默认使用Docker Hub。镜像仓库服务包含多个镜像仓库(Image Repository)。同样,一个镜像仓库中可以包含多个镜像。
容器是镜像的运行时实例。正如从虚拟机模板上启动VM一样,用户也同样可以从单个镜像上启动一个或多个容器。虚拟机和容器最大的区别是容器更快并且更轻量级——与虚拟机运行在完整的操作系统之上相比,容器会共享其所在主机的操作系统/内核。容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指定端口映射。
容器之间可通过IP、Docker DNS Server或joined容器三种方式通信。两个容器要能通信,必须要有属于同一个网络的网卡。满足这个条件后,容器就可以通过IP交互了。具体做法是在容器创建时指定相应的网络,或者将现有容器加入到指定网络。通过IP访问容器虽然满足了通信的需求,但还是不够灵活。因为我们在部署应用之前可能无法确定IP,部署之后再指定要访问的IP会比较麻烦。对于这个问题,可以通过docker自带的 DNS 服务解决。从 Docker 1.10 版本开始,docker daemon实现了一个内嵌的DNS server,使容器可以直接通过“容器名”通信。但使用 docker DNS 有个限制:只能在user-defined网络中使用。也就是说,默认的bridge网络是无法使用DNS的。joined容器可以使两个或多个容器共享一个网络栈,共享网卡和配置信息,joined容器之间可以通过127.0.0.1直接通信。
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。

四、实验步骤及结果

1. 在虚拟器上安装docke

在Ubuntu系统上安装Docker引擎。可以通过以下命令在终端中安装Docker:
(1)首先,更新包
$ sudo apt update
在这里插入图片描述
(2)接下来,使用 apt-get 安装 docker
$ sudo apt install docker.io
在这里插入图片描述
(3)最后,验证Docker是否安装正确
$ sudo docker run hello-world
在这里插入图片描述

2.创建一个自己的项目

为了创建第一个 Docker 应用程序,需要计算机上创建一个文件夹。它必须包含以下两个文件:
通常这个文件夹架构如下:
.
├── Dockerfile
└── main.py
0 directories, 2 files
(1)一个“ main.py ”文件(将包含要执行的代码的 python 文件)。
其创建命令如下:
Touch mian.py
(2)一个“ Dockerfile ”文件(包含创建环境所需指令的 Docker 文件)。
其创建命令如下:
Touch Dockerfile
在这里插入图片描述

3.编辑Python文件

将以下代码添加到“ main.py ”文件中:
#!/usr/bin/env python3
print(“Docker is magic!”)
一旦 “ Docker is magic!” 显示在终端中,就说明 Docker 正在运行。
在这里插入图片描述

4.编辑Docker文件

我们的目标是启动 Python 代码。为此,我们的 Docker 必须包含启动 Python 所需的所有依赖项。一个安装了 Python 的 linux (Ubuntu) 就足够了。
创建 Docker 文件时要执行的第一步是访问DockerHub网站。该站点包含许多预先设计的图像以节省您的时间(例如:所有图像用于 linux 或代码语言)。
在我们的例子中,我们将在搜索栏中输入“Python”。第一个结果是为执行 Python 而创建的官方镜像。完美,我们将使用它!
将以下代码添加到Docker文件中:
在这里插入图片描述

5.创建 Docker 镜像

一旦代码准备就绪并编写了 Dockerfile,要做的就是创建包含应用程序的映像。
在终端中输入以下命令:
$ docker build -t python-test .
在这其中“ -t ”选项允许定义图像的名称。在我们的例子中,我们选择了“ python-test ”,但可以输入想要的内容。
在这里插入图片描述

6.运行Docker镜像

创建图像后,代码就可以启动了。
在终端中输入以下命令:
$ docker run python-test
将图像名称放在“ docker run ”之后。
通常应该看到“Docker is magic!” 显示在终端中。
在这里插入图片描述

五、实验总结

1、实验过程中遇到的问题及解决办法;
遇到的问题:1、对docker的一些命令不是很熟悉。2、Ubuntu上Linux系统与Windows系统有一样的地方也有区别,例如对文件读写时可能会因为权限问题造成不能读写。3、列出镜像列表失败。4、在容器中找不到ip a命令。5、输入docker指令时有时候宿主机会因为权限不够报错。
解决办法:1、查阅相关资料,进行了解,从而完成实验。2、需要进入root对相关权限文件进行修改。在权限文件中添加用户之后便可以顺利对文件进行读写操作了。3、需要先启动docker,在列出镜像列表。4、进行资源更新和升级(apt-get update/apt-get upgrade)。5、在原来docker指令前加sudo就可以不报错了。
2、设计及调试过程中的心得体会。
通过本次实验,了解了Linux操作系统和容器及其常见命令,小组沟通融洽,互相帮助,很快进入状态,完成对docker容器环境的安装和程序的开发,同时我还意识到,对于知识的学习,最终还是要动手实践,进行应用,才能理解的更加深刻,在实验过程中也遇到了一些问题,最终也都通过上网查阅资料分析原因而解决。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值