三. Docker学习

1. 什么是Docker

   1.1 什么是docker

   基于google的go语言实现,目标是实现轻量级操作系统虚拟化解决方案,docker的基础是linux容器等技术

三. Docker学习像不像一个容器?

   docker的优点:

      (1)上手快。​

用户只需要几分钟,就可以把自己的程序“Docker化”。Docker依赖于“写时复制”(copy-on-write)模型,使修改应用程序也非常迅速,可以说达到“随心所致,代码即改”的境界。随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒中即可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户尽可能的充分利用系统资源。

     (2)职责的逻辑分类

开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器。Docker设计的目的 就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境一致性。从而降低那种“开发时一切正常,肯定是运维的问题(测试环境都是正常的,上线后出了问题就归结为肯定是运维的问题)”

     (3)快速高效的开发生命周期

​Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。(通俗一点说,Docker就像一个盒子,里面可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从该盒子中一件件的取。)

    (4)鼓励使用面向服务的架构​

Docker还鼓励面向服务的体系结构和微服务架构。Docker推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或者服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序都变得非常简单,同时也提高了程序的内省性。(当然,可以在一个容器中运行多个应用程序

   1.2 容器与虚拟机的比较

容器是在操作系统的层面上实现虚拟化(依赖于本机),直接复用本机的操作系统,而传统方式则是在硬件层面实现的(占用资源多)

   1.3 docker 组件

         (1)服务器与客户端 (C/S架构)  个人理解:类似于oracle

         三. Docker学习

         (2)docker的镜像与容器

         三. Docker学习

         Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务

所以Docker容器就是:​一个镜像格式;​一些列标准操作;​一个执行环境。

         (3)Registry(注册中心)

三. Docker学习

2. Docker的安装与启动

      docker基于linux,建议安装在centos7.X上

三. Docker学习

      接下来设置一个docker的镜像下载的加速器,否则有可能下载镜像的时候会很慢

三. Docker学习

      接下来是启动停止等关于docker的一些命令

三. Docker学习

      补充命令:

         查看docker的概要信息: docker info

         查看docker的帮助文档: docker --help

         查看镜像: docker images(重要)

三. Docker学习三. Docker学习

      搜索镜像: docker search  镜像名称(重要)

三. Docker学习

    三. Docker学习

      拉取镜像: docker  pull  镜像名称

三. Docker学习

      删除镜像:   docker  rmi  镜像ID    或者   docker rmi   `docker  images   ‐q`

      查看正在运行的容器:   docker ps

      查看所有的容器: docker ps -a

      查看最后一次运行的容器: docker ps -1

      查看停止的容器: docker ps -f status = exited

      创建容器的命令:(重要)

            三. Docker学习

         (1) 交互式方式创建容器(当退出容器的时候,容器也自动停止了)

         三. Docker学习

          退出当前容器:exit

         (2) 守护式方式创建容器(当退出的时候,容器不会停止)

         三. Docker学习

           停止容器: docker stop 容器名称(或者ID)

           启动容器: docker start 容器名称(或者ID)

          文件拷贝到容器内部: docker   cp   需要拷贝的文件或目录   容器名称:容器目录

          把文件从容器内拷贝出来: docker  cp   容器名称:容器目录   需要拷贝的文件或目录

          查看容器IP: docker  inspect   容器名称(或者ID)

          直接输出容器IP: docker    inspect  ‐‐format='{{.NetworkSettings.IPAddress}}'    容器名称(或者ID)

          删除容器: docker rm 容器名称(或者ID)

3. 目录挂载

三. Docker学习

4.常见应用的部署

4.1mysql部署

三. Docker学习

4.2 tomcat部署

三. Docker学习

三. Docker学习

4.3 Nginx的部署

三. Docker学习

5.迁移与备份

(1) 容器保存为镜像

docker   commit     容器名称   新镜像名称

(2) 镜像备份

docker  save  ‐o  备份名称  镜像名称

(3) 镜像恢复与迁移(但是要删除原来的镜像)

docker   load  ‐i   备份的名称

6. Dockerfile(保证使用的镜像完全一致,把事先要做的事情放在一起)

三. Docker学习

三. Docker学习

Dockerfile构建jdk1.8镜像,基础镜像是centos7.X

(1) 创建目录(在这个目录下创建一个dockerfile文件)

三. Docker学习

(2) 上传jdk到到刚才的目录

(3) 创建dockerfile文件(构建)    vi   Dockerfile

三. Docker学习

(4) 执行命令构建镜像(后面有空格和一个.)    .指定当前目录

三. Docker学习

(5) 查看镜像是否构建成功

docker images

7. Docker的私有仓库搭建与配置(也是一个镜像)(存放企业内部的镜像)

三. Docker学习

(3) 输入地址 宿主机Ip:5000/v2/_catalog查询私有仓库

(4) 配置修改文件使docker信任私有仓库

      vi    /etc/docker/daemon.json

     添加  {"insecure‐registries":["宿主机IP:5000"]}

(5) 重启docker服务  systemctl   restart  docker

(6)上传镜像到私有仓库 (先打一个标签)

三. Docker学习