山东大学 计算机科学与技术 学院

云计算技术 课程实验报告

学号:202000130199 姓名: 荆树吉 班级: 20 数据
实验题目:虚拟化技术练习四Docker
实验学时:2 实验日期: 2023.4.15

实验目的:

熟悉Docker虚拟化环境。

具体包括:了解Docker虚拟化环境的配置和部署,完成实验环境及实验工具的熟悉,包括使用官方镜像运行容器,以及借助官方镜像构建、运行自己的镜像和容器,撰写实验报告。

硬件环境:

联网的计算机一台

软件环境:

.15.0-69-generic #76~20.04.1-Ubuntu SMP Mon Mar 20 15:54:19 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

实验步骤与内容:

  1. 了解Docker虚拟化环境的配置和部署

    sudo apt-get -y install docker.io

    安装完成后执行 docker,表明安装成功。

    sudo docker pull ubuntu

    安装完成之后默认会启动docker服务,如果没有启动和正常服务一样启动就好

    docker version

    docker version

  2. 使用官方镜像运行容器

    查看下载到本地的所有镜像

    docker images

    docker images

    查看容器

    docker ps -a

    查看容器

    删除镜像

    docker rmi +镜像名

    docker rmi +镜像标签

    删除镜像

    下载镜像

    docker pull +镜像名

    下载镜像

    查看是否拉入镜像

    查看是否拉入镜像

    已拉入

    创建容器

    docker create -it cengos:7 /bin/bash //创建一个新的容器但不启动它 #/bin/bash 交互 对应的镜像名

    #选项:

    -i : 让容器的标准输入保持打开

    -t : 分配一个伪终端

    -d : 后台守护进程的方式运行

    #去查询容器会发现状态为Created

    查看容器

    启动容器

    docker start 容器ID

    打开刚刚创建的容器

    启动容器

    停止容器

    docker stop 容器id

    停止刚刚打开的容器

    停止容器

    容器已经被停止

  3. 借助官方镜像构建、运行自己的镜像和容器

    ① 建立dockerfile文件

    (1) 新建工作目录dockertest,并新建Dockerfile。使用的命令如下:

    mkdir dockertest

    cd dockertest

    touch Dockerfile

    ​ 使用ls查看当前目录下的文件

    查看当前文件

    (2) 使用vim编辑Dockerfile

    vim编辑Dockerfile

    其中,

    FROM :定制的镜像都是基于 FROM 的镜像,也就是说,你的docker容器的系统。这里用的是ubuntu:latest,详细用法不再这里介绍,你可以在dockerhub上找其他的镜像。

    WORKDIR:你的工作目录,当你运行容器后,是一个ubuntu系统,在根目录会建立一个Mydata的目录。

    RUN:你可以暂且理解为制定镜像时,为ubuntu系统配置环境,安装一些包的命令执行过程。这里的run是我要配置一个opencv环境所要进行的操作,你可以按照你自己的需求来。

    CMD:执行docker run时默认执行的命令,docker在运行时可以指定新的命令来替代镜像设置中的这个默认命令,比如,ubuntu 镜像默认的 CMD 是 /bin/bash,如果我们直接 docker run -it ubuntu 的话,会直接进入 bash。我们也可以在运行时指定运行别的命令,如 docker run -it ubuntu cat /etc/os-release。这就是用 cat /etc/os-release 命令替换了默认的 /bin/bash 命令了,输出了系统版本信息。

    ② 制作docker镜像

    在有Dockfile的这个目录下,执行该命令:

    ​ sudo docker build -t ubuntudocker:new .

    ​ 由于自建的镜像较大,故只提供部分截图

    建立镜像

    ​ 可以使用下面的命令浏览有哪些镜像:

    浏览镜像

    ③运行docker容器

    运行并使用容器

    内部容器已经可以使用python3.10.6环境

    打包镜像同上

结论分析与体会:

docker是一种轻量级的虚拟机,docker是一个用于开发、交付、和运行应用程序的开放平台。

在linux容器里运行的开源工具:容器引擎,让开发者可以打包大量的应用及依赖包到一个可移植的镜像中,然后发布到任何流行的linux或者window机器中

进行实验的过程中需要不断的安装新的环境,要注意环境的兼容性

自己镜像的创建很费时间

docker引擎统一了基础设施环境–docker环境

docker引擎统一了程序打包(装箱)方式,docker镜像(把引擎放在镜像中,带着经i选哪个到处跑

docker引擎统一了程序部署(运行)方式–docker容器(利用引擎把这个镜像再去运行为之前的一摸一样的容器)