Docker基础

04-09 1377阅读

Docker基础

文章目录

    • 1. Docker简介
    • 2. Docker安装
    • 3. Docker常用命令
      • 3.1 帮助命令
      • 3.2 镜像的基本命令
      • 3.3 容器的基本命令
      • 3.5 常用其他命令
      • 3.6 练习
      • 4. Protainer可视化面板
      • 5. Docker镜像
      • 6. 容器数据卷
        • 6.1 使用命令来挂载 -v
        • 6.2 Dockerfile挂载
        • 6.3 数据卷容器
        • 7. DockerFile
          • 7.1 介绍
          • 7.2 构建过程
          • 7.3 DockerFile指令
          • 8. 发布镜像
            • 8.1 发布镜像到Docker Hub
            • 8.2 发布镜像到阿里云容器服务
            • 9. Docker网络原理
              • 9.1 理解Docker网络
              • 9.2 -link
              • 9.3 自定义网络
              • 9.4 网络连通
              • 10. 部署Redis集群实战
              • 11. SpringBoot微服务打包Docker镜像

                1. Docker简介

                Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。

                DevOps:开发+运维

                传统:一堆帮助文档,安装程序

                Docker:打包镜像,发布测试,一键运行

                使用了Docker之后,我们部署应用就像搭积木一样。

                Docker之所以发展如此迅速,因为它提供了系统平滑移植,容器虚拟化技术。

                开发人员利用Docker可以消除协作编码时,“在我的机器上可正常工作“的问题。

                Docker基础

                Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于go语言并且遵从Apache2.0协议开源。

                GitHub地址:https://github.com/moby/moby

                docker官网:https://www.docker.com

                docker中文库:https://www.docker.org.cn/

                docker hub:https://hub.docker.com/

                LXC为Linux Container的简写。Linux Container 容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。

                LXC主要通过Kernel的namespace实现每个用户实例之间的项目隔离,通过cgroup实现对资源的配额和调度。

                docker和容器技术和虚拟机技术,都是虚拟化技术。

                不同点:

                Docker基础

                DOcker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。

                与传统的虚拟机相比,Docker优势体现为启动速度快,占用体积小。

                容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器比传统虚拟机更为轻便。

                每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会互相影响,能区分计算资源。

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

                Docker整体架构

                Docker基础

                Docker的基本组成

                • 镜像(image)

                  docker镜像好比是一个模版,可以通过这个模版来创建容器服务,tomcat镜像->run->tomcat01容器(提供服务),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

                • 容器(container)

                  Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建。拥有启动、停止、删除等基本命令。可以把容器理解为一个简易的Linux系统。

                • 仓库(repository)

                  仓库就是存放镜像的地方。仓库分为共有仓库和私有仓库。如Docker Hub(官方),阿里云,华为云都有容器服务。仓库默认使用的是Docker Hub,是国外的,国内访问速度非常慢,所以要配置镜像加速(像Maven配置镜像一样)。

                  Docker利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

                  可以把容器看作是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

                  仓库是集中存放镜像文件的场所,docker提供的官方registry被称为Docker Hub。

                  仓库分为公开仓库和私有仓库两种形式。最大的公开仓库就是Docker Hub,国内的公开仓库包括阿里云、网易云等。


                  2. Docker安装

                  Docker并非是一个通用的容器工具,它依赖于已经存在并运行的Linux内核环境。

                  DOcker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的Linux主机。

                  因此,Docker必须部署在Linux内核的系统上。如果其他系统想部署Docker就必须安装一个Linux环境。

                  查看环境信息

                  # 系统内核版本在3.10以上
                  [root@iZbp13w34ju4eg8v1cixguZ ~]# uname -r
                  3.10.0-1160.105.1.el7.x86_64
                  # 查看系统版本
                  [root@iZbp13w34ju4eg8v1cixguZ ~]# cat /etc/os-release
                  NAME="CentOS Linux"
                  VERSION="7 (Core)"
                  ID="centos"
                  ID_LIKE="rhel fedora"
                  VERSION_ID="7"
                  PRETTY_NAME="CentOS Linux 7 (Core)"
                  ANSI_COLOR="0;31"
                  CPE_NAME="cpe:/o:centos:centos:7"
                  HOME_URL="https://www.centos.org/"
                  BUG_REPORT_URL="https://bugs.centos.org/"
                  CENTOS_MANTISBT_PROJECT="CentOS-7"
                  CENTOS_MANTISBT_PROJECT_VERSION="7"
                  REDHAT_SUPPORT_PRODUCT="centos"
                  REDHAT_SUPPORT_PRODUCT_VERSION="7
                  

                  安装(使用rpm存储库安装)

                  官方教程:https://docs.docker.com/engine/install/centos/

                  1.卸载旧的版本

                  旧版本的 Docker 采用docker或docker-engine。在尝试安装新版本之前卸载任何此类旧版本以及相关的依赖项。

                  sudo yum remove docker \
                                  docker-client \
                                  docker-client-latest \
                                  docker-common \
                                  docker-latest \
                                  docker-latest-logrotate \
                                  docker-logrotate \
                                  docker-engine
                  

                  yum可能会报告没有安装这些软件包。

                  /var/lib/docker/卸载 Docker 时,不会自动删除存储的映像、容器、卷和网络。

                  2.需要的软件包

                  安装yum-utils软件包(提供yum-config-manager 实用程序)

                  [root@iZbp13w34ju4eg8v1cixguZ ~]# sudo yum install -y yum-utils
                  

                  3.设置镜像的仓库

                  # 使用国内的阿里云
                  [root@iZbp13w34ju4eg8v1cixguZ ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
                  

                  3.更新yum软件包索引

                  [root@iZbp13w34ju4eg8v1cixguZ ~]# yum makecache fast
                  

                  4.安装Docker引擎

                  # docker-ce 社区版    docker-ee 企业版
                  [root@iZbp13w34ju4eg8v1cixguZ ~]# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
                  

                  5.启动docker

                  [root@iZbp13w34ju4eg8v1cixguZ ~]# sudo systemctl start docker  # 启动docker
                  [root@iZbp13w34ju4eg8v1cixguZ ~]# docker version  # 查看版本成功,如果有信息则启动成功
                  Client: Docker Engine - Community
                   Version:           26.0.0
                   API version:       1.45
                   Go version:        go1.21.8
                   Git commit:        2ae903e
                   Built:             Wed Mar 20 15:21:09 2024
                   OS/Arch:           linux/amd64
                   Context:           default
                  Server: Docker Engine - Community
                   Engine:
                    Version:          26.0.0
                    API version:      1.45 (minimum version 1.24)
                    Go version:       go1.21.8
                    Git commit:       8b79278
                    Built:            Wed Mar 20 15:20:06 2024
                    OS/Arch:          linux/amd64
                    Experimental:     false
                   containerd:
                    Version:          1.6.28
                    GitCommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
                   runc:
                    Version:          1.1.12
                    GitCommit:        v1.1.12-0-g51d5e94
                   docker-init:
                    Version:          0.19.0
                    GitCommit:        de40ad0
                  

                  6.通过运行镜像来验证Docker是否安装成功hello-world

                  [root@iZbp13w34ju4eg8v1cixguZ ~]# sudo docker run hello-world
                  

                  Docker基础

                  7.查看下载的hello-world镜像

                  [root@iZbp13w34ju4eg8v1cixguZ ~]# docker images
                  REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
                  hello-world   latest    d2c94e258dcb   10 months ago   13.3kB
                  

                  卸载Docker

                  1.卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包:

                  sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
                  

                  2.主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷:

                  sudo rm -rf /var/lib/docker
                  sudo rm -rf /var/lib/containerd
                  

                  Docker默认工作路径:/var/lib/docker

                  配置阿里云镜像加速

                  安装完成后,其实我们的镜像仓库速度还不够快,上面我们设置的阿里云镜像仓库是阿里云内部的,这里我们可以再配置一个阿里云的镜像加速。

                  Docker基础

                  进入容器加速服务的控制台,点击左侧边栏的镜像工具下的镜像加速器,查看操作文档。

                  针对Docker客户端版本大雨1.10.0的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

                  sudo mkdir -p /etc/docker
                  sudo tee /etc/docker/daemon.json 
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]