docker--学习笔记(未完结,有时间更新)

本文深入探讨Docker,从其概念、优点、历史和架构开始,详细介绍了Docker的安装、Dockerhub的使用、命令行操作,以及镜像、数据卷、Dockerfile和网络原理。通过实例展示了如何部署nginx和tomcat,还涉及Portainer可视化管理工具和联合文件系统。此外,讨论了Docker在企业中的应用,包括Docker Compose和Swarm集群管理,以及在CI/CD中的角色。
摘要由CSDN通过智能技术生成

Docker

学习内容:

  1. Docker概述
  2. Docker安装
  3. Docker命令
  4. Docker镜像
  5. Docker数据据卷
  6. DockerFile
  7. Docker网络原理
  8. IDEA整合Docker
  9. Docker Compose 集群
  10. Docker Swarm 集群管理
  11. CI、CD
  12. Jenkins

Docker概述

在项目开发中,项目开发的流程:产品设计------>产品开发------>产品部署与测试------>产品投放生产环境。在这之中,存在一个问题:产品开发完成后,需要将产品部署到服务器上。那么在部署的时候,我们首先需要配置产品运行的环境,jdk,mysql等环境,并且在不同的操作系统上,环境的配置也是不一样的。如果采用集群,那么相同的环境需要重复的配置,并且配置环境的配置也很繁琐。那么我们就需要解决,在不同平台中快速配置环境和部署应用的问题?那么docker就能够很好的帮助我们解决这个问题。(这就是所谓的持续集成和持续交付,CI/CD)

Docker概念

​ docker是一个开源应用容器引擎。Docker 能够将应用程序与基础架构分离,以便可以快速交付软件。使用 Docker,可以像管理应用程序一样管理基础架构。通过利用 Docker 的快速发布、测试和部署代码的方法,可以显著减少编写代码和在生产环境中运行代码之间的延迟。

Docker 提供了在松散隔离的环境中打包和运行应用程序(称为容器)的功能。隔离和安全性允许在指定的主机上同时运行多个容器。容器是轻量级的,包含运行应用程序所需的所有内容,因此无需依赖主机上当前安装的内容。可以在工作时轻松共享容器,并确保与之共享的每个人都能获得以相同方式工作的相同容器。

Docker的优点

  1. 快速持续的交付应用程序
  2. 响应式部署和扩展。
  3. 轻量级
  4. 可移植性高
  5. 同一个服务器中,更加高效的利用资源

Docker历史

  • 2010年,DotCloud公司成立,主要提供基于Paas的云计算技术服务,孵化Docker初代产品。
  • 起初Docker是闭源的,虽然产品很好,但是没有引起行业的关注。
  • 2013年3月DotCloud公司宣布Docker开源。在开源的之后,越来越多的TI人员关注到docker优点,并加入Docker开源社区。
  • 2014年6月,docker1.0正式发布,并且称为此时最火爆的开源技术。知道至今。
  • 后面DotCloud公司改名为Docker。
  • 后面微软也推出了K8s(kubernetes)

docker架构

在这里插入图片描述

docker使用的时C/S体系结构。Docker Client(客户端) 通过docker命令与 Docker daemon(服务端)进行交互。服务端根据客户端的命令,执行构建、运行、发布Docker容器。

docker中最重要的就是Images和Container,分别是镜像和容器。类比java,镜像就是类,容器就是对象。我们可以通过镜像创建一个容器,去运行我们的应用。例如:通过mysql镜像创建一个mysql容器,这个mysql容器中就运行了mysql。我们使用mysql就可以使用容器中的mysql。

那么docker中的镜像从那里来呢?镜像可以通过远程仓库获取,远程仓库包括dockerhub(GitHub差不多)和私有仓库。

docker daemon(docker 守护进程)

docker守护进程监听docker客户端发起的docker命令请求,并且管理Docker对象,如镜像、容器、网络和卷。守护进程还可以和其他的守护进程通信,以便管理Docker服务。

docker client(docker 客户端)

docker客户端是用户与Docker服务端交互的主要方式。docker端使用命令时,命令会发送到服务端,并执行这些命令。

docker registry (docker 仓库)

  • dockerhub

    dockerhub类似github,github是用于存放代码的远程仓库。而dockerhub则是用于存放镜像的远程仓库。我们可以通过docker pull 拉去远程仓库的镜像到本地。也可以通过docker push 将本地的镜像提交到远程仓库。

  • private registry

    我们可以自己配置一个类似于dockerhub的远程仓库,用于存放镜像。后面会有讲解。

images与container

images和container,就好比java中的类和对象的关系。容器的创建是需要通过镜像创建的。镜像就是一个模板,根据这个模板创建容器,(即容器是镜像的实例)。

images:

镜像的创建需要创建一个Dockerfile,用于定义创建镜像和运行镜像所需的步骤。

container:

容器是镜像的可运行实例。可以使用 Docker API 或 CLI 创建、启动、停止、移动或删除容器。可以将容器连接到一个或多个网络,为其附加存储,甚至可以根据其当前状态创建新镜像。

默认情况下,容器与其他容器及其主机相对隔离。可以控制容器的网络、存储或其他底层子系统与其他容器或主机之间的隔离程度。

容器由其镜像以及在创建或启动它时提供给它的任何配置选项定义。当容器被移除时,未存储在持久存储中的对其状态的任何更改都会消失。

虚拟机(VM)和容器

虚拟机VM

在这里插入图片描述

  • 虚拟机的创建,需要先安装虚拟机管理系统,常用的虚拟机管理有VMWare。

  • 然后,再通过操作系统镜像,安装虚拟机OS。

  • 安装的这个虚拟机OS就是一个拥有所有功能的OS。因此,它的大小很大。启动的时候,也比较慢。

  • 虚拟机中一些不用的功能,就会占用资源,因此计算机资源的利用率低。

容器

在这里插入图片描述

  • 容器的创建,需要先安装Docker。Docker比VMWare小很多。
  • 通过镜像创建容器。
  • 容器使用的宿主机的原生OS,因此比虚拟机少了一层OS。使用宿主机的原生命令。显然性能更好,占用的内存夜宵,运行速度也快。
  • 因此它占用的计算机资源是很小的,所以在单机中可以运行几千个容器。

VM与容器对比:

技术 虚拟机 VM 容器 container
大小 size
启动速度 分级 秒级
性能 性能低 性能高
系统支持量级 单机只能运行十几个 单机能运行几千个个

开发语言GO,开源项目

docker是用Go语言编写的,并利用Linux内核的几个特性来提供其功能。Docker使用一种被称为容器的技术提供独立的工作区。运行容器时,Docker会为容器创建一组命名空间,namespaces。这些命名空间提供了一个隔离层。容器的每个方面都在独立的命名空间中运行,其访问权限仅限于该命名空间。(即容器的运行时相互独立的,不会影响其他容器。)

Github开源地址:

https://github.com/docker/docker-ce

Docker官方文档地址

https://docs.docker.com/

docker的使用场景

  • web应用的自动化打包和发布
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或者其他的后台应用
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS

Docker安装与卸载

安装:

  1. 如果你之前安装了旧版的Docker,那么需要先卸载之前的旧版本。
#remove old version
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
                  
# remove docker data
sodu rm -rf /var/lib/docker


  1. 设置存储库

    sudo yum install -y yum-utils
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    
  2. 安装docker引擎

    #安装最新版本
    sudo yum install docker-ce docker-ce-cli containerd.io
    
    #安装指定版本
    sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
    
  3. 启动docker

     sudo systemctl start docker
    

卸载:

sudo yum remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Dockerhub

dockerhub类似于github,是用于存储镜像的远程仓库。其中有很多的公共镜像,我们可以下载公共镜像到本地。我们也可以将自己的镜像push上去,并且可以设置镜像是否公开。那么下面我们来讲一下如何创建远程私有镜像。

创建远程仓库

  1. 创建docker账户
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 登录docker

  3. 创建私人远程镜像
    在这里插入图片描述
    在这里插入图片描述

镜像推送

此时,创建完镜像后。此时远程镜像是空的。现在我们需要将我们本地的镜像push到运程

  1. 登录docker

    docker login
    

在这里插入图片描述

  1. 本地镜像打上标签

    docker tag mysql:latest ariverh/mysql:latest
    

在这里插入图片描述

  1. push本地镜像

    docker push ariverh/mysql:latest
    

在这里插入图片描述

Docker命令

命令学习

  1. 查看docker有哪些命令

    #显示更加详细的信息
    docker info
    
    #显示版本信息
    docker version  
    
    #查看docker指令
    docker --help
    
  2. docker命令查看帮助

    #docker帮助指令
    docker command --help
    

镜像命令(images)

#本地镜像
docker images

#本地镜像id
docker images
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值