docker的安装+docker镜像的基本操作

news2024/9/21 18:44:37

一.docker的介绍

1Docker 是什么?

Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采⽤

机制,容器之间不会存在任何接⼝。

Docker 通过 Linux Container(容器)技术将任意类型的应⽤进⾏包

装,变成⼀种轻量级、标准化、可移植、⾃管理的组件。在包装应

⽤的同时,可连带该应⽤的依赖和环境⼀并进⾏打包,所以可以将

这种移植到任意环境去运⾏,省去兼容性的问题。

Docker 的优缺点

1)优点

1. 体积⼩:减⼩系统的开销值,⼀台主机可以运⾏上千个容器。

2. 启动迅捷:更快速的交付和部署,docker容器 ,⽐传统虚拟机

要快很多,docker核⼼解决的问题就是利⽤容器实现VM类似的

功能。3. 操作⽅便:通过配置 dockerfile 便⽀持灵活的⾃动化创建和部

署。

4. 更轻松的扩展:可以实现更简单的、更可靠的迁移,避免了兼容

性等问题。

5. 更强的可扩展性和可移植性。

2)缺点

1. 安全问题:如果没有正确配置,⼀个容器中的恶意代码可能会影

响到主机上的其他容器以及主机本身的安全。

2. 存储问题:当使⽤⼤量容器时,存储和管理容器映像可以变得⾮

常困难。这可能需要使⽤分布式存储或其他解决⽅案来管理⼤量

容器的存储。

3. 性能问题:在某些情况下,容器和虚拟机相⽐会导致性能损失。

这些性能问题越来越少,但是仍然需要考虑。

4. ⽹络问题:Docker 可能会在⽹络配置上存在⼀些问题,这可能

需要更多的时间来诊断和解决。

5. 复杂性:Docker 是⼀个⾮常灵活的系统,但这同时也让它更加

复杂。⻓时间使⽤ Docker 会产⽣⼤量的脚本和配置⽂件,这些

可能变得难以维护。

6. 资源消耗:使⽤ Docker 必须占⽤⼀些资源,包括 CPU、内

存、磁盘等等。如果运⾏容器的主机资源不⾜,可能会导致性能

问题。7. 学习曲线:Docker 是⼀个相对新的技术,相⽐传统环境需要⼀

定的学习曲线。需要了解Docker 基本概念、命令和配置⽂件

等。

8. 需要花费时间配置和管理:使⽤ Docker 需要花时间配置和管理

容器集群和应⽤程序。需要配置每个容器,管理 Jenkins

Kubernetes 等运⾏ Docker 容器的⼯具。

9. 映像构建复杂:构建Docker映像需要按照特定格式编写

Dockerfile 脚本,需要遵循⼀定的规范和流程,这可能需要更多

的时间和精⼒。

Docker 核⼼概念

1. 镜像(images):⼀个⾯向 docker 容器引擎的只读模板,也

是容器的基础,类似于 iso 镜像⽂件。

2. 容器(container):基于镜像所创建的虚拟实例,相当于⼀个

简易的 Linux 环境,可启停,且多个容器之间互相隔离。

3. 仓库(Repository):集中存放 docker 镜像的位置,可使⽤

docker pull  push 命令下载或上传到私有或公有仓库。

4. 仓库注册服务器(registry):存放仓库的地⽅,如果没有私有

仓库,则使⽤公共仓库 docker hub

.安装docker

1.配置环境:

[root@docker0 ~]# cat << EOF | tee /etc/modules-load.d/k8s.conf

> overlay

> br_netfilter

> EOF

overlay

br_netfilter

[root@docker0 ~]# modprobe overlay

[root@docker0 ~]# modprobe br_netfilter

[root@docker0 ~]# cat << EOF | tee /etc/sysctl.d/k8s.conf

> net.bridge.bridge-nf-call-iptables = 1

> net.bridge.bridge-nf-call-ip6tables = 1

> net.ipv4.ip_forward = 1

> EOF

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-ip6tables = 1

net.ipv4.ip_forward = 1

[root@docker0 ~]# sysctl --system

2.安装:

[root@docker0 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

3.添加仓库:

[root@docker0 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@docker0 ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

4.启动服务:

[root@docker0 ~]# systemctl start docker.service

5.查看现有的镜像:

[root@docker0 ~]# docker images

6.搜索镜像:

[root@docker0 ~]# docker search tomcat

Docker的基本操作

  1. 镜像操作

(1)配置docker镜像站:

[root@docker0 ~]# vim /etc/docker/daemon.json

{

        "registry-mirrors": [

                "https://do.nark.eu.org",

                "https://dc.j8.work",

                "https://docker.m.daocloud.io",

                "https://dockerproxy.com",

                "https://docker.mirrors.ustc.edu.cn",

                "https://docker.nju.edu.cn"

        ]

}

[root@docker0 ~]# systemctl restart docker.service

(2)下载centos镜像:

[root@docker0 ~]# docker pull centos

[root@docker0 ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

centos       latest    5d0da3dc9764   2 years ago   231MB

(3)运行并创建容器:

[root@docker0 ~]# docker run -i -t --name=c0 centos:latest /bin/bash

docker是软件 -i是交互 -t是允许在终端运行,取名为c0,latest是版本

现在是已经进入了一个新系统

(4)配置阿里云的yum仓库:

[root@c28bcbe962be ~]# rm -rf /etc/yum.repos.d/*

[root@c28bcbe962be ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.21

ls /etc/yum.repos.d/

yum clean all && yum makecache

yum -y install iproute

yum -y install httpd

yum -y install net-tools

cat /etc/redhat-release

echo docker_httpd_server > /var/www/html/index.html

(5)启动服务:

httpd -k start

(6)访问

访问自身:

curl http://localhost:80

在宿主机上访问:

[root@docker0 ~]# curl 172.17.0.2

docker_httpd_server

无法在物理机上访问,也无法ping到这个主机

如果没有指令正在执行,容器就会停止

[root@c28bcbe962be ~]# exit

(7)重启容器:

[root@docker0 ~]# docker start c0

c0

[root@docker0 ~]# docker attach c0   //将c0的终端挂载到当前的宿主机上面来

[root@c28bcbe962be /]#

[root@c28bcbe962be /]# netstat -lnput|grep 80

[root@c28bcbe962be /]# httpd -k start

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message

[root@c28bcbe962be /]# curl localhost

docker_httpd_server

以上是退出之后就没进程了,需要从新启动

期望退出想继续运行:ctrl+p+q(按住ctrl不松手,先按p再按q)

docker远程管理

管理步骤:

  1. 停用docker服务

[root@c28bcbe962be /]# exit

exit

[root@docker0 ~]# systemctl stop docker

2.进入配置文件修改

[root@docker0 ~]# vim /etc/docker/daemon.json

{

        "registry-mirrors": [

                "https://do.nark.eu.org",

                "https://dc.j8.work",

                "https://docker.m.daocloud.io",

                "https://dockerproxy.com",

                "https://docker.mirrors.ustc.edu.cn",

                "https://docker.nju.edu.cn"

        ]

,

        "hosts": [

           "tcp://0.0.0.0:2375",

           "unix:///var/run/docker.sock"

        ]

}

[root@docker0 ~]# systemctl start docker

[root@docker0 ~]# vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd //这行剩下的删了

[root@docker0 ~]# systemctl stop docker.service

[root@docker0 ~]# systemctl start docker.service

3.加载daemon.json

[root@docker0 ~]# systemctl daemon-reload

4.启动服务

[root@docker0 ~]# systemctl start docker.service

5.查看状态

[root@docker0 ~]# netstat -lnput|grep 2375 //确保端口打开

tcp6       0      0 :::2375                 :::*                    LISTEN      40705/dockerd       

[root@docker0 ~]# ls -lh /var/run/     //确保docker.sock文件在

srw-rw----.  1 root    docker     0 8月  22 16:10 docker.sock  //出现这个就行

根据以上允许远程连接,需要2375端口打开,查看有docker.sock文件则就可以远程连接

  1. 远程管理

[root@docker0 ~]# docker -H 192.168.2.13 images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

centos       latest    5d0da3dc9764   2 years ago   231MB

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

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

相关文章

中秋节送礼推荐,数码好物精选推荐

中秋节将至&#xff0c;想要为家人或朋友准备一份特别的礼物吗&#xff1f;不妨考虑南卡Runner Pro5骨传导耳机。这款耳机不仅在功能上表现出色&#xff0c;而且设计独特&#xff0c;非常适合作为节日赠品。 卓越的性能&#xff0c;完美的体验 南卡Runner Pro5凭借其卓越的性…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——7.list(模拟实现)

1.前言 1.1list与vector的不同 区别&#xff1a;list的迭代器底层和其他两个迭代器底层有很大区别&#xff0c;因为list的链式结构决定了与它们两个的不一样 相同&#xff1a;迭代器用法大致一样&#xff0c;其他成员函数的使用也大致一样。 vector与list都是STL中非常重要的序…

关于安装hbase的问题(操作系统-windows)

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

快速学习“堆“排序(C语言数据结构)

前言&#xff1a; 堆的实现其实并不难&#xff0c;难的是要用堆实现排序&#xff0c;也就是堆的运用。 下面需要探究一下堆的排序是怎样的。 如何利用堆进行升序或者降序的排序。 "堆排序"&#xff1a; 原理&#xff1a; 例如&#xff1a;此时要将数组里的数组int a…

干货实用帖 | PARASOFT与JENKINS 插件集成

&#x1f4d6; 介绍&#xff1a; 本篇介绍如何使用Jenkins上的插件Parasoft Findings&#xff0c;应用到C/Ctest项目中。 ✅ 准备工作&#xff1a; Jenkins项目C/Ctest 10.4以上版本及有效的许可证 视频教学&#xff1a; Parasoft与Jenkins插件集成 安装插件&#xff1a; 首先…

Vue3 获取农历(阴历)日期,并封装日历展示组件

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是码喽的自我修养&#xff01;今天给大家分享vue3项目中使用 chinese-lunar-calendar 插件获取农历(阴历)日期&#xff0c;并封装了日历展示组件&#xff01;提供了具体的代码帮助大家深入理解&#xff0c;彻底掌握&#…

【舞动生命,营养护航】亨廷顿舞蹈症患者的维生素补给站

Hey小伙伴们~&#x1f44b; 在这个充满色彩的世界里&#xff0c;每个人都在以自己的方式绽放光彩。但你知道吗&#xff1f;有一群特别的朋友&#xff0c;他们面对着亨廷顿舞蹈症的挑战&#xff0c;却依然以不屈不挠的精神舞动着生命的旋律。&#x1f483;✨ 今天&#xff0c;就…

游戏如何对抗 IL2cppDumper逆向分析

众所周知&#xff0c;Unity引擎中有两种脚本编译器&#xff0c;分别是 Mono 和 IL2CPP 。相较于Mono&#xff0c;IL2CPP 具备执行效率高、跨平台支持等优势&#xff0c;已被大多数游戏采用。 IL2CPP 模式下&#xff0c;可以将游戏 C# 代码转换为 C 代码&#xff0c;然后编译为…

STM32学习记录-06-ADC模数转换器

1 ADC简介 ADC(Analog-Digital Converter)模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 12位逐次逼近型ADC,1us转换时间 输入电压范围:0~3.3V,转换结果范围:0~4095 18个输入通道,可测量16个外部和…

FPGA在医疗方面的应用

可编程逻辑支持以灵活、低风险的方式成功实施系统设计&#xff0c;同时提供了最佳的成本效率和增值的差异化功能&#xff0c;延长了医疗保健应用的生命周期&#xff0c;包括诊断成像、电子医疗、治疗和生命科学与医院设备。 在医疗方面的应用非常广泛&#xff0c;以下是几个主…

Langchain Memory组件深度剖析:从对话基础到高级链式应用

文章目录 前言一、Langchain memory 记忆1.Memory 组件基本介绍2.Memory 组件的类型1.ChatMessageHistory2.ConversationBufferMemory3.ConversationBufferWindowMemory4.ConversationEntityMemory5.ConversationKGMemory6.ConversationSummaryMemory 二、长时记忆1.简单介绍2.…

Error: Can not import paddle core while this file exists

背景 因为工作需要&#xff0c;原来的项目部署的电脑被征用&#xff0c;重新换了一个新电脑&#xff0c;重装了系统&#xff0c;今天在给一个使用ocr的项目进行环境配置的时候发现&#xff0c;无论安装哪个版本的paddlepaddle&#xff0c;总是可以安装成功&#xff0c;但是导入…

Android CCodec Codec2 (四)C2Param - Ⅱ

这一篇内容我们来解答复杂参数定义过程中提出的疑问&#xff0c;本文有大量的模板和宏展开&#xff0c;请耐心阅读。 1、不含灵活数组的复杂结构体定义 DEFINE_AND_DESCRIBE_C2STRUCT和C2FIELD是不能分开的&#xff0c;使用时必须要按顺序依次调用这两个宏定义。宏定义比较复杂…

【机器学习-监督学习】神经网络与多层感知机

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

java-Mybaits框架01

1.框架概念 在基础语言之上&#xff0c;对各种基础功能进行封装&#xff0c;方便开发者&#xff0c;提高开发效率&#xff1b; java后端框架 mybaits&#xff1a;对jdbc进行封装 Spring&#xff1a;对整个java后端架构进行管理。 SpringWeb&#xff1a;对web&#xff08;S…

vxe-grid 利用dayjs提供的方法来格式化, 计算二个日期之间的年数/年龄

1、安装dayjs pnpm add dayjs yarn add dayjs npm install dayjs 2、导入 import dayjs from dayjs; 3、vxe-grid列&#xff1a; export const UserColumns: VxeGridPropTypes.Columns [ ... {title: 年龄,width: 70,field: old,showOverflow: tooltip,align: center,sortabl…

android studio 设置gradle jdk

1. 左上角点击file 2. 按照如下点击&#xff1a; 3. 即可修改gradle jdk

EasyExcel文件导出简洁版

1. EasyExcel简介 EasyExcel是一个基于Java的简单、快速、lightweight的Excel处理库。它的主要特点包括: 轻量级设计: EasyExcel的jar包大小仅约1MB,相比较其他Excel处理库如Apache POI来说更加轻量。 采用内存友好的流式读写模式,无需一次性加载整个Excel文件到内存,大大减少…

Linux的CPU调度优化详解

一、引言 随着计算机硬件技术的不断发展和进步&#xff0c;现代服务器和工作站通常都配备了多核CPU&#xff0c;为了充分发挥多核处理器的性能优势&#xff0c;Linux系统提供了多种CPU调度器以及相关的参数设置&#xff0c;以便进行CPU调度优化&#xff0c;提高系统的整体性能…

AI 音频/文本对话机器人:Whisper+Edge TTS+OpenAI API构建语音与文本交互系统(简易版)

文章目录 前言思路&#xff1a;环境配置代码1. 加载Whisper模型2. 使用Whisper语音转文本3. 使用OpenAI API生成文本进行智能问答4. 实现文本转语音功能5. 合并音频文件6. 构建Gradio界面注意 总结 前言 在本篇博客中&#xff0c;我将分享如何利用Whisper模型进行语音转文本&a…