目录

1. 思考题

2. Docker Compose

2.1 定义

2.2 Compose使用的两个步骤

2.3 安装docker-compose

2.4 Docker Compose 常用命令

2.5 docker-compose.yml 代码例子

3. 回顾Docker的特点

4. 如何学习一个较低频使用的技术

5. 一些答疑问题

6. 容器化部署接下来的学习方向

7. Docker梳理

7.1 docker和传统vm的区别

7.2 docker 安装

7.3 docker 仓库

7.4 docker 镜像

7.5 docker 容器

7.6 Docker 可视化管理


1. 思考题

10个应用,又有相对的依赖的关系,如何关联/同时启动?

答:shell 脚本,docker-compose

2. Docker Compose

2.1 定义

Compose是用于定义和运行多容器Docker应用程序的工具。

通过Compose,使用YML文件来配置应用程序需要的所有服务。

然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。

2.2 Compose使用的两个步骤

(1)使用docker-compose.yml定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

(2)执行docker-compose up -d 命令来启动并运行整个应用程序。

-d 表示后台执行,很重要!

2.3 安装docker-compose

方式一:下载安装包,放到/usr/local/bin/目录下,授权+x

(1)下载docker-compose

sudo curl -L "https:///docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

补充:

sudo curl -L "https:///docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 

注意:

docker-compose的版本和docker的版本相互兼容的问题。

不匹配时,先考虑找合适的docker-compose版本。先不要动docker的,因为docker无法升级,只能卸载然后重装。

怎么找相应的版本:https:///docker/compose/tags?after-1.16.0-rc2

docker --version

docker-compose --version

(2)授权docker-compose

sudo chmod +x /usr/local/bin/docker-compose

软链接:sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

帮助文档:https://docs.docker.com/compose/compose-file

(3)检查安装是否成功: docker-compose --version

docker的compose下载 docker-compose入门_docker

docker的compose下载 docker-compose入门_docker的compose下载_02

docker的compose下载 docker-compose入门_tomcat_03

方式二: 通过pip进行安装

还未成功,之后有时间了再试试。

2.4 Docker Compose 常用命令

(1)Build:可通过此参数配置直接使用Dockerfile来生成镜像

(2)container_name:指定容器名称

(3)depends_on:设置服务间的启动依赖关系

只设置依赖关系,安排了启动顺序,但不保证前面的应用启动成功了才会处理后面的应用。

(4)env_file:从文件添加环境变量。可以是单个值或者列表的多个值,用于配置分离。

(5)Environment:配置环境变量

(6)Healthcheck:用于检测docker服务是否健康运行。生产环境一般都会配置

(7)Image:使用镜像启动

(8)Networks:设置网络,不使用默认网络

(9)Restart:配置发生变化后,如何启动容器,一般配置是always

(10)Volumes:数据卷

更多命令:https://docs.docker.com/compose/compose-file/compose-file-v3/

2.5 docker-compose.yml 代码例子

version: '3'

services:

    tomcat1:
        restart: always
        image: 040201/tomcat
        container_name: jforum_tomcat_1
        ports:
            - 8081:8080
        volumes:
            - jforum_tomcat:/usr/local/tomcat/webapps/
        depends_on:
            - mysql
    
    tomcat2:
        restart: always
        image: 040201/tomcat
        container_name: jforum_tomcat_2
        ports:
            - 8082:8080
        volumes:
            - jforum_tomcat:/usr/local/tomcat/webapps/
        depends_on:
            - mysql

    mysql:
        restart: always
        image: 040201/mysql
        container_name: jforum_mysql
        privileged: true
        ports:
            - 3306:3306
        environment:
            - MYSQL_ROOT_PASSWORD=123456
        volumes:
            jforum_tomcat:

(1)compose.yml中有些东西是必须要有的,比如images

(2)要先想好怎么启动某个容器,然后再写到yml文件中。逐个梳理。(先把docker run 写好,然后再翻译为yml脚本)

(3)文件名统一用: docker-compose.yml        //现在的编码规范:约定大于配置

(4)docker-compose.yml 的文件路径没有特殊要求,同一个目录下可以只有这个文件。但是使用到的镜像要存在。

(5)tomcat1, tomcat2是应用名,随便起。

(6)volumes: 这个位置的数据卷,compose会默认去创建。新建的数据卷名字中可能会带compose字样。

(7)docker-compose.yml 中如果有网络配置,网络也会自动创建。

(8)如果不给权限 privileged: true,则mysql应用可以启动,但是无法访问

(9)docker-compose up -d

3. 回顾Docker的特点

更高效的利用系统资源

更快速的启动时间

一致的运行环境   !!!!!!

持续交付和部署

更轻松的迁移

导出镜像,然后在不同条件下,同一个镜像打出来的,一定是同样的环境/容器

4. 如何学习一个较低频使用的技术

真正使用docker时,很多时候,镜像都是开发的做好了,我们主要是起容器 docker run。Dockerfile一般不会经常改动,一般就写个两三次。

如何处理?

1)理解技术的原理是什么?怎么工作?流程如何?大概是什么套路?

2)知道在哪里可以找到帮助文档(有需要时快速查找)

5. 一些答疑问题

(1)怎么才能在创建tomcat镜像的同时,把里面的war包放到tomcat目录下,然后更新配置文件?

思路1,配置文件通常在打war包的时候就配置完。

思路2,还有一个办法,在Dockerfile 配置:将配置文件拷贝到Dockerfile的同目录下。在Dockerfile中 ADD 配置文件到容器该配置文件应该存储的问题,执行Dockerfile文件时,会完成配置文件的传递(覆盖)。

(2)dockerfile每次启动,有导入sql数据的动作的话,就会每次都覆盖之前的数据?

是的,所以不要每次都起 dockerfile, 起一次,打好镜像后,后面就用打好的镜像就行。

(3)jenkins的学习!!!jenkins两个端口,前面8080是给web用的,50000是后续使用,插件时用的。

(4)中间件:临时存放数据的,比如tomcat。最终数据是不会从中间件中查的,数据放在Mysql之类的(redis本身是内存,放数据不安全,所以放在tomcat中)

(5)数据卷里的数据不可读,想要导出mysql数据,进容器里,通过export导出来。export导出为.sql文件, 不能直接拷文件出来。

一个数据卷可以被多个容器挂载(好像实际操作的时候,同时挂的话,失败,要先退出一个)。

(6)容器用的是宿主机的磁盘空间。

6. 容器化部署接下来的学习方向

容器的可视化管理

rancher

容器化的监控手段

K8s容器化集群管理

代码化管理容器

Dockerfile, Docker-compose

7. Docker梳理

7.1 docker和传统vm的区别

传统vm在物理层面虚拟,docker在系统层虚拟。

7.2 docker 安装

手动安装

脚本安装

镜像加速

7.3 docker 仓库

云仓库 dockerhub

私有仓库(跟镜像加速不一样,私有是在企业内部构建使用的)

7.4 docker 镜像

!!!常用镜像命令

docker images

docker search

docker pull

docker tag

更新镜像

docker commit

Docker file 编写

Docker file 常用关键字

7.5 docker 容器

!!!容器的启动命令

查看日志:docker logs -f

进程信息

docker ps -a

!!!容器的网络

bridge

自定义网络

!!!容器的数据交互

数据卷

mount

Docker-compose

7.6 Docker 可视化管理

rancher