1、Docker介绍
- 官方对Docker的定义
- Docker是一个开发、运输和运行应用程序的开放平台。Docker使您能够将应用程序从基础架构中分离出来,以便快速交付软件。使用Docker,您可以像管理应用程序一样管理基础架构。通过利用Docker的快速运送、测试和部署代码的方法,您可以显著减少编写代码和在生产环境中运行代码之间的延迟。
- 简单来说使用Docker可以快速的构建一个运行环境,以前我们要部署一个项目需要有操作系统,需要Tomcat,需要各种配置之后才可以运行起来。而使用Docker之后,很多步骤你都可以省略,可以提高我们部署时的效率。
1.1 Docker对比以前的部署
- 操作系统部署
- 在没有Docker的时候,如果要部署一个项目,就需要有一个操作系统,有时候一个项目所需要的资源其实并不大,这样的一个项目就需要一个操作系统去部署,显然是会浪费资源的。
- 缺点
- 成本高、部署慢、浪费资源、硬件限制、不利于迁移扩展
- 虚拟机部署
- 可能有人会想到用虚拟机,但是虚拟机也同样会有这些问题,因为创建一个虚拟机需要占用固定的资源。
- 优点
- 相对利用好资源
- 相对容易扩展等
- 缺点
- 虚拟机太重了,一上来占用较多物理资源,移植性差,资源利用率低等
- Docker部署
- 在有Docker之后,我们不需要在担心资源浪费的情况,Docker就像虚拟机一样,可以在一台机器上部署多个系统。
- Docker与虚拟机的不同在于其资源占用是可控的,不再是占用固定资源,而是共享系统资源,需要用多少就只会占用多少。当然共享的资源也可以限制,保证不会影响到其他的服务。
- Docker的优点
- 有助于Microservices的落地和部署
- 充分利用物理机资源,同时能够整合服务器资源
- 云原生落地,应用更好地迁移等
1.2 Docker核心组件
-
Docker Engine
-
Docker Engine是一个客户端-服务器应用程序
-
客户端通过命令行界面通过脚本或直接命令行界面命令与服务器进行交互
-
服务器是一种长期运行的程序,接收用户的命令进行解析
-
-
image
- image可以说是一个模板,一个创建container的模板;就像一个虚拟机会有一个文件,如果要运行虚拟机就需要通过这个文件去启动。
-
container
- 简单的说一个image在运行起来就是一个容器,它会根据image模板去创建出一个新的container。而container其实就是一个小型的操作系统了。
- 下图的App A ~ App F 其实就是一个个的container。
1.3 docker基本体验
- 创建tomcat容器
- docker pull tomcat
- 默认从Docker Hub镜像库拉取一个 Tomcat image
- docker run -d --name my-tomcat -p 9090:8080 tomcat
- 启动完成后通过访问物理机的9090端口即可看到Tomcat的管理页面
- docker pull tomcat
- 创建mysql容器
- docker run -d --name my-mysql -p 3301:3306 -e MYSQL_ROOT_PASSWORD=root --privileged mysql
- 如果本地没有Mysql的 image,它会自动从镜像库拉取最新的Mysql image
- 启动完成后可以通过数据库连接工具通过3301端口连接到Mysql。
- 进入容器
- docker exec -it my-mysql /bin/bash
- 参数说明
- run:运行一个容器
- -d:通过后台启动
- --name:启动容器后的名称
- -p:端口映射,前面是物理机端口,后面是容器的端口,用于暴露给外界让其访问
- -e MYSQL_ROOT_PASSWORD=root:设置mysql的root用户的密码
- -it .. bash:保留容器终端的输入形式(-it和bash的结合作用)
1.4 可能有的疑惑
-
docker pull在哪拉取的镜像?
- 默认是在hub.docker.com
- 也可以通过配置阿里云的镜像库或者自建的本地镜像库
-
docker pull tomcat拉取的版本是?
- 默认是最新的版本
latest
,可以在后面指定版本tomcat:8.5.51-jdk8-adoptopenjdk-hotspot
- 默认是最新的版本
网友评论