docker 入门到实战

目录

1.Docker介绍

1.1 简介:

1.2 Docker的应用场景

1.3 Docker 的优点

1.4 Docker 架构

Docker包括三个基本概念:

Docker和虚拟机区别:

2.Docker安装

2.1 CentOS Docker 安装

2.2卸载旧版本

2.3设置仓库

2.4安装Docker

2.5启动docker

2.6卸载docker

2.7 docker镜像加速

3.Docker常用命令

3.1帮助启动类命令

3.2镜像命令

docker images : 列出本地镜像

docker pull : 从镜像仓库中拉取或者更新指定镜像

docker rmi :        删除本地一个或多个镜像。

docker search :   从Docker Hub查找镜像

docker system df 查看镜像/容器/数据卷所占的空间

3.3容器命令

3.3.1 docker run创建一个新的容器并运行一个命令

3.3.2 docker ps 列出当前所有正在运行的容器

3.3.4启动已停止运行的容器

3.3.5重启容器

3.3.6停止容器

3.3.7强制停止容器

3.3.8删除已停止的容器

3.3.9一次性删除多个容器实例

3.3.10重要

3.3.11查看容器日志

3.3.12查看容器内运行的进程

3.3.13查看容器内部细节

3.3.14进入正在运行的容器并以命令行交互

3.3.15从容器内拷贝文件到主机上

3.3.16导入和导出容器

4.Docker镜像

4.1镜像是什么?

4.2分层的镜像

4.3Docker镜像commit

4.4总结:

4.5镜像推送远程仓库

4.5.1本地镜像发布到阿里云

4.5.2私有仓库创建

5.Docker容器数据卷

5.1作用

5.2特点

5.3案例

5.3.1宿主vs容器之间映射添加容器卷

5.3.2容器和宿主机之间数据共享

5.3.3读写规则映射添加说明

5.3.4卷的继承和共享

6.Docker常规安装

6.1安装tomcat

6.1.1拉取官方镜像

6.1.2使用 tomcat 镜像运行容器

6.2安装mysql

1、查看可用的 MySQL 版本

2、拉取 MySQL 镜像

3、查看本地镜像

4、运行容器—简单版

5、安装成功

6、运行容器—实战版

6.3安装redis

6.3.1 docker hub上拉取redis镜像到本地标签为6.0.8

6.3.2 简单明了启动redis

6.3.3 实际项目创建-目录挂载(配置文件及持久化数据)

6.4安装nginx

6.4.1 docker hub上拉取nginx镜像

6.4.2运行容器

6.4.3 安装成功

6.4.4 验证修改宿主机配置文件

7.Docker复杂安装

7.1安装mysql主从复制

7.3.1主从复制原理

7.3.2主从搭建步骤

7.2安装redis集群

7.2.1 什么是Redis集群

7.2.2 Redis集群的数据分布算法:哈希槽算法

7.2.3 3主3从redis集群配置

7.2.4 主从扩容案例

7.2.5 主从缩容案例

8.DockerFile解析

8.1DockerFile是什么

8.2DockerFile构建过程解析

8.3DockerFile常用保留字指令

8.4DockerFile案例

9.Docker微服务

9.1通过IDEA新建一个普通微服务模块

9.2通过dockerfile发布微服务部署到docker容器

10.Docker网络

10.1Docker网络介绍

10.2常用基本命令

10.3网络模式

10.3.1总体介绍

10.3.2容器实例内默认网络IP生产规则

10.4案例说明

10.4.1bridge

10.4.2host

10.4.3none

10.4.4 container

10.5自定义网络

10.5.1未使用自定义网络

10.5.2使用自定义网络

10.6Docker平台架构图解

11.Docker-compose容器编排

11.1是什么

11.2能做什么

11.3安装下载

11.4Compose核心概念

11.5Compose使用的三个步骤

11.6Compose常用命令

11.7Compose编排微服务

11.7.1新建数据库表

11.7.2项目

11.7.3编写Dockerfile

11.7.4进入主机构建镜像

11.7.5不用Compose

11.7.5使用Compose        

12.Docker轻量级可视化工具Portainer

12.1是什么

12.2安装


1.Docker介绍

1.1 简介:

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”

解决了运行环境和配置问题软件容器, 方便做持续集成并有助于整体发布的容器虚拟化技术。

1.2 Docker的应用场景

Web 应用的自动化打包和发布。

自动化测试和持续集成、发布。

在服务型环境中部署和调整数据库或其他的后台应用。

从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

1.3 Docker 的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1、快速,一致地交付您的应用程序

Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。

他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。

当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。

测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

2、响应式部署和扩展

Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

3、在同一硬件上运行更多工作负载

Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

1.4 Docker 架构

Docker包括三个基本概念:

  1. 镜像(Image):

Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  1. 容器(Container):

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  1. 仓库(Repository):

仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

docker 入门到实战_第1张图片

docker 入门到实战_第2张图片

Docker和虚拟机区别:

docker 入门到实战_第3张图片

作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有如下显著优势:

 Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式(数分钟)要快得多;

 Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器(在IBM服务器上已经实现了同时运行10K量级的容器实例);

 Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新;

 Docker通过Dockerfile支持灵活的自动化创建和部署机制,以提高工作效率,并标准化流程。

Docker容器除了运行其中的应用外,基本不消耗额外的系统资源,在保证应用性能的同时,尽量减小系统开销。传统虚拟机方式运行N个不同的应用就要启用N个虚拟机(每个虚拟机需要单独分配独占的内存、磁盘等资源),而Docker只需要启动N个隔离得“很薄的”容器,并将应用放进容器内即可。应用获得的是接近原生的运行性能。

使用Docker容器技术与传统虚拟机技术的各种特性,可见容器技术在很多应用场景下都具有巨大的优势(如下图所示)

docker 入门到实战_第4张图片

2.Docker安装

2.1 CentOS Docker 安装

Docker 支持以下的 64 位 CentOS 版本:

CentOS 7

CentOS 8

更高版本...

2.2卸载旧版本

较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项

yum remove docker \

                  docker-client \

                  docker-client-latest \

                  docker-common \

                  docker-latest \

                  docker-latest-logrotate \

                  docker-logrotate \

                  docker-engine

2.3设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager

yum install -y yum-utils \

  device-mapper-persistent-data \

  lvm2

设置稳定的仓库。

使用官方源地址(比较慢)

yum-config-manager \

    --add-repo \

    https://download.docker.com/linux/centos/docker-ce.repo

阿里云

yum-config-manager \

    --add-repo \

    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

清华大学源

yum-config-manager \

    --add-repo \

    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

2.4安装Docker

安装最新版docker

yum install docker-ce docker-ce-cli containerd.io

docker-ce  容器引擎-服务器端

docker-ce-cli  docker客户点命令行

containerd.io 底层用来启动容器的

安装指定版本Docker

yum install docker-ce- docker-ce-cli- containerd.io

2.5启动docker

开机自启动

systemctl enable docker

启动docker

systemctl start docker

HelloWorld程序

docker run hello-world

查看版本

docker version

2.6卸载docker

删除安装包:

yum remove docker-ce

删除镜像、容器、配置文件等内容:

rm -rf /var/lib/docker

2.7 docker镜像加速

       国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

       科大镜像:https://docker.mirrors.ustc.edu.cn/

       网易:https://hub-mirror.c.163.com/

       阿里云:https://<你的ID>.mirror.aliyuncs.com

       七牛云加速器:https://reg-mirror.qiniu.com

       当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

       请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

       {"registry-mirrors":["https://reg-mirror.qiniu.com/"]}

       之后重新启动服务:

      

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

3.Docker常用命令

3.1帮助启动类命令

   启动docker: systemctl start docker

   停止docker: systemctl stop docker

   重启docker: systemctl restart docker

   查看docker状态: systemctl status docker

   开机启动: systemctl enable docker

   查看docker概要信息: docker info

   查看docker总体帮助文档: docker --help

   查看docker命令帮助文档: docker 具体命令 –help

3.2镜像命令

docker images : 列出本地镜像

docker 入门到实战_第5张图片

docker pull : 从镜像仓库中拉取或者更新指定镜像

docker 入门到实战_第6张图片

docker rmi :        删除本地一个或多个镜像。

docker 入门到实战_第7张图片

docker search :   从Docker Hub查找镜像

docker 入门到实战_第8张图片

docker system df 查看镜像/容器/数据卷所占的空间

docker commit: 从容器创建一个新的镜像

        docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

docker push: 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

        docker push [OPTIONS] NAME[:TAG]

3.3容器命令

有镜像才能创建容器, 这是根本前提(下载一个CentOS或者ubuntu镜像演示)

docker pull centos

docker pull ubuntu

3.3.1 docker run创建一个新的容器并运行一个命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

       -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

       -d: 后台运行容器,并返回容器ID;

       -i: 以交互模式运行容器,通常与 -t 同时使用;

       -P: 随机端口映射,容器内部端口随机映射到主机的端口

       -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

       -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

       --name="nginx-lb": 为容器指定一个名称;

       --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

你可能感兴趣的:(docker,docker,容器,java,运维)