容器化技术与容器服务
本次实验在VMWare虚拟机+Ubuntu20.04环境下完成。
准备docker环境
安装
-
配置docker的apt源
$ sudo apt-get update
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common -
添加 Docker 的官方 GPG 密钥:
-
将 Docker 的源添加到 /etc/apt/sources.list
$ sudo add-apt-repository \ “deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable”
-
更新包索引,安装最新版本的Docker 引擎和容器
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
检查docker安装
结果如下图,证明已成功安装docker。
运行第一个容器
Docker 基本操作
-
运行镜像
在这一步如果直接运行下述命令会导致下载速度十分缓慢。docker run -it ubuntu bash
因此,参考博客重新配置了拉取的docker镜像仓库,配置后执行命令速度有显著提升。具体结果如下:
-
显示本地镜像库内容
-
显示运行中容器
-
显示所有容器
-
继续运行原容器并进入
MySQL与容器化
拉取 MySQL 镜像
- 拉取 MySQL 镜像
- 显示本地镜像库内容
由结果可见,已成功拉取 MySQL 镜像。
构建docker镜像练习
- 创建dockerfile
- 录入dockerfile
- 构建镜像
- 运行镜像
使用MySQL容器
- 启动服务器
- 启动 MySQL 客户端
使用MySQL容器(挂载卷保存db)
- 数据库文件的位置
- Dockerfile 的 VOLUME /var/lib/mysql 的含义
每次启动 mysql 容器,docker 创建一个文件卷挂载在容器内/var/lib/mysql位置。这个卷在主机(host)的 /var/lib/docker/volumes/ 目录下。 - 创建卷并挂载
将自己定义的数据卷挂载在 /var/lib/mysql下。
- 启动客户端容器链接服务器
Docker compose 与多容器应用自动化部署
- 下载:docker-compose(容器编排的原型)
- 创建并编写:stack.yml
- 启动服务
Docker网络
管理容器网络
备制支持 ifconfig 和 ping 命令的 ubuntu 容器
$ apt-get install net-tools
$ apt-get install iputils-ping -y
启动另一个命令窗口,由容器制作镜像,并创建自定义网络
Docker 仓库(Registry)
- 访问 https://cr.console.aliyun.com,用淘宝注册一个账号,选择“容器镜像服务”。
- 完成上传 hello-world 镜像操作
查看仓库结果如下,可以看出上传成功。
容器监控与日志
检查docker的状态
命令如下:
$ docker info
$ docker info --format {{.ServerVersion}}
结果如下:
(输出较长未全部截图)
查看容器内进程
命令如下:
$ docker top mysql2
$ docker stats mysql2
结果如下:
容器详细信息
命令如下:
$ docker inspect mysql2
$ docker inspect -f ‘{{.NetworkSettings.IPAddress}}’ d098beec6b02
结果如下:
容器日志查看
命令如下:
$ docker logs d098beec6b02
$ docker logs --tail 2 d098beec6b02
结果如下:
docker图形化管理工具
单节点运行