容器化技术和容器服务
一、实验目的
- 了解容器化服务并掌握docker的基本使用
二、实验环境
- 实验环境:VM虚拟机
- 系统:Ubuntu 16.04
三、实验过程
3.1 docker安装
由于老师给的版本为Centos系统的安装方法,个人虚拟机为Ubuntu,所以自己在网上找到其他方法进行安装
首先查看系统的内核版本是否符合安装docker的要求
uname -r
- 之后查询是否已经安装了docker,如果已经安装,则删除原版本重新安装
- 这里我之前并没有安装,所以删除为空
- 首先更新apt-get
- 然后添加Docker官方的GPG密钥
- 配置stable存储库
- 安装最新版本的Docker CE:
sudo apt-get install -y docker-ce
- 验证安装成功:
systemctl status docker
- 查看版本:
docker version
3.2 运行第一个容器
- 我们首先运行我们第一个程序hello world
- 首先获取image并运行:
docker run hello-world
- 可以看到成功输出 Hello from Docker!
3.3 docker基本操作
按照课件顺序执行命令:
docker run -it ubuntu bash
-
这里我们使用了-it参数来令终端与容器进行交互,具体操作见下面的restart后的操作
-
查看镜像内容:
docker images
- 查看正在运行容器:
docker ps
- 查看运行中和中止容器
docker ps -a
- 查看帮助
docker --help
- 重启已经中止的容器并进入
docker restart { ID }
docker ps
- 可以看到ubuntu容器正在运行
docker attack { ID }
- 进入之后我们在容器ubuntu中查看文件结构,使用ls命令可以查看容器内部结构如下所示
3.4 Mysql 容器化并使用Volume创建卷
我们这里拉取mysql镜像容器使用,这里由于比较大,所以建议先换一下源,否则下载时间过长
- 拉取Mysql镜像
docker pull mysql:5.7
- 查看现有镜像
docker images
- 之后启动Mysql的服务端:
sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
- 启动Mysql客户端:
docker run -it --net host mysql:5.7 "sh"
- 登录Mysql账户:
mysql -h127.0.0.1 -P3306 -uroot -proot
- 查看Mysql容器的数据库文件配置:
docker exec -it mysql2 bash
- 查看数据库的卷:
docker container prune -f
docker volume prune –f
docker volume ls
每次启动 mysql 容器,docker 创建一个文件卷挂载在容器内/var/lib/mysql位置,我们这里按照课件手动创建卷并挂载它
docker rm $(docker ps -a -q) -f -v
docker volume create mydb
docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v mydb:/var/lib/mysql -d mysql:5.7
- 启动客户端容器并连接服务器
docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash
- 登录数据库:
成功登录
3.5 构建docker镜像
按照课件方法构建一个docker镜像
- 首先创建文件夹并编辑dockerfile
mkdir mydock && cd mydock
vi dockerfile
- 在dockerfile中加入如下代码
FROM ubuntu
ENTRYPOINT [“top”, “-b”]
CMD ["-c"]
- 构建镜像:
docker build . -t hello
- 运行镜像:
docker run -it --rm hello -H
- 运行结果为一直输出如下内容
3.6 docker网络
- 管理容器网络:
docker network ls
-
建立支持 ifconfig 和 ping 命令的 ubuntu 容器
-
这里我门使用老师课件代码进行
-
完成之后我们查看命令是否能够使用:
-
查看ip:
-
尝试ping:(这里的ip地址由上方ifconfig中的ip得出)
-
启动另一个命令窗口,由容器制作镜像
docker commit unet ubuntu:net
- 创建自定义网络mynet
docker network create mynet
- 之后按照课件要求,在另外的命令行窗口建立u1和u2网络,并使用课件命令验证,结果如下:
创建u1
创建u2
查看状态信息(这里显示部分)
3.7 docker仓库
首先我们先登录阿里云建立我们的容器镜像仓库,之后进行接下来的操作来进行对于远程仓库的操作,按照课件完成即可
-
登录:
-
标签
-
上传
-
删除
-
运行:
退出:
3.8 docker监控与日志
- 检查docker状态:
docker info
- 查看容器进程:
Docker top
Docker stats
//查看容器详细信息
docker inspect -f
四、实验心得
本次实验主要了解了应用容器化的技术,你不可能在系统上运行100个虚拟机,但是可以运行100个容器,以及了解了docker的基本使用,以及网络、数据库、基本查询操作和创建操作,对于以后使用docker奠定了基础