应用容器化
文章目录
作业要求
参考:玩转 Docker 容器技术:1-6章,按课件内容实践,并给出实验报告。
实验大纲
本次实验我完成了docker环境的部署、docker的基本操作、部署mysql、容器化、volume的挂载
实验环境
VMware CentOS7 虚拟机。
虚拟机安装过程参考博客
安装docker
安装前需要在cmd输入’su‘然后输入root用户密码进入root账户。
首先要安装依赖的软件包。安装 yum-utils,yum-utils提供yum-config-manager,devicemapper存储驱动程序依赖device-mapper-persistent-data和lvm2。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
接下来要设置稳定的储存库。
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
然后安装最新版的Docker Engine-Community和containerd。
sudo yum install docker-ce docker-ce-cli containerd.io
安装完成后的终端输出如下:
启动docker
sudo systemctl start docker
为了验证是否正确安装了Docker Engine-Community,试着运行hello-world镜像。
sudo docker run hello-world
但本地并不存在hello-world镜像,因此会有一个拉取镜像文件的过程,如果终端显示“Hello from Docker”,则表明安装成功。
如图:
我们还可以检测docker的版本号。
docker version
docker基本操作
运行镜像
刚刚运行hello-world镜像是用于检测的,下面运行ubuntu镜像。
docker run -it ubuntu bash
如果直接运行会发现拉取速度非常慢甚至卡住,添加docker 的镜像源可以有效解决这个问题,具体参考博客。
运行结果如下:
可以用以下命令显示本地镜像库的内容。
显示本地镜像库内容
输入以下命令可以看到本地镜像库的内容,里面包含刚刚拉取的hello-world镜像和ubuntu镜像。
docker images
显示运行中的容器
输入docker ps
可以看到y运行中的容器,但当前没有运行中的容器,所以显示为空。
显示所有容器
输入docker ps -a
可以看到所有容器,包括ubuntu还有我测试了很多次的hello-world。。。
重新运行原容器
可以看到每个容器都有一个NAMES属性,输入以下命令可以重新运行某个容器并进入。
docker restart $NAMES
docker ps
dockerr attach $NAMES
我重新运行ubuntu容器,结果如下:
MySQL与容器化
拉取MySQL镜像
输入docker pull mysql:5.7
拉取镜像:
输入docker images
检测镜像拉取是否成功:
构建docker镜像
首先创建一个文件夹,命名为docker,进入并创建一个Dockerfile文件。
Dockerfile文件输入以下内容(sudo vi Dockerfile
):
运行命令docker build . -t hello
构建镜像hello
然后运行镜像,检测其是否构建成功:
docker run -it --rm hello -H
使用MySQL容器
首先输入以下命令以启动服务器:
sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
输出结果如下:
输入以下命令凭借用户名和密码打开数据库端口:
docker run -it --net host mysql:5.7 "sh"
mysql -h127.0.0.1 -P3306 -uroot -proot
然后创建卷mydb并挂在/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
输入以下两个命令以连接两个容器,使得客户端容器内可以使用mysql这个别名访问服务器:
docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash
mysql -hmysql -P3306 -uroot -proot
搭建私有容器仓库
输入以下命令来启动仓库容器:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
从Docker Hub上拉取ubuntu:16.04镜像,并且重新标记其为my-ubuntu,然后将它到本地registry,删除两个镜像,把my-ubuntu镜像从本地registry移除。
输入命令docker pull ubuntu:16.04
拉取镜像:
输入命令docker tag ubuntu:16.04 localhost:5000/my-ubuntu
为镜像创建一个附加的标签。
输入命令docker push localhost:5000/my-ubuntu
将镜像推送到localhost:5050运行的本地仓库。
删除本地缓存ubuntu:16.04和localhost:5000/my-ubuntu 镜像:
docker image remove ubuntu:16.04
docker image remove localhost:5000/my-ubuntu
从localhost:5050中把镜像拉取出来:
docker pull localhost:5000/my-ubuntu
最后用以下命令停止并删除本地仓库:
docker container stop registry
docker container rm -v registry