第1次实践作业
(1)课程调查
进入大三下学期的后半段,大学阶段的理论课程应该已经修得八九不离十了,在这个时间点迎来系统综合实践这门课,作为培养计划的一门新课程,我们非常希望了解你们对于课程的希望,请写下你对这门课的认识和你理想中的这门课程是怎么样的。
- 课程认识:系统综合实践是一门让计算机学生在学习理论知识的同时进行应用的课程,把平时课堂上和课外所学来充分体现在实践当中
- 理想课程:老师给予实践方向和实践硬件等帮助,同学之间组队互相指导,各种问题都有老师或者学生答疑解惑,多加锻炼计算机学生的动手实践能力和协作能力
(2)了解微服务
第一次作业我们将接触一种新型的软件架构——微服务(也许部分同学已经有所了解)。大家要做的是学习并了解该技术,微服务是什么,有什么特点,相较于传统的软件架构,它有什么优缺点,它是怎样部署的。
微服务是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
特点:
- 能独立自主动作(独立布署,升级维护,改写)
- 包含程序(code)的执行,与状态(state)
- 微服务之间,必须透过定义好的界面沟通
- 单一服务发生故障,系统仍能保持一致性与可用性
优点:
- 往往比传统的应用程序更有效地利用计算资源
- 更快且更容易更新
- 微服务架构有助于新兴的云服务,如事件驱动计算
缺点:
- 开发效率低:所有的开发在一个项目改代码,递交代码相互等待,代码冲突不断
- 代码维护难:代码功能耦合在一起,新人不知道何从下手
- 部署不灵活:构建时间长,任何小修改必须重新构建整个项目,这个过程往往很长
- 稳定性不高:一个微不足道的小问题,可以导致整个应用挂掉
- 扩展性不够:无法满足高并发情况下的业务需求
(3)学习docker技术
Unbuntu下的Docker安装
更新 apt 包索引。
$ sudo apt-get update
安装前更新软件源
$ sudo apt-get update
安装以下包使apt可以通过HTTPS使用存储库(repository)
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
添加Docker官方的GPG密钥
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
设置stable存储库
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
再次更新软件源
$ sudo apt-get update
安装最新版的docker ce(Community Edition)
$ sudo apt-get install -y docker-ce
查看docker状态
$ systemctl status docker
启动docker
$ sudo systemctl start docker
运行helloworld,结束安装
$ sudo docker run hello-world
Docker 镜像加速
在阿里云获取镜像加速地址后,通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
容器的创建、删除、更新和查询
载入 ubuntu 镜像
$ docker pull ubuntu
使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器
$ docker run -it ubuntu /bin/bash
参数说明:
- i:交互式操作。
- t:终端。
- ubuntu:ubuntu 镜像。
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
查看当前操作系统版本信息
# cat /proc/version
退出终端
# exit
查看正在运行的容器
$ docker ps
查看所有的容器
$ docker ps -a
使用 docker start 启动一个已停止的容器
$ docker start f991856d432b
进入容器
$ docker exec -it f991856d432b /bin/bash
删除容器
$ docker rm -f f991856d432b
创建并维护自己的镜像仓库
列出镜像列表
$ docker images
查找镜像
$ docker search httpd
删除镜像
$ docker rmi hello-world
在阿里云上创建镜像仓库的命名空间和镜像仓库
实现拉取和上传镜像
登入和登出
$ docker login registry.cn-hangzhou.aliyuncs.com
$ docker logout
从registry中拉取镜像
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/msj/image-test:[镜像版本号]
复制镜像ID并设置tag
$ docker tag 77be327e4b63 registry.cn-hangzhou.aliyuncs.com/scp/dep:v1
上传镜像到阿里云镜像仓库
$ docker push registry.cn-hangzhou.aliyuncs.com/scp/dep:v1
push成功后可以在阿里云镜像仓库里看到
遇到的问题
这次实践碰到的问题实在是太多啦!!!数不胜数
我还忘记记录下来了!
下次一定!
在往阿里云上 push 本地镜像的时候报错 denied: requested access to the resource is denied
关于原因和解决方法,在网上查了,说法不一。各种方式都尝试过一直是不行。
后来更改了登陆harbor仓库的login代码突然就可以了
一开始出错时的登陆方式
更改后可以的方式
不太懂这两个有啥差别,前一个就是死活push不上去