当前位置: 首页 > news >正文

Docker简介及部署

Docker简介

Docker是一种开源的容器化平台,用于构建、部署和运行应用程序。通过容器化技术,Docker将应用程序及其依赖项打包在一个轻量级、可移植的容器中,确保在不同环境中的一致性。与虚拟机相比,Docker容器共享主机操作系统内核,启动更快且资源占用更少。

核心概念

镜像(Image)

  • 镜像(Image):只读模板,包含运行应用程序所需的代码、库和配置。

容器(Container)

  • 容器(Container):镜像的运行实例,具有独立的文件系统和网络。

仓库(Registry)

  • 仓库(Registry):存储和分发镜像的平台,如Docker Hub。

docker与虚拟化的对比

虚拟机docker容器
操作系统宿主机上运行虚拟机OS共享宿主机OS
存储镜像较大(GB镜像小(MB)
性能操作系统额外的cpu、内存消耗几乎无性能损耗
移植性笨重、与虚拟化技术耦合度高轻量、灵活迁移
隔离性完全隔离安全隔离
部署慢、分钟级快速、秒级
运行密度一般几十个单机支持上千容器

Docker的优势

轻量化和高效性
与传统虚拟机相比,Docker容器共享主机操作系统内核,无需运行完整的操作系统。这使得容器启动更快、占用资源更少,同时保持应用程序的隔离性。

跨平台和一致性
Docker通过容器化技术确保应用在不同环境(开发、测试、生产)中运行一致,避免“在我机器上能运行”的问题。支持Windows、Linux和macOS等多种平台。

快速部署和扩展
Docker容器可以在几秒内启动和停止,适合持续集成/持续部署(CI/CD)流程。结合编排工具(如Kubernetes),可实现自动化扩展和管理大规模容器集群。

隔离性和安全性
每个容器运行在独立的环境中,进程、文件系统和网络相互隔离,减少应用间的冲突。虽然安全性弱于虚拟机,但可通过命名空间、控制组(cgroups)等机制增强隔离性。

丰富的生态系统
Docker Hub提供海量官方和社区维护的镜像,涵盖数据库、中间件、开发工具等,简化了依赖管理和环境搭建。

微服务架构支持
Docker天然适合微服务,允许将应用拆分为多个独立容器,每个服务可单独开发、部署和扩展,提高系统灵活性和可维护性。

版本控制和回滚
Docker镜像支持分层存储和版本管理,便于追踪变更。若新版本出现问题,可快速回滚到旧版镜像,减少停机时间。

资源利用率优化
容器共享主机资源,无需为每个应用分配固定资源(如虚拟机内存),能更高效利用CPU、内存和存储,降低硬件成本。

开发效率提升
开发者通过Dockerfile定义环境,团队可快速复现相同配置,减少环境配置时间,专注于代码而非系统依赖问题。

Docker部署(rhel9为例)

配置软件仓库

vim /etc/yum.repos.d/docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable
gpgcheck=0

安装docker-ce并启动服务

[root@client ~]# yum makecache #更新缓存
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。CentOS-9-stream - Base - mirrors.aliyun.com          25 kB/s | 3.9 kB     00:00    
CentOS-9-stream - Base - mirrors.aliyun.com         4.7 MB/s | 8.8 MB     00:01    
CentOS-9-stream - AppStream - mirrors.aliyun.com     16 kB/s | 4.4 kB     00:00    
CentOS-9-stream - AppStream - mirrors.aliyun.com    4.3 MB/s |  25 MB     00:05    
docker-ce                                            88 kB/s |  32 kB     00:00    
Extra Packages for Enterprise Linux 9 - x86_64      2.2 kB/s | 6.9 kB     00:03    
Extra Packages for Enterprise Linux 9 - x86_64       87 kB/s |  20 MB     03:55    
Extra Packages for Enterprise Linux 9 openh264 (Fro  63  B/s | 993  B     00:15    
元数据缓存已建立。
[root@client ~]# yum install docker-ce -y
====================================================================================软件包                         架构        版本                  仓库         大小
====================================================================================
安装:docker-ce                      x86_64      3:28.5.1-1.el9        docker       21 M
安装依赖关系:containerd.io                  x86_64      1.7.28-1.el9          docker       46 Mdocker-ce-cli                  x86_64      1:28.5.1-1.el9        docker      8.6 M
安装弱的依赖:docker-buildx-plugin           x86_64      0.29.1-1.el9          docker       17 Mdocker-ce-rootless-extras      x86_64      28.5.1-1.el9          docker      3.4 Mdocker-compose-plugin          x86_64      2.40.0-1.el9          docker       15 M事务概要
====================================================================================
安装  6 软件包总下载:111 M
安装大小:442 M
下载软件包:
(1/6): docker-buildx-plugin-0.29.1-1.el9.x86_64.rpm 1.5 MB/s |  17 MB     00:11    
(2/6): docker-ce-28.5.1-1.el9.x86_64.rpm            1.8 MB/s |  21 MB     00:11    
(3/6): docker-ce-rootless-extras-28.5.1-1.el9.x86_6 607 kB/s | 3.4 MB     00:05    
(4/6): containerd.io-1.7.28-1.el9.x86_64.rpm        2.4 MB/s |  46 MB     00:19    
(5/6): docker-ce-cli-28.5.1-1.el9.x86_64.rpm        973 kB/s | 8.6 MB     00:09    
(6/6): docker-compose-plugin-2.40.0-1.el9.x86_64.rp 2.7 MB/s |  15 MB     00:05   
[root@client ~]# systemctl enable --now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.

设定docker加速器

[root@client ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["https://docker.m.daocloud.io"]
}
[root@client ~]# systemctl restart docker

Docker的基本操作

镜像管理

Docker镜像是容器的基础。从Docker Hub拉取镜像:

docker pull ubuntu:latest

列出本地所有镜像:

docker images

删除不需要的镜像:

docker rmi <image_id>

容器操作

运行一个新容器:

docker run -it ubuntu /bin/bash

列出正在运行的容器:

docker ps

列出所有容器(包括停止的):

docker ps -a

停止容器:

docker stop <container_id>

启动已停止的容器:

docker start <container_id>

删除容器:

docker rm <container_id>

http://www.dtcms.com/a/473773.html

相关文章:

  • 字符数组和字符串
  • 【TIDE DIARY 3】dify: chatflow; docker: exec
  • Docker Compose学习
  • 从iBizPMS到iBizPLM:一场研发管理平台的四年级架构革命
  • KingbaseES SQL Server模式扩展属性管理:三大存储过程实战指南
  • 5118网站怎么做的登录贵州省住房和城乡建设厅网站
  • 开源 C++ QT QML 开发(十六)进程--共享内存
  • 密码学系列 - 零知识证明(ZKP) - MSM运算
  • 厦门网站制作推广友链是什么
  • 大的网站建设公司好赣州章贡区最新招聘信息
  • 总结Vue.js等成功项目的生态建设经验
  • 西安北郊网站开发wordpress上传附件
  • mysql读写分离中间件——Atlas详解
  • jndi使用druid,在tomcat中配置druid监控
  • tomcat 默认编码的设置
  • 【mybatisPlus详解】
  • 回归与分类算法全解析:从理论到实践
  • 什么是 Qt 的元对象系统?
  • 【LeetCode】68. 文本左右对齐
  • 第十九周周报
  • Springboot 常见面试题汇总
  • 驻马店市做网站百度收录软件
  • 在实际项目中,Java 应用的性能瓶颈通常出现在哪些方面,又该如何有效地进行优化?
  • 08_Freqtrade配置与开发环境
  • C++实例
  • 复习总结最终版:Linux驱动
  • Python全栈(基础篇)——Day09:后端内容(列表生成式+生成器+迭代器+实战演示+每日一题)
  • kanass入门到实战(18) - 如何通过仪表盘,快速直观掌握项目进度及度量
  • seo网站优化工具大全wordpress 百度地图api
  • webstorm 调试时不能连接网页