Week16-容器化技术与容器服务

作业内容

参考:玩转 Docker 容器技术:1-6章 ,按课件内容实践,并给出实验报告。

操作系统

本文是基于CentOS7进行的实验。

安装Docker

安装过程

我用的是CentOS,用国内阿里云安装,运行以下命令:

//安装 yum-utils , 使用 yum-config-manager 工具设置Yum源, 后面两个是 devicemapper驱动依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
//使用阿里源访问
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
//查看指定版本
yum list docker-ce --showduplicates
//安装指定版本
sudo yum install -y --setopt=obsoletes=0 \
   docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
   docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
//启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker

过程中,我出现了以下问题,原因是没有把当前用户加入docker用户组,解决方法见此链接
在这里插入图片描述

验证安装成功

在终端输入docker version,可以看到client和server的信息:
在这里插入图片描述

运行第一个容器

按照老师的PPT,输入docker run hello-world运行hello-world镜像:
在这里插入图片描述
输入以下指令docker run -it ubuntu bash运行Ubuntu镜像:
在这里插入图片描述

Docker基本操作

显示本地镜像库内容

输入docker images可以看到本地已经有了刚刚下载的ubuntu和hello-world镜像:
在这里插入图片描述

显示运行中的容器

输入docker ps,由于没有运行中的容器,所以内容为空:
在这里插入图片描述

显示所有容器(包含已中止)

输入docker ps -a,可以看到已经中止的ubuntu和hello-world容器:
在这里插入图片描述

继续运行原容器并进入

根据容器的NAMES属性输入以下命令来重新运行ubuntu容器:

docker restart $NAMES
docker ps
dockerr attach $NAMES

在这里插入图片描述

MySQL与容器化

拉取MySQL镜像

输入docker pull mysql:5.7拉取镜像:
在这里插入图片描述
再输入docker images检查镜像是否下载成功:
在这里插入图片描述

构建docker镜像

使用MySQL容器构建文件Dockerfile来构建镜像,它的常见指令如下:
在这里插入图片描述

  • 创建文件夹
    新建一个文件夹mydock,并在里面创建一个dockerfile:
    在这里插入图片描述
  • 录入dockfile内容
    在这里插入图片描述
  • 构建镜像
    运行命令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
    
    在这里插入图片描述
  • 启动MySQL客户端
    输入以下命令凭借用户名和密码打开数据库端口:
    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
    
    在这里插入图片描述
  • 启动客户端容器链接服务器
    使用``–link```连接两个容器,使得客户端容器内可以使用mysql这个别名访问服务器:
    docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash
    mysql -hmysql -P3306 -uroot -proot
    
    在这里插入图片描述

Docker仓库(Registry)

registry是registry映像的一个实例,在Docker中运行。我将根据官网指南搭建私有容器仓库。

运行本地仓库

使用以下命令来启动仓库容器:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
在这里插入图片描述

将映像从Docker Hub复制到registry

以下示例表示从Docker Hub上拉取ubuntu:16.04镜像,并且重新标记为my-ubuntu,然后把它推送到本地仓库。最后删除掉ubuntu:16.04my-ubuntu镜像,把my-ubuntu镜像从本地仓库移除。

  • 拉取ubuntu:16.04镜像
    输入命令:docker pull ubuntu:16.04
    在这里插入图片描述
  • 将镜像标记为localhost:5000/my-ubuntu。这将为现有镜像创建一个附加标签。当标签的第一部分是主机名和端口时,推入时Docker会将其解释为仓库的位置。
    输入命令:docker tag ubuntu:16.04 localhost:5000/my-ubuntu
  • 将镜像推送到在localhost:5000运行的本地仓库
    输入命令:docker push localhost:5000/my-ubuntu
    在这里插入图片描述
  • 删除本地缓存ubuntu:16.04和localhost:5000/my-ubuntu 镜像,可以测试从仓库拉取镜像。这不会从仓库中删除localhost:5000/my-ubuntu镜像。
    输入命令:
    docker image remove ubuntu:16.04
    docker image remove localhost:5000/my-ubuntu
    
    在这里插入图片描述
  • 把localhost:5000/my-ubuntu镜像从仓库中拉取出来
    输入命令:docker pull localhost:5000/my-ubuntu
    在这里插入图片描述
停止本地仓库
  • 停止仓库,可以用以下命令,和停止容器一样的操作:
    docker container stop registry
  • 删除仓库,用以下命令:
    docker container rm -v registry
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值