• 探索 Docker:容器化技术的未来


    1. 引言

            在传统的软件开发和部署过程中,经常会遇到诸如“开发环境和生产环境不一致”、“依赖环境冲突”、“部署困难”等问题。为了解决这些问题,容器化技术应运而生。Docker 作为最受欢迎的容器平台之一,已经在业界得到广泛应用。它不仅简化了软件的开发、交付和运维流程,还提高了系统的可移植性、可扩展性和安全性。


    2. 什么是 Docker?

            Docker 是一个开源的容器平台,旨在帮助开发人员轻松地打包、交付和运行应用程序。通过 Docker,开发人员可以将应用程序及其所有依赖项(如代码、运行时环境、库、配置文件等)打包到一个称为 Docker 镜像的独立可执行软件包中。这些 Docker 镜像可以在任何装有 Docker 引擎的环境中运行,无需进行额外的配置。

    1. 镜像(Image):容器的基础,是一个只读模板,包含了运行容器所需的所有文件和配置信息。可以将镜像看作是容器的源代码,通过它可以创建多个容器实例。

    2. 容器(Container):从镜像创建的可运行实例。每个容器都是相互隔离的、独立运行的环境,包含了应用程序及其运行时环境。

    3. 仓库(Repository):用于存储和组织镜像的集合。可以将镜像推送到仓库中,也可以从仓库中拉取镜像到本地。


    3. Docker 的优势

    1. 环境一致性:Docker 可以确保在不同的环境中运行相同的应用程序,消除了“开发环境和生产环境不一致”的问题。

    2. 快速部署:Docker 镜像可以快速部署,无需进行复杂的配置和安装过程,大大提高了应用程序的交付速度。

    3. 资源隔离:每个 Docker 容器都运行在独立的环境中,相互之间互不干扰,有效地实现了资源隔离和应用程序间的解耦。

    4. 可扩展性:Docker 容器可以根据需要进行水平或垂直扩展,轻松应对不同规模和负载的需求。

    5. 持续集成和持续交付(CI/CD):Docker 与 CI/CD 流程无缝集成,使得自动化部署和交付成为可能,加快了软件开发周期

                                                                                                                                                            

    4. Docker的安装 

            1.卸载旧版

    首先如果系统中已经存在旧的Docker,则先卸载:

    1. yum remove docker \
    2. docker-client \
    3. docker-client-latest \
    4. docker-common \
    5. docker-latest \
    6. docker-latest-logrotate \
    7. docker-logrotate \
    8. docker-engine

            2.配置Docker的yum库

    首先要安装一个yum工具:

    yum install -y yum-utils

    安装成功后,执行命令,配置Docker的yum源:

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

            3.安装Docker

    yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

            4. 启动与校验 

    # 启动Docker

    systemctl start docker

    # 停止Docker

    systemctl stop docker

    # 重启

    systemctl restart docker

    # 设置开机自启

    systemctl enable docker

    # 执行docker ps命令,如果不报错,说明安装启动成功

    docker ps

            5.配置镜像加速

    这里以阿里云镜像加速为例。

            5.1.注册阿里云账号

    首先访问阿里云网站:

    阿里云-计算,为了无法计算的价值

    注册一个账号。

            5.2.开通镜像服务

    在首页的产品中,找到阿里云的容器镜像服务

     

    首次可能需要选择立刻开通,然后进入控制台。

            5.3.配置镜像加速

    找到镜像工具下的镜像加速器

    页面向下滚动,即可找到配置的文档说明:

    # 创建目录

    mkdir -p /etc/docker

    # 复制内容,注意把其中的镜像加速地址改成你自己的

    tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] } EOF

    # 重新加载配置

    systemctl daemon-reload

    # 重启Docker

    systemctl restart docker

    6. Docker容器和镜像的概念介绍

            6.1 Docker为什么下载就可以使用?不想要配置环境等吗?

            Docker会下载(拉取)运行应用程序所需的一切:代码、运行时环境、系统工具、库 等,镜像是一个可移植的软件打包方式,使应用程序可以在任何装有 Docker 引擎的环境中运行,而不需要额外的配置。比如配置文件什么都有。

            6.2 docker的工作原理?

            守护进程主要作用是在系统中提供某种服务或功能,并在系统启动时自动启动,持续运行以处理特定的任务或事件。Docker底层就有这样的机制,存在这一个守护线程,持续监视着服务的变化。当进行了Docker run命令,守护线程就会查看本地仓库是否含有这个镜像,没有就会到镜像仓库去下载。

            6.3 docker的基础代码解读

           -p 宿主机端口:容器端口

            为什么要进行端口映射:容器是对外隔离的,对内开放,所以需要宿主机和容器的端口进行映射,这样就可以通过使用宿主机当中介进行访问了。

            镜像名称规范: 例如上述:mysql

    • 镜像名称一般分两部分组成:[repository]:[tag]
      • repository就是镜像名
      • tag是镜像的版本
    • 在没有指定tag时,默认是latest,代表最新版本的镜像

      7. Docker 常见的命令      

    1. docker run:创建并启动一个容器。

    2. docker stop:停止一个正在运行的容器。

    3. docker start:启动一个已经停止的容器。

    4. docker restart:重启一个正在运行的容器。

    5. docker rm:删除一个已经停止的容器。

    6. docker ps:列出当前正在运行的容器。

    7. docker images:列出本地所有的镜像。

    8. docker pull:从 Docker 镜像仓库中拉取一个镜像。

    9. docker push:将一个镜像推送到 Docker 镜像仓库。

    10. docker exec:在一个正在运行的容器中执行命令。

    11. docker logs:查看容器的日志输出。

    12. docker build:根据 Dockerfile 构建一个自定义镜像。

    8.  什么是数据卷?

            数据卷是 Docker 中用于持久化存储数据的机制,它可以将宿主机文件系统中的目录或文件映射到容器内部。这样,容器可以通过数据卷访问宿主机上的文件,也可以与其他容器共享数据。

    Docker 数据卷是 Docker 容器中的一种持久化数据存储方式,允许容器与宿主机或其他容器之间共享和持久化数据。数据卷可以在容器之间共享数据,同时还可以保留容器中的数据,即使容器被删除或重新创建,数据仍然会保留。

    容器内的文件通过数据卷宿主机的文件进行间接的映射。

            8.1 数据卷的创建

    使用 -v 参数:在运行容器时,可以使用 -v 参数来创建一个数据卷。

    例如:docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx

    其中 html 为数据卷的名称,/usr/share/nginx/html  容器内数据卷的目录。

    也可以挂载到指定本地目录。

    当创建容器时,如果挂载了数据卷且数据卷不存在,会动创建数据卷。

    挂载后就会进行双向绑定,然后宿主机会有各种高级操作的命令,就可以对文件内容进行修改。

            8.2 数据卷常用的命令

              8.3 为什么要使用数据卷呢?

            虽然docker中,每个容器都有独立的运行环境,但是docker只有系统运行所必须的依赖环境,目的是为了容器的轻量级,所以不会含有vi命令编辑文件,但我们又想编辑容器中的配置文件,或者运行文件,这时候就需要使用数据卷,来将docker容器中的文件与宿主机的文件进行双向绑定,但宿主机的文件进行修改,docker容器中的文件也会进行自动修改。

    9. 总结

    1. 引言中介绍了传统软件开发和部署中的常见问题,并介绍了容器化技术的出现以及 Docker 作为一个受欢迎的容器平台。
    2. Docker 的优势部分可以进一步展开,如提高开发效率、实现环境一致性、简化部署流程、提升系统可移植性和安全性等。
    3. Docker 的安装过程需要卸载旧版本、配置 yum 库、安装 Docker、启动和验证,并介绍了如何配置镜像加速以提高镜像下载速度。
    4. Docker 容器和镜像的概念介绍了容器为什么可以直接下载使用、Docker 的工作原理以及基础代码解读等内容。
    5. Docker 常见的命令部分可以列举一些常用的命令和其作用,如 docker rundocker psdocker stop 等。
    6. 数据卷的概念介绍了数据卷的作用、创建方法、常用命令以及为什么要使用数据卷等。

           

            

                    

  • 相关阅读:
    MySQL中binlog备份脚本分享
    工厂人员着装识别检测
    八股文之springboot
    系统设计类题目汇总四
    npm cnpm pnpm yarn 有什么区别? 哪个更好用呢?
    (二)SpringCloud+Security+Oauth2 微服务初步集成
    Netty时间轮HashedWheelTimer原理分析
    设备树和设备树语法
    【Python 实战】---- 使用 RemoveBg 实现一键批量抠图
    RxJS 实战: 基于 BehaviorSubject 实现状态管理 & 结合 React
  • 原文地址:https://blog.csdn.net/m0_74749208/article/details/139563996