Docker容器技术1——docker基本操作

Docker容器技术

在这里插入图片描述
随着云计算和微服务架构的普及,容器技术成为了软件开发、测试和部署过程中的重要组成部分。其中,Docker作为容器技术的代表之一,以其简便易用的特点赢得了广大开发者的青睐。

Docker允许开发者在轻量级、可移植的容器中打包和运行应用程序及其依赖项。Docker 通过容器化提供了一种标准化的方式来构建、部署和运行应用程序,使得应用程序可以在任何地方以一致的方式运行。

什么是Docker?

在这里插入图片描述

Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包进一个可移植的容器中,从而可以在任何安装了Docker的Linux或Windows机器上运行。Docker容器就像是一个轻量级的虚拟机,但它并不包含操作系统;相反,它依赖于主机操作系统的内核功能,如命名空间(Namespace)和控制组(Control Group,简称Cgroup),以实现资源隔离和环境的一致性。

或者说,docker是管理容器的引擎,类似VMworkstation,为应用提供打包,部署的平台。

Docker 的核心概念

1. 容器
  • 容器 是一个轻量级、可移植的封装单元,包含了运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。
  • 容器与宿主机操作系统共享内核,因此容器相比于虚拟机更加轻量级,启动速度快。
2. 镜像
  • 镜像 是容器的只读模板,定义了容器的运行环境。
  • 镜像是通过 Dockerfile 构建的,Dockerfile 是一个文本文件,包含了创建镜像所需的所有指令。
  • Docker Hub 是一个公共的镜像仓库,用户可以从中下载和上传镜像。
3. Dockerfile
  • Dockerfile 是一个文本文件,包含了构建 Docker 镹像所需的一系列指令。
  • 常见的指令包括 FROM(指定基础镜像)、RUN(运行命令)、CMD(默认启动命令)、EXPOSE(暴露端口)等。
4. Docker Compose
  • Docker Compose 是一种工具,用于定义和运行多容器 Docker 应用。
  • 通过一个 YAML 文件来配置应用的服务、网络和卷,简化了多容器应用的部署和管理。

Docker 的优势

1. 轻量级
  • Docker 容器与宿主机共享内核,占用资源少,启动速度快。
2. 一致性
  • 应用程序在不同环境(开发、测试、生产)中运行时保持一致,因为容器环境是完全定义好的。
3. 隔离性
  • 每个容器都有自己独立的文件系统、网络空间等,彼此之间互不干扰,提高了安全性。
4. 可移植性
  • Docker 容器可以在任何安装了 Docker 引擎的系统上运行,包括不同操作系统和硬件平台。
5. 可复用性
  • Docker 镜像可以被多次使用,简化了环境配置过程。
6. 版本控制
  • Docker 镜像支持版本控制,可以方便地回滚到之前的版本。

docker在企业中的应用场景

Docker 的安装

在这里插入图片描述

SaaS-软件即服务
SaaS是软件即服务。英文全称是Software as a Server。

概念:即云端已经将操作系统到运行环境到软件的客户端都已经搭建好了,使用方不需要安装任何环境或软件,只需要访问客户端就能直接使用、

举例:类似于在我的毕业生管理系统上,我先自己利用云端搭建好平台,然后如果有学校想要使用的话直接分配给他们一些账号和密码,他们就可以直接访问我搭建好的系统进行操作了。


PaaS-平台即服务
PaaS是平台即服务,英文全称是Platform as a Server。

概念:利用云端搭建好操作系统或软件层面的如数据库、中间件等供用户使用,使得用户无需关注底层的基础设施和运行环境,只需要利用这些环境运行自己的应用和数据。

举例:就好比学校要使用我的就业管理系统进行管理,但是不想自己搭建机房和环境,所以就直接本地用少量的机器搭建客户端,将数据库、中间件或部分接口放在云端,请求时直接请求云端的接口和数据。


在企业中docker作为业务的最小载体而被广泛应用
通过docker企业可以更高效率的部署应用并且更具节省资源

docker与虚拟化的对比

在这里插入图片描述
如图所示,在虚拟化之中,每个虚拟机都需要一个独立的操作系统,这将会占用巨量的系统资源,并且降低运行密度。操作系统的重启以及部署也需要占用相当的时间。而docker容器在这方面就更具有优势。
在这里插入图片描述

部署docker

容器工作方法

在这里插入图片描述

1. Linux 系统上的安装
  1. 添加 Docker 仓库
]# cd /etc/yum.repos.d
]# vim docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/dockerce/linux/centos/7/x86_64/stable/
gpgcheck=0
[centos]
name=extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/x86_64
gpgcheck=0
  1. 安装 Docker-ce并启动服务
#安装docker
]# yum install -y docker-ce
#编辑docker启动文件,设定其使用iptables的网络设定方式,默认使用nftables
[root@docker ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
--iptables=true
]# systemctl enable --now docker
]# docker info
  1. 激活内核网络选项
    在rhel7中,需要配置内核网络
]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
]# sysctl --system
]# systemctl restart docker
2. Windows 和 macOS 系统上的安装
  1. 安装 Docker Desktop
    • 访问 Docker 官方网站下载 Docker Desktop:https://www.docker.com/products/docker-desktop
    • 按照安装向导完成安装。

Docker 的基本操作

1. 镜像管理
  1. 搜索镜像

    docker search ubuntu
    

    在这里插入图片描述

    参数
    NAME 镜像名称
    DESCRIPTION 镜像说明
    STARS 点赞数量
    OFFICIAL 是否是官方的

  2. 拉取镜像

    docker pull ubuntu
    

    在这里插入图片描述

  3. 列出本地镜像

    docker images
    

    在这里插入图片描述

  4. 删除镜像

    docker rmi ubuntu
    
  5. 导出镜像

    docker image save nginx:latest -o nginx-latest.tar.gz
    docker image save nginx:latest nginx:1.26-alpine -o nginx.tag.gz
    
2. 容器管理
  1. 启动容器

    docker run -it ubuntu bash
    

    -d #后台运行
    -i #交互式运行
    -t #打开一个终端
    --name #指定容器名称
    -p #端口映射 -p 80:8080 把容器8080端口映射到本机80端口
    --rm #容器停止自动删除容器
    --network #指定容器使用的网络

  2. 列出正在运行的容器

    docker ps
    docker ps -a
    docker inspect busybox
    

    分别是查看当前容器,查看所有容器,查看目标容器运行的详细信息

    在这里插入图片描述

  3. 停止容器

    docker stop container_id_or_name
    
  4. 删除容器

    docker rm container_id_or_name
    
  5. 重新进入容器

    docker attach centos7
    
  6. 在容器中执行命令

    docker exec -it 【test】 ifconfig
    

    【test】是docker容器的名字

3. 网络管理
  1. 创建自定义网络

    docker network create my_network
    
  2. 连接容器到网络

    docker run -it --name my_container --network my_network ubuntu bash
    
4. 卷管理
  1. 创建卷

    docker volume create my_volume
    
  2. 挂载卷到容器

    docker run -it -v my_volume:/mnt/data ubuntu bash
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/54196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDK 安装及配置教程(Windows)【安装】

文章目录 一、 下载1. 官网下载2. 其它渠道 二、 安装三、 配置四、 验证五、 双 JDK 环境 软件 / 环境安装及配置目录 一、 下载 1. 官网下载 安装地址:https://www.oracle.com/ 打开浏览器输入网址 https://www.oracle.com/index.html,进入 Oracle …

Java和西门子S7-1200通讯调试记录

这是很久以前做的一个项目,工业现场一个agv,主要作用的清扫摇床(一种选矿设备),选用的S7-1200的CPU。工作原理是agv上面放一个机械臂,机械臂上面装一个扫把,到固定位置以后,执行清扫…

揭开谜底:用 C 语言打造你的扫雷游戏!

目录 1. 功能概述 用户界面 2. 游戏分析与设计 2.1 数据结构分析 地雷存储: 玩家视图: 2.2 文件结构设计 3. 代码实现 game.h game.c test.c 亮点功能与创新 智慧的较量:核心游戏循环 进阶功能:让游戏更加与众不同 还…

人工智能GPT____豆包使用的一些初步探索步骤 体验不一样的工作

豆包工具是我使用比较频繁的一款软件,其集合了很多功能。对话 图像 AI搜索 伴读等等使用都非常不错。电脑端安装集合了很多功能。 官网直达:豆包 使用我的文案创作能力,您可以注意以下几个技巧: 明确需求: 尽可能具…

C++ ——string的模拟实现

目录 前言 浅记 1. reserve(扩容) 2. push_back(尾插) 3. iterator(迭代器) 4. append(尾插一个字符串) 5. insert 5.1 按pos位插入一个字符 5.2 按pos位插入一个字符串 …

C++第五十一弹---IO流实战:高效文件读写与格式化输出

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. C语言的输入与输出 2. 流是什么 3. CIO流 3.1 C标准IO流 3.2 C文件IO流 3.2.1 以写方式打开文件 3.2.1 以读方式打开文件 4 stringstre…

flask框架

Flask 1 flask简介 我们之所以在浏览器中输入localhost:8080然后就可以把webapps下面的项目文件以浏览器的方式打开,功臣在与tomcat。python语言写的项目,转换为web,Flask框架 轻量级web应用框架。 环境准备: pip install fl…

【C语言】内存函数详细讲解

文章目录 前言strerror的声明和使用字符串分类函数字符转换函数内存拷贝函数(memcpy)memcpy的声明和使用memcpy函数的模拟实现 内存拷贝函数(memmove)memmove的声明和使用memmove模拟实现 内存比较函数(memcmp)memcmp的…

UDP_SOCKET编程实现

文章目录 socket编程接口认识struct sockaddr类 编写一个server服务Client代码查看启动结果代码修正1.获取内核分配给客户端的信息2.修正不匹配ip不能访问的问题 不同机器之间的通信利用xftp将udp_client传给wsl的ubuntu机器进行演示现在模拟在windows下的udp_client代码: 对方…

时序预测 | MATLAB实现BKA-XGBoost(黑翅鸢优化算法优化极限梯度提升树)时间序列预测

时序预测 | MATLAB实现BKA-XGBoost(黑翅鸢优化算法优化极限梯度提升树)时间序列预测 目录 时序预测 | MATLAB实现BKA-XGBoost(黑翅鸢优化算法优化极限梯度提升树)时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现BKA-XGBoost时间序列预测&a…

C++从入门到起飞之——继承下篇(万字详解) 全方位剖析!

🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、派⽣类的默认成员函数 1.1 四个常⻅默认成员函数 1.2 实现⼀个不能被继承的类 ​编辑 2. 继承与友…

力扣题解2390

大家好,欢迎来到无限大的频道。 今日继续给大家带来力扣题解。 题目描述​(中等): 从字符串中移除星号 给你一个包含若干星号 * 的字符串 s 。 在一步操作中,你可以: 选中 s 中的一个星号。 移除星号…

力扣刷题(6)

两数之和 II - 输入有序数组 两数之和 II - 输入有序数组-力扣 思路: 因为该数组是非递减顺序排列,因此可以设两个左右下标当左右下标的数相加大于target时,则表示右下标的数字过大,因此将右下标 - -当左右下标的数相加小于targ…

HashMap线程不安全|Hashtable|ConcurrentHashMap

文章目录 常见集合线程安全性HashMap为什么线程不安全?怎么保证HashMap线程安全 HashtableConcurrentHashMap 引入细粒度锁代码中分析总结 小结 常见集合线程安全性 ArrayList、LinkedList、TreeSet、HashSet、HashMap、TreeMap等都是线程不安全的。 HashTable是线…

C语言:数组

1. 数组的概念 数组是⼀组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息: • 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。 • 数组中存放的多个数据,类型是相同的。 数组分为⼀维数组和多维数组…

【C语言必学知识点七】你知道在动态内存管理中存在的内存泄露问题吗?遇到内存泄露时应该如何处理?今天跟你好好介绍一下如何正确使用calloc与realloc!!!

动态内存管理——动态函数(calloc、realloc)的使用 导读一、calloc函数1.1 函数介绍1.2 calloc的使用1.3 calloc与malloc 二、realloc函数2.1 函数介绍2.2 realloc的使用2.3 realloc的空间分配2.3.1 空间分配成功——地址的改变2.3.2 空间分配失败——内…

【在Linux世界中追寻伟大的One Piece】数据链路层

目录 1 -> 数据链路层 2 -> 对比理解“数据链路层”和“网络层” 3 -> 以太网 3.1 -> 以太网的帧格式 4 -> 认识MAC地址 4.1 -> 对比理解MAC地址和IP地址 5 -> 认识MTU 5.1 -> MTU对IP协议的影响 5.2 -> MTU对UDP协议的影响 5.3 -> MT…

UE5源码Windows编译、运行

官方文档 Welcome To Unreal Engine 5 Early Access Learn what to expect from the UE5 Early Access program. 链接如下:https://docs.unrealengine.com/5.0/en-US/Welcome/#gettingue5earlyaccessfromgithub Step 0:找到UE5源码 直接先上链接 https…

【Qt】Qml界面中嵌入C++ Widget窗口

1. 目的 qml做出的界面漂亮,但是执行效率低,一直想找一个方法实现qml中嵌入c界面。现在从网上找到一个方法,简单试了一下貌似可行,分享一下。 2. 显示效果 3. 代码 3.1 工程结构 3.2 pro文件 需要添加widgets > QT quick …

店群合一模式下的社区团购新发展——结合链动 2+1 模式、AI 智能名片与 S2B2C 商城小程序源码

摘要:本文探讨了店群合一的社区团购平台在当今商业环境中的重要性和优势。通过分析店群合一模式如何将互联网社群与线下终端紧密结合,阐述了链动 21 模式、AI 智能名片和 S2B2C 商城小程序源码在这一模式中的应用价值。这些创新元素的结合为社区团购带来…