【服务计算】十一 Docker技术

本文围绕Docker展开实验,介绍其是利用Linux内核功能的容器工具,能提供资源隔离。实验在VirtualBox下Ubuntu 20.04系统进行,包含安装Docker、运行容器、配置国内镜像、MySQL容器化、创建不同类型网络、搭建仓库、使用图形化管理工具等内容。

概述

Docker是一种使用Linux内核功能的容器工具,如cgroups和命名空间,它能提供网络、文件和内存资源的隔离,而无需依靠一个完整的虚拟机。最近,Docker一直保持巨大的发展势头,并且应用在越来越多的行业中。
Docker能够帮助我们创建一个固定的软件版本,它可以在任何地方运行,无论目的环境中有没有安装该软件(但是必须安装Docker)。例如,如果向Docker Hub(http://hub.docker.com)部署一个包含服务的Docker镜像,那么在机器上安装了Docker的任何人都可以运行该服务,不必担心依赖项的安装,不必考虑编译器或任何其他需要支持的基础设施,开发机器也不会因为安装了这个服务的配置和依赖项而受影响。所有内容都包含在Docker镜像中。

Docker可以说是服务的最佳载体。使用Docker实现容器化具有如下的优点:

  • 灵活:即使是最复杂的应用也可以容器化。
  • 轻量:容器是进程,能利用并共享主机操作系统内核。
  • 替换:可以即时部署更新和升级容器。
  • 便携:可以在本地构建,部署到云并在任何地方运行。
  • 扩展:您可以增加并自动分发容器副本。
  • 组合:您可以自由地组合(stack)服务。

实验内容

主要包括安装docker,运行第一个容器,配置国内镜像地址,MySQL与容器化,Docker网络,Docker仓库,Docker图形化管理工具等几个部分。

操作系统

按照实验要求,结合自己的电脑设备与系统等条件,使用VirtualBox下Ubuntu 20.04系统完成实验。虚拟机相关设置与上一次实验相同。

环境准备

虚拟机下的实验环境与上一次实验的相同,不需要额外的配置。

实验过程

安装docker

更新与安装相关包

执行如下更新命令:
在这里插入图片描述
之后安装如下包,允许 apt 命令 HTTPS 访问 Docker 源:
在这里插入图片描述
之后添加 Docker 官方的 GPG:
在这里插入图片描述
之后核对fingerprint是否一致:
在这里插入图片描述
之后将 Docker 的源添加到 /etc/apt/sources.list:
在这里插入图片描述

安装docker

之后安装Docker:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

检查是否成功安装

然后查看docker版本,检查是否成功安装:
在这里插入图片描述
发现上面提示说权限不足,这是因为docker进程使用Unix Socket访问而不是 TCP 端口访问。而默认情况下,Unix socket 属于 root 用户,因此需要 root权限才能访问。

因此执行下面的命令:
在这里插入图片描述
再次查看docker版本,检查是否成功安装:
在这里插入图片描述
以上结果说明成功安装了docker。

运行第一个容器

在这里插入图片描述
可以看到如上的第一个容器hello-world运行成功。

配置国内镜像地址

拉取容器时如果发现速度很慢:
在这里插入图片描述
那么可以添加国内镜像地址。首先编辑daemon.json文件(没有该文件则新建):
sudo gedit /etc/docker/daemon.json

然后插入以下镜像地址:

{
  "registry-mirrors": [
    "https://9cpn8tt6.mirror.aliyuncs.com",
    "https://8bhew391.mirror.aliyuncs.com",
    "https://almtd3fa.mirror.aliyuncs.com",
    "https://hccwwfjl.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com"
  ]
}

之后重启Docker服务:
在这里插入图片描述
之后重新pull时可以发现速度明显变快了。
在这里插入图片描述

MySQL 与容器化

拉取mysql

首先拉取mysql容器:
在这里插入图片描述

创建mysql docker

之后创建并打开Dockerfile,
在这里插入图片描述在这里插入图片描述

写入以下内容:
FROM ubuntu
ENTRYPOINT [“top”, “-b”]
CMD ["-c"]

再创建镜像:

在这里插入图片描述

运行镜像

之后运行镜像:
在这里插入图片描述

使用mysql容器

之后使用mysql容器:
在这里插入图片描述
可以查看到对应的mysql docker正在运行:
在这里插入图片描述

连接mysql容器服务器

然后启动mysql客户端:
在这里插入图片描述
可以看到成功连接上了服务器。

可以用如下命令查看到数据库文件的存放位置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到,每一次启动 mysql 容器,docker 创建一个文件卷挂载在容器内/var/lib/mysql位置,这个卷在主机(host)的 /var/lib/docker/volumes/ 目录下。

Docker网络

用如下命令获得当前容器网络:
在这里插入图片描述
备制支持 ifconfig 和 ping 命令的 ubuntu 容器:
在这里插入图片描述
在这里插入图片描述
启动另一个命令窗口,由容器制作镜像:
在这里插入图片描述
创建自定义网络:
在这里插入图片描述
在两个窗口创建 u1,u2 容器网络,并使用以下命令
在这里插入图片描述
在这里插入图片描述
之后输入以下命令与u1网络交互:
在这里插入图片描述
在这里插入图片描述

创建不同类型的网络

创建none网络:
在这里插入图片描述
创建host网络:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建网段为172.22.16.0/24,网关为172.22.16.1的bridge网络:
在这里插入图片描述

在这里插入图片描述
可以看到分配的地址是172.22.16.255。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主机ip为10.0.2.15,发现可以ping通主机:
在这里插入图片描述

Docker仓库

创建本地仓库并复制镜像到仓库:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
之后可以发现,如果将本地的ubuntu:16.04删除后,还可以从仓库pull下来:
在这里插入图片描述
在这里插入图片描述
检查docker的状态:
在这里插入图片描述
查看容器内进程:
在这里插入图片描述

Engine API与开发:


在这里插入图片描述
根据上面返回的Id发出下列请求:
在这里插入图片描述

docker图形化管理工具

在这里插入图片描述
之后在浏览器打开对应地址127.0.0.1:9000,就会发现成功运行了docker。
在这里插入图片描述
第一次运行的时候需要设置账号,然后可以进入管理Docker 主机的界面:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值