Docker的概述及如何启动docker的镜像、远程管理宿主机的docker进程

news2025/1/11 5:05:41

一、概述:

1、Docker 是什么?

Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采用“沙盒”机制,容器之间不会存在任何接口。

2、Docker 和虚拟机的区别:

1)启动速度:Docker 启动速度⾮常快,属于秒级别,⽽虚拟机通常需要⼏分钟去启动。

2)资源消耗:Docker 需要的资源更少,它直接运⾏在宿主机的内核上,以⼀系列进程的结合形式存在。⽽虚拟机则需要消耗更多的资源,因为它在操作系统级别进⾏虚拟化。

3)轻量级:Docker 更轻量,它的架构可以共⽤⼀个内核与共享应⽤程序库,所占内存极⼩⽽虚拟机则相对较重,需要消耗更多的内存。

4)隔离性:虚拟机可以实现系统级别的隔离,⽽ Docker 则属于进程之间的隔离,隔离性相对较弱。

5)安全性:Docker 的安全性也更弱。

6)可管理性:Docker 的集中化管理⼯具还不算成熟。

7)兼容性:开发⼈员不需要关系具体是哪个 Linux 操作系统,基本市⾯上主流系统都可使⽤ Docker。

8)数据持久性:Docker ⽆法存储数据,当容器重启后,数据会消失;⽽虚拟机可以存储各种数据,包括日志、数据库等。

3、Docker 解决的问题

系统环境不⼀致问题;应用隔离问题;服务器扩展问题

4、Docker 的优缺点:

(1)优点:体积小、启动迅捷、操作⽅便、更轻松的扩展、更强的可扩展性和可移植性。

(2)缺点:安全问题、存储问题、性能问题、⽹络问题、需要花费时间配置和管理、映像构建复杂。

5、Docker 架构

1)⽤ docker pull 命令从 hub.docker.com 官⽹上下载 images (镜像)。

2)可以⽤ docker save 命令将镜像保存到本地 tar ⽂件,也可以⽤ docker load 命令将本地tar ⽂件导⼊镜像。

3)可以⽤ docker build 构建 Dockerfile 镜像。

4)可以⽤ docker run 和 docker create 将镜像运⾏成 container (容器),容器内可以安装需要的 APP。

5)可以⽤ docker commit/export 将容器做成镜像反复的使⽤。

6)可以将自己制作的镜像发布到 hub.docker.com网站,需要注册账号。

6、Docker 核⼼概念:

1)镜像(images):⼀个⾯向 docker 容器引擎的只读模板,也是容器的基础,类似于 iso 镜像⽂件。

2)容器(container):基于镜像所创建的虚拟实例,相当于⼀个简易的 Linux 环境,可启停,且多个容器之间互相隔离。

3)仓库(Repository):集中存放 docker 镜像的位置,可使⽤ docker pull 或 push 命令下载或上传到私有或公有仓库。

4)仓库注册服务器(registry):存放仓库的地⽅,如果没有私有仓库,则使⽤公共仓库 docker hub。

7、Docker特性

1)文件系统隔离:每个进程容器运⾏在⼀个完全独⽴的根⽂件系统里。

2)资源隔离:实现不同的容器的资源配额和调度,cgroup。

3)网络隔离:每个进程容器运⾏在自己的⽹络空间,拥有虚拟接口和 IP 地址。

4)⽇志记录:Docker将收集到和记录的每个进程容器的标准流(stdout/stderr/stdin),⽤于实时检索或者批量检索。

5)变更管理:容器⽂件系统的变更可以提交到新的镜像中,并可重复使⽤以创建更多的容器。

6)交互式shell:Docker可以分配⼀个虚拟终端并且关联到任何容器的标准输出上,例如运⾏⼀个⼀次性交互shell。

二、安装docker

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

> overlay

> br_netfilter

> EOF

overlay

br_netfilter

[root@docker ~]# modprobe overlay

[root@docker ~]# modprobe br_netfilter

[root@docker ~]#  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@docker ~]# sysctl --system

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

# 添加阿⾥云yum源

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

# 安装docker,allowerasing:允许卸载旧版本

[root@docker~]#docker-compose-plugin -y --allowerasing

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

# 设置阿⾥云镜像加速器阿⾥云官阿里云-计算,为了无法计算的价值

登录后点击控制台

三、启动docker

[root@docker~]#systemctl start docker  # 启动服务

[root@docker~]#docker images  # 查看镜像

[root@docker~]#docker info | grep "https" # 查看自己的镜像加速器地址

[root@docker~]#docker search tomcat

[root@docker ~]# 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@docker ~]# systemctl restart docker

# 拉取centos基础镜像,镜像是模版,容器是实例

[root@docker~]#docker pull centos

[root@docker ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

centos       latest    5d0da3dc9764   2 years ago   231MB

# 交互式进入容器

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

                                         版本信息

[root@87eb4bb2639a /]# ls

bin  home   lost+found opt   run   sys  var

dev  lib    media proc  sbin  tmp

etc  lib64  mnt root  srv   usr

[root@87eb4bb2639a /]# cd /etc/yum.repos.d/

[root@87eb4bb2639a yum.repos.d]# ls

CentOS-Linux-AppStream.repo

CentOS-Linux-BaseOS.repo

CentOS-Linux-ContinuousRelease.repo

CentOS-Linux-Debuginfo.repo

CentOS-Linux-Devel.repo

CentOS-Linux-Extras.repo

CentOS-Linux-FastTrack.repo

CentOS-Linux-HighAvailability.repo

CentOS-Linux-Media.repo

CentOS-Linux-Plus.repo

CentOS-Linux-PowerTools.repo

CentOS-Linux-Sources.repo

# 安装阿里云网络yum源

[root@87eb4bb2639a /]#rm -rf *.repo

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

[root@87eb4bb2639a /]#yum clean all

[root@87eb4bb2639a /]#yum makecache

[root@87eb4bb2639a /]#yum -y install iproute net-tools httpd

[root@87eb4bb2639a /]# uptime   //当前位置和启动时间

 06:33:59 up  2:28,  0 users,  load average: 0.29, 0.19, 0.11

[root@87eb4bb2639a /]# cat /etc/redhat-release  //查看当前镜像版本

CentOS Linux release 8.4.2105

# 修改httpd首页文件、启动并测试访问

[root@87eb4bb2639a /]# echo 'docker_httpd_server' > /var/www/html/index.html

[root@87eb4bb2639a /]# systemctl start httpd

System has not been booted with systemd as init system (PID 1). Can't operate.

Failed to connect to bus: Host is down

[root@87eb4bb2639a /]# httpd -k start

[root@87eb4bb2639a /]# curl localhost  //容器内部

docker_httpd_server

[root@docker ~]# curl http://172.17.0.2  //宿主机

docker_httpd_server

# 查看当前容器的进程

[root@87eb4bb2639a /]# ps -all   //查看docker进程

[root@87eb4bb2639a /]#ps -aux|grep docker

root        323  0.0  0.0   9192   728 pts/0    S+   07:04   0:00 grep --color=auto docker

# 进入管理界面,将c0的终端挂载到当前宿主机上

[root@87eb4bb2639a /]# exit  //退出之后没进程了

exit

[root@docker ~]# docker start c0

c0

[root@docker ~]# docker attach c0

[root@87eb4bb2639a /]#

# 期望退出,服务继续运⾏ ctrl+p+q

[root@87eb4bb2639a /]# curl localhost

docker_httpd_server

[root@87eb4bb2639a /]# read escape sequence

四、远程管理宿主机的docker进程

1、关闭docker守护进程

[root@docker ~]# systemctl status docker

[root@docker ~]# systemctl stop docker

Warning: Stopping docker.service, but it can still be activated by:

  docker.socket

2、再次测试

[root@docker ~]# docker attach c0

You cannot attach to a stopped container, start it firs

3、发现再次启动docker并未生成新的docker.sock套接字文件

#mysql案例

/var/lib/mysql/msyql.sock

mysql -uroot -proot

mysql -hxxxx -uroot -proot

[root@docker ~]# ls -lh /var/run/

srw-rw----.  1 root   docker    0 8月  22 11:36 docker.sock

[root@docker ~]# systemctl start docker

srw-rw----.  1 root   docker    0 8月  22 11:36 docker.sock

4、修改配置文件,设置允许远程,默认情况下没有daemon.json⽂件,在添加daemon之前,先修改

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

{

        "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"

        ]

}

5、删除相关sock文件

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

13 ExecStart=/usr/bin/dockerd

[root@docker ~]# systemctl daemon-reload  # 加载配置⽂件

[root@docker ~]# systemctl start docker

6、重新开启docker守护进程,查看状态

[root@docker ~]#systemctl daemon-reload

[root@docker ~]#systemctl start docker

[root@docker ~]# ls -lh /var/run/docker.sock  //查看sock套接字文件

srw-rw----. 1 root docker 0 8月  22 16:22 /var/run/docker.sock

[root@docker ~]# netstat -lntpu|grep 2375  //#要允许远程连接,需要有⼀个服务,使⽤端⼝体现

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

远程管理

[root@docker ~]#docker -H192.168.2.50 -it -name ...

五、Docker 基本操作

1、镜像操作

 2、容器操作

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

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

相关文章

使用 Visual Studio 编辑器作为 DailyNotes 的 markdown 编辑器

DailyNotes 是我使用过的最优秀的日常笔记管理工具&#xff0c;为它配置一个好的 markdown 编辑器&#xff0c;可以大幅提升效率。 除了使用 Typora 作为 markdown 编辑器&#xff0c;Visual Studio Code 也是一个非常不错的选择&#xff0c;令人惊喜的是&#xff0c;它也支持…

React学习笔记(二)——react基础

目录 1. 受控表单绑定 2. React中获取DOM 3. 案例&#xff1a;B站评论 — 发表评论 3.1 B站评论案例 —— 核心功能实现 3.2 B站评论案例 — id处理和时间处理 3.3 B站评论案例 — 清空内容并重新聚焦 4. 组件通信 4.1 理解组件通信 4.2 父传子-基础实现 4.3 父传子-…

基于Spark计算网络图中节点之间的Jaccard相似性

基于Spark计算网络图中节点之间的Jaccard相似性 Jaccard 相似度是一种较为常用的衡量两个集合相似性的指标&#xff0c;用于计算两个集合的交集与并集的比率。具体来说&#xff0c;它的计算公式为&#xff1a; 在网络图中同样经常使用Jaccard来计算节点之间的相似性&#xff…

【标准知识】航天产品设计文件编号

按照QJ 1714-2011《航天产品设计文件管理制度》&#xff0c;梳理一下设计文件的编号要求。 01 设计文件 按照QJ 1714的规定&#xff0c;设计文件是由设计部门编制的&#xff0c;用以规定产品的组成、型式、结构尺寸、技术要求、原理以及制造、调试、试验、验收、使用、维护、…

Robot Operating System——自定义订阅/发布的消息结构

大纲 初始化环境生成自定义消息的工程创建包自定义消息package.xml完整文件 CMakeLists.txt完整文件 编译注册 使用自定义消息的工程创建包代码CMakeLists.txt编译运行 工程地址参考资料 在之前的案例中我们订阅/发布之间传递的消息都是ROS2的标准类型。本文我们将讨论如何自定…

【IoTDB 线上小课 06】列式写入=时序数据写入性能“利器”?

【IoTDB 视频小课】更新来啦&#xff01;今天已经是第六期了~ 关于 IoTDB&#xff0c;关于物联网&#xff0c;关于时序数据库&#xff0c;关于开源... 一个问题重点&#xff0c;3-5 分钟&#xff0c;我们讲给你听&#xff1a; 列式写入到底是&#xff1f; 上一期我们详细了解了…

【STM32】写Keil程序的注意事项

看正点原子的资料使用Keil写STM32程序的时候&#xff0c;总是在不断学习&#xff0c;不断探索。后续又学到啥再更新 目录 1 Keil设置 1.1 字体设置 1.2 快捷键设置 1.3 快速前往前一操作位置/后一操作位置 2 宏定义 2.1 宏定义函数时为什么使用do{…}w…

DockerHub解决镜像拉取之困

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

【数据结构篇】~栈和队列(附源码)

【数据结构篇】~栈和队列 前言一、栈的实现1.头文件2.源文件3.一个算法题——[有效的括号](https://leetcode.cn/problems/valid-parentheses/description/%E2%80%8B) 二、队列1.头文件2.源文件 前言 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入…

极速文件预览!轻松部署 kkFileView 于 Docker 中!

大家好&#xff0c;这几天闲的难受&#xff0c;决定给自己找点事做。博主的项目中有个文件预览的小需求&#xff0c;原有方案是想将文件转换成 PDF 进行预览。本着能借鉴就绝对不自己写的原则。今天就让我们简单试用一下 kkFileView 文件预览服务&#xff0c;一起探索它的强大功…

先导桌面式教育数控 小型数控车床 C59

桌面式教育数控主要指的是在教育领域中使用桌面型数控机床进行教学和培训。这种设备结合了数控技术和小型化设计&#xff0c;使得数控技术的学习和应用变得更加便捷和经济。 桌面式教育数控的主要特点包括&#xff1a; 小型化&#xff1a;机床体积小&#xff0c;重量轻&#x…

Debezium2.7 数据同步 MySQL/Oracle -- AI生成

Debezium是Red Hat开源的一个工具&#xff0c;用于实时捕获多种数据源&#xff08;包括MySQL、PostgreSQL、SQL Server、Oracle等&#xff09;的变更数据&#xff0c;并将这些数据作为事件流输出到Kafka等消息中间件中。通过Debezium&#xff0c;可以实现数据的实时同步和变更数…

Vue组件库Element和Vue路由

目录 一、Vue组件库Element&#xff08;学会怎么CV&#xff09; 快速入门 ElementUI的常用组件 1.Table表格 &#xff08;1&#xff09;组件演示 &#xff08;2&#xff09;组件属性详解 2.Pagination分页 &#xff08;1&#xff09;组件演示 &#xff08;2&#xff0…

易企秀Html5场景秀系统源码 海量模版可以选择 带源代码包以及搭建部署教程

系统概述 易企秀 HTML5 场景秀系统源码是基于 PHPMySQL 组合开发的一套强大的 H5 页面制作系统。它旨在满足企业和个人对于个性化 H5 页面制作的需求&#xff0c;无论是企业宣传、活动推广、产品展示还是邀请函制作等&#xff0c;都能通过该系统轻松实现。 该系统的核心优势在…

智能优化算法-森林优化算法(FOA)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 森林优化算法 (Forest Optimization Algorithm, FOA) 是一种基于自然生态系统的元启发式优化算法&#xff0c;它模拟了森林生态系统中的植物生长、竞争和合作等行为&#xff0c;用于解决复杂的优化问题。 FOA的…

uniapp中 使用 VUE3 组合式API 怎么接收上一个页面传递的参数

项目是uniapp &#xff0c;使用了vue3 vite // 使用的组合式API 的 语法糖 <script setup> // 无法使用 onLoad <script> 使用不了下面方法获得上一个页面参数传递 onLoad(options){ } 解决方案1&#xff08;亲测Ok&#xff09;&#xff1a;消息通知与监听…

计算机毕业设计选题推荐-岗位招聘数据可视化分析-Python爬虫

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Android12 显示框架之Transaction----server端

目录&#xff1a;Android显示终极宝典 上篇讲完了在client端Transaction的内容&#xff0c;最后调用setTransactionState()把所有的参数都交给了surfaceflinger&#xff0c;那么任务就交给server来完成了。本节我们一起接着看看下面的内容。 setTransactionState() //framew…

SQL手工注入漏洞测试(MongoDB数据库)

此次靶场地址为&#xff1a;墨者学院 ⼀. 如下给出的源码...可以看到数据库查询的语句如下..构造回显测试... new_list.php?id1});return ({title:1,content:2 ⼆.成功显示“ 1” 和“ 2” 。可以在此来显示想要查询的数据。接下来开始尝试构造payload查询 当前数据库。通过…

Python基础知识学习总结(七)

文章目录 一. 函数1. 定义函数2. 语法及实例3. 函数调用4. 参数传递5. 可更改与不可更改对象6. 传可变对象实例 二. 文件I/O1. 定义2. File对象的属性3. open 函数4. write()方法5. read()方法6. 文件定位 一. 函数 函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实…