使用下列命令检查版本:
docker --version
使用下列命令查看详细的版本信息:
docker version
使用”下列命令可以将Docker设置为开机启动:
systemctl enable docker
更多有关Docker的信息,读者可以到其官方网站查看。
docker-compose 的下载及配置
docker-compose是一个通 过编排脚本来使用Docker引擎的工具组件,这一工具组件使得我们不必记住那么多的命令和配置参数,即可更加方便和快速地进行应用的部署和更新。
使用下列命令可以将已经编译的docker- compose下载到本地系统中:
curl -L https://github.com/ docker/compose/ releases/download/1.16.0-rc2/
docker-compose- uname -s’-'uname -m > /usr/local/bin/docker-compose
其中,“1.16.0-rc2” 为版本号,可以先从GitHub上查看docker-compose的最新版本,然后更改.上面命令中的版本号,即可下载最新的版本。
下载完成后执行下列命令,更改docker-compose的执行权限:
chmod +x /usr/ local/bin/docker-compose
使用下列命令查看docker compose的版本号:
docker-compose version
执行下列命令可以输出docker -compose的完整帮助信息:
docker-compose -h
对于docker-compose,我们常用的命令有build、up、ps、 start、 stop、 down 和logs等。如果要发布一个微服务,则只需使用一个up命令就足够了。
另外,还可以使用help命令查看每一-个命令的详细帮助信息。例如,可以使用下列命令查看down命令的使用说明:
docker -compose help down
使用Docker方式发布微服务
===============
在使用Docker运行一个服务时,首先必须创建这个服务的镜像,然后使用这个镜像创建容器并运行服务。在同一主机中,一个镜像可以创建多个容器副本,所以在-一个主机中,也可以为所部署的服务做有限度的扩展部署。
镜像创建 及其生成脚本
在创建镜像时,我们需要一个生成脚本, 然后将脚本文件与Jar 包- -起上传到服务器的特定目录中,这样就可以用来生成应用的镜像了。创建镜像的脚本有一个固定的名字: Dockerfile。
一般来说,脚本内容如下所示:
FROM java:8
VOLUME / tmp
ADD demo-1 .0-SNAPSHOT.jar app.jar
RUN bash -c ‘touch /app.jar’
RUN /bin/cp /usr/share/ zoneinfo/Asia/Shanghai /etc/1ocaltime \
&& echo ,Asia/Shanghai’ >/etc/ timezone
EXPOSE 8080
ENTRYPOINT
I [“java”, “-Djava. security. egd=file:/dev/ ./urandom” , “-jar” ,“/app.jar”]
这个脚本表示,引用Java 8镜像将项目的Jar包生成- -个由 JDK 1.8 支撑的镜像。其中,EXPOSE指定了运行服务时设定的端口号,并且设定了Shanghai时区,目的是在容器运行时,其输出的日志能够显示正确的时间。
对于我们所开发的微服务应用来说,都可以参照这个脚本创建镜像,只需修改相关的发布包文件名和端口号即可。
服务的发布 与更新
在部署服务时,可以创建- -个目录(例如demo)来放置上传的Dockerfile和打包文件,然后在其上一层目录中再创建一一个 docker-compose.yml文件,并使用这一文件编排部署脚本。对于这个例子来说,可以编排如下所示的脚本:
demo:
build: . /demo
ports:
“8080:8080”
然后,使用docker-compose的up命令部署应用,代码如下所示:
docker -compose up -d
这个命令已经包含了镜像的创建、容器的生成和启动等一系列操作。 其中,参数-d 表示在后台中运行。
使用下列命令查看运行的容器:
docker-compose ps
使用下列命令查看容器的输出日志:
docker logs容器ID或名称
当需要删除已经部署的容器和已经创建的镜像时,只需使用一个down命令即可完成所有
的操作,代码如下所示:
docker-compose down --rmi all
运行这个命令将停止由编排脚本管理的所有容器,同时还将刪除相关的容器和镜像。
从上面的演示可以看出,使用docker-compose来部署一一个应用是非常 方便的,我们只需使用一个简单的命令就可以完成所有操作。
使用 Docker部署日志分析平台
=================
我们可以使用一个统一的 日志分析平台管理微服务应用生成的日志,这将给8志的查询和使用提供极大的方便。
日志分析平台ELK由三个服务组成,分别是Elasticsearch、Logstash 和Kibana。其中:
◎Elasticsearch 是- -个分布式搜索分析引擎,负责日志存储并提供搜索功能。
◎Logstash 是一个开源数据处理管道,能提供数据收集、加工和传输管道的服务,负责日志收集。
◎Kibana是一个数据可视化平台,可以将数据分析结果转化为图表等形式,即提供了Web查询的操作界面。
因为日志分析平台ELK中的三个服务都是开源的,并且已经发布到公域的镜像仓库中,所以我们可以使用docker- compose工具编写脚本进行部署和安装。
首先,在服务器上创建-一个目录,代码如下所示:
mkdir /logstash
进入这个目录之后,使用如下命令创建-一个配置 文件:
vi logstash. conf
文件的内容如下所示: .
input
top {
port => 5000
codec => j son
udp
port => 5000
codec => json
| output
elasticsearch { hosts => [ “elasticsearch:9200” ] }
}
其次,使用如下命令创建一-个编排脚本文件:
vi docker-compose. ym1
在文件中编写如下所示内容:
logstash:
image: logstash:5.4.0
volumes:
一./logstash. conf: /etc/logstash. conf
ports:
一"5000: 5000/tcp"
“5000: 5000/udp”
links:
一elasticsearch
command:
-f /etc/logstash. conf
elasticsearch:
image: elasticsearch:5.4.0
kibana:
image: kibana:5.4.0
links:
一elasticsearch
ports:
一"5601 :5601"
其中,三个服务的版本号必须统一 。最后,使用如下命令启动服务:
docker-compose up -d
第一次启动时需要一定 的时间,因为需要从镜像仓库中拉取相关的镜像。
在启动成功之后,就可以使用日志分析平台了。即可以使用docker-compose中的start. stop .等命令执行平台的启动或关闭等操作。
在应用工程中,想要使用日志分析平台的日志收集功能,就必须通过日志配置文件logback.xml进行配置。一个完整的日志配置文件中的内容如下所示:
<?xml version="1.0" encoding="UTF-8"?>d{yyYy-MM-dd HH:mm:ss .SsS} [&thread] %-51evel &1ogger{50}
8msg&n
<appender name=“stash” class="net.logstash. logback. appender.
LogstashTepSocketAppender">
10. 10.10.32: 5000
<encoder charset= “UTF-8”
class=“net . logstash. logback. encoder . LogstashEncoder” />
</ appender>
</ appender>
show parameters for hibernate sql 专为Hibernate 定制–>
<logger name=“org . hibernate. type . descriptor . sql. BasicBinder”
level=“TRACE” />
<logger name=“org . hibernate. type . descriptor .sq1. BasicExtractor”
| level=“DEBUG” />
</ root>
其中,通过“10.10.10.325000”设置了日志收集平台的服务器IP地址和端口号,读者可以
根据实际情况进行更改。
基于Docker的高级部署工具.
================
我们可以在使用Docker引擎的基础上,使用更加高级的工具来管理,现在比较流行的工具有Docker Swarm和Kubernetes等。
私域镜像仓库
为了更好地配合高级工具的应用部署,应该创建-一个私有的镜像仓库,将需要部署的镜像存放在镜像仓库中,这样在后面需要使用部署工具时,就可以从镜像仓库直接拉取镜像了。
假设私域镜像域名为imags.demo.net, 并且在镜像仓库中创建了一个项目test,还为这个项
目指定了相关用户及其读写权限,即可使用如下命令登录镜像仓库:
docker login imags. demo.net
根据提示,输入镜像仓库分配的用户名和密码。
这样,我们就可以上传Jar包和Dockerfile文件,然后在当前目录中使用下列命令来创建镜像了:
docker build一七imags. demo. net/test/example:1.0.0
在这个命令中,我们指定了镜像的名字和版本号,如果创建成功,则可以看到类似于如下所示的输出信息:
Successfully built 24d82a696eef
Successfully tagged imags . demo .net/test/example:1.0.0
镜像创建成功之后,即可使用如下命令将生成的本地镜像推送到镜像仓库:
docker push imags. demo.net/test/example:1.0.0
如果操作成功,则可以看到如下所示的输出信息:
The push refers to repository [imags. demo. net/test/example]
dd6bb0471434: Pushed
f07ed18457b0: Pushed
3929c58ac07b: Pushed
1.0.0: digest:
sha256: 4c51a34a68054524ecd31b724047c232802c7c85334499d0b7119abcf329a634 size:
2631
当把需要发布的镜像都创建成功之后,就可以使用更加高级的工具直接从镜像仓库中拉取镜像,来创建各种服务了。
Docker Swarm
Docker Swarm是Docker官方提供的一款 Docker集群管理工具,它的架构如图12-2所示。
Docker Swarm可以通过集群方式管理多个安装有Docker引擎的主机。在Docker Swarm中,是通过管理节点SwarmManager来管理集群中的所有工作节点SwarmNode的。应用部署必须在管理节点上进行,管理节点提供了集群中Docker主机的调度和服务发现等功能。
基于12.6.1 节创建的镜像,我们可以创建一一个脚本 文件example.yml,在Docker Swarm环境中发布服务,脚本内容如下所示:
version: ’ 3
services:
example-app:
image: imags . demo . net/test/example:1.0.0
deploy:
replicas: 2
#定义replicated 模式服务的副本数量
update_ config:
parallelism: 1
#每次更新副本数量
delay: 2s
#每次更新间隔
restart_ policy:
condition: on- failure
#定义服务的重启条件
networks:
金core
ports:
- “8080”
networks:
core:
external: true
使用如下命令发布服务:
docker stack up -C example. yml --with-registry-auth example-app
使用如下命令查看服务:
docker stack ps example-app
docker service list
Kubernetes
Kubernetes (简称k8s) ,是Google开源的运维管理平台,是-一个容器集群管理系统,可以非常便捷地实现容器集群的自动化部署和自动化扩容、缩容等功能。使用k8s可以最大限度地简化应用部署和管理的诸多操作,让复杂的应用运维管理工作变得简单、容易。
k8s被业界誉为下一代分布式架构的王者,在服务平台的构建中,它提供了极好的性能优势,以及高度的稳定性和可靠性。
总结
以上是字节二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的面试大全资料(含JAVA、MySQL、算法、Redis、JVM、架构、中间件、RabbitMQ、设计模式、Spring等),现在起闭关修炼半个月,争取早日上岸!!!
下面给大家分享下我的面试大全资料
- 第一份是我的后端JAVA面试大全
后端JAVA面试大全
- 第二份是MySQL+Redis学习笔记+算法+JVM+JAVA核心知识整理
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
- 第三份是Spring全家桶资料
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
docker service list
Kubernetes
Kubernetes (简称k8s) ,是Google开源的运维管理平台,是-一个容器集群管理系统,可以非常便捷地实现容器集群的自动化部署和自动化扩容、缩容等功能。使用k8s可以最大限度地简化应用部署和管理的诸多操作,让复杂的应用运维管理工作变得简单、容易。
k8s被业界誉为下一代分布式架构的王者,在服务平台的构建中,它提供了极好的性能优势,以及高度的稳定性和可靠性。
总结
以上是字节二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的面试大全资料(含JAVA、MySQL、算法、Redis、JVM、架构、中间件、RabbitMQ、设计模式、Spring等),现在起闭关修炼半个月,争取早日上岸!!!
下面给大家分享下我的面试大全资料
- 第一份是我的后端JAVA面试大全
[外链图片转存中…(img-F19zMCil-1714700158044)]
后端JAVA面试大全
- 第二份是MySQL+Redis学习笔记+算法+JVM+JAVA核心知识整理
[外链图片转存中…(img-CTpsKYfZ-1714700158045)]
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
- 第三份是Spring全家桶资料
[外链图片转存中…(img-6OD3GLq9-1714700158046)]
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理