Docker-如何启动docker

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们在上一章,讲了虚拟化,虚拟化是把硬件虚拟化,然后创建出来的虚拟机完全隔离,而Docker则是软件(内核)虚拟化,他的隔离性会低于虚拟机。我们将通过3-4周来讲解Docker相关内容,由于涉及到内容较多,就不一一列出来具体的细节,主要从以下几个方面来讲解:

Docker基本情况

Docker基本命令

Dockerfile

Docker镜像

Docker仓库

Docker原理(本小节属于)

Docker网络&存储&日志

Docker-Compose

Docker番外篇

我们经过前面两小节介绍docker的操作命令,只要熟练掌握这些命令,实际上我们已经可以掌握容器的运行,但是如果我一个容器无法启动或者启动失败,我们应该怎么去排错呢?

所以我们需要对docker的原理有一定的理解,这里我们先介绍docker的运行原理之一。

在讲解docker的运行原理之前,我们先来讲解前台进程和后台进程。在 Linux 系统中,进程可以根据其运行方式分为前台进程和后台进程。理解这两个概念有助于更好地管理和控制系统的运行状态。下面是关于这两个概念的详细解释:

前台进程 (Foreground Process)

定义:前台进程是指当前与终端交互的进程。用户可以直接看到前台进程的输出,并可以向其发送输入。

前台进程通常会阻塞终端,这意味着用户不能在前台进程运行期间输入其他命令,除非前台进程结束或被暂停。

示例:在终端中运行 ping 127.0.0.1 命令,ping 命令会持续输出结果,直到用户按下 Ctrl+C 终止它(适合linux,win默认4个包就会退出)。

后台进程 (Background Process)

定义:后台进程是指在后台运行的进程,它们不与终端直接交互。用户可以在后台进程运行的同时继续使用终端执行其他命令。

示例:使用 & 符号将命令放到后台运行。例如,运行 sleep 100 &,sleep 命令将在后台运行,终端立即返回,用户可以继续输入其他命令。

Docker的启动

通过前面的学习,我们了解docker的隔离性实际上比虚拟机差,它并没有从操作系统上进行隔离,而是通过Linux上的namespace特性进行的逻辑隔离(这个后面会单独讲)。

所以我们docker里面的进程实际上就是在docker子进程下面启动了一个普通进程(在操作系统里面也可以看到这个进程)。如果这个进程退出,则这个容器就会退出,这也就是我们的docker里面必须要有一个前台进程的原因。也是为后面的Dockerfile提前做好准备,避免我们制作的镜像出现无法启动情况。

下面我们讲通过例子来讲解这个问题,这个镜像官方的centos7的镜像,只有3层。

图片

按照我们前面讲解的命令,我们通过后台启动它,我们虽然启动这个容器,但是这个容器启动以后立即就退出,并没有按照我们的预期在后台持续运行。

[root@localhost ~]# docker run -d centos:7
88c8b9abd7000fa2366a10bd3d1caa131daffcb462094908baffb4040a1c2cd6
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS                     PORTS     NAMES
88c8b9abd700   centos:7   "/bin/bash"   7 seconds ago   Exited (0) 6 seconds ago             funny

我们换一种方式来启动它,使用了-itd参数来启动来,它就是按照我们的预期在后台运行。

[root@localhost ~]# docker run -itd centos:7
c16e503b7ddafe655403fb23718b1cd638d13d30f9924f952a3e34e2cc1d065d
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS                          PORTS     NAMES
c16e503b7dda   centos:7   "/bin/bash"   4 seconds ago        Up 4 seconds                              peaceful_tharp

我们再换一个nginx的镜像,这个镜像虽然tag被我修改过,但是它也是docker的官方镜像。

图片

[root@localhost ~]# docker run -d 192.168.31.43:5000/nginx
d664641bef7b6fcea5941efd6e3c38b8f13f6ac3f33181aa40b460fed51b11ca
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE                      COMMAND                  CREATED         STATUS                       PORTS     NAMES
d664641bef7b   192.168.31.43:5000/nginx   "/docker-entrypoint.…"   3 seconds ago   Up 3 seconds                 80/tcp    elastic_taussig
[root@localhost ~]# docker run -itd 192.168.31.43:5000/nginx
38dfe0c1fea8fd643f4abb5ae0b7c5fa9efdda2eb84c47ed0ea2556b801067d7
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS                       PORTS     NAMES
38dfe0c1fea8   192.168.31.43:5000/nginx   "/docker-entrypoint.…"   2 seconds ago    Up 2 seconds                 80/tcp    happy_bhabha
 

可以看到无论我们无论是使用-itd 还是-d 它都可以按照我们预期的方式在后台持续运行,这个是为什么呢?

图片

通过这个对比,让我们了解到docker run的参数和不同的镜像其实相关联,不同的镜像是可以匹配不同的参数,这个就需要对镜像有一个基本的认识,这里简单的分类下:

1.操作系统&环境镜像

比如centos,ubuntu,jdk等类型的镜像

2.服务类操作系统

比如nginx,tomcat,mysql等提高具体服务的镜像

3.自我制作的镜像

就需要根据自己需要来实现,规则也可以参考上面两种。

根据前面信息,我们也就可以根据不同的镜像输入不同的运行命令,确保他是可以正常启动,而不会出现启动及退出。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

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

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

相关文章

COMSOL with Matlab

文章目录 基本介绍COMSOL with MatlabCOMSOL主Matlab辅Matlab为主Comsol为辅 操作步骤常用指令mphopenmphgeommghmeshmphmeshstatsmphnavigatormphplot常用指令mphsavemphlaunchModelUtil.clear 实例教学自动另存新档**把语法套用到边界条件**把语法套用到另存新档 函数及其微分…

JVM系列(十二) -常用调优命令汇总

最近对 JVM 技术知识进行了重新整理,再次献上 JVM系列文章合集索引,感兴趣的小伙伴可以直接点击如下地址快速阅读。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的加载过程JVM系列(三) -内存布局详解JVM系列(四) -对象的创建过程JVM系列(五) -对象的内存分…

bmp390l传感器的IIC命令通信(学习汇总)

参考链接: BMP390高精度压力传感器数据读取与处理(基于STM32)-CSDN博客 https://blog.csdn.net/qq_43862401/article/details/106502397 利用usb转iic模块测试bmp390l传感器采集当前环境的温度和气压数据,下图中reserved表示…

Windows11 家庭版安装配置 Docker

1. 安装WSL WSL 是什么: WSL 是一个在 Windows 上运行 Linux 环境的轻量级工具,它可以让用户在 Windows 系统中运行 Linux 工具和应用程序。Docker 为什么需要 WSL: Docker 依赖 Linux 内核功能,WSL 2 提供了一个高性能、轻量级的…

2025系统架构师(一考就过):案例题之一:嵌入式架构、大数据架构、ISA

一、嵌入式系统架构 软件脆弱性是软件中存在的弱点(或缺陷),利用它可以危害系统安全策略,导致信息丢失、系统价值和可用性降低。嵌入式系统软件架构通常采用分层架构,它可以将问题分解为一系列相对独立的子问题,局部化在每一层中…

新手SEO指南如何快速入门与提升网站排名

内容概要 搜索引擎优化(SEO)是提高网站可见度和排名的重要手段,尤其对新手来说,掌握其基本概念和实用技巧至关重要。本文将针对新手提供一系列的指导,帮助你快速入门并逐步提升网站排名。 首先,了解SEO的…

Oracle下载安装(保姆级教学)

方法1 1. 官网下载安装包 对于 Oracle 软件的下载,建议通过官网免费下载,安全且有保证。 下载地址: https://www.oracle.com/database/technologies/oracle19c-windows-downloads.html 通过下载页面可以选择安装压缩包( WIND…

第22天:信息收集-Web应用各语言框架安全组件联动系统数据特征人工分析识别项目

#知识点 1、信息收集-Web应用-开发框架-识别安全 2、信息收集-Web应用-安全组件-特征分析 一、ICO图标: 1、某个应用系统的标示,如若依系统有自己特点的图标;一旦该系统出问题,使用该系统的网站都会受到影响; 2、某个公…

重温设计模式--建造者模式

文章目录 建造者模式(Builder Pattern)概述建造者模式UML图作用:建造者模式的结构产品(Product):抽象建造者(Builder):具体建造者(Concrete Builder&#xff…

arcgisPro相接多个面要素转出为完整独立线要素

1、使用【面转线】工具,并取消勾选“识别和存储面邻域信息”,如下: 2、得到的线要素,如下:

51单片机仿真摇号抽奖机源程序 12864液晶显示

资料下载地址:51单片机仿真摇号抽奖机源程序12864液晶显示仿真程序 一、功能介绍 单片机连接12864(st7920)液晶显示器和1个按键接INT0,模拟一个抽奖机。 实现效果: 1、液晶初始显示“祝你好运!”&#xff…

如何在 Ubuntu 22.04 上安装 Graylog 开源日志管理平台

简介 Graylog 的开源特性、丰富的功能、灵活性和可扩展性使其成为一个流行的日志管理平台。在本教程中,我将向你展示如何在 Ubuntu 22.04 上安装 Graylog,包括配置 Graylog 服务器软件包和访问 Graylog Web UI。 Graylog 是什么? Graylog …

技术发展历程:从 CORBA 到微服务

CORBA CORBA(Common Object Request Broker Architecture)诞生于上世纪 90 年代初期,由 OMG 组织提出,它作为一种开创性的分布式对象技术规范,在当时的计算机领域引起了轰动。其核心构成部分——接口定义语言&#xf…

抢单人机交互「新红利」!哪些细分赛道“多金”?

受终端用户的智能座舱体验需求驱动,视觉、听觉、触觉等人机交互方式加速焕新。 一方面,人机多模交互引领,车载声学进入新周期。根据高工智能汽车研究院统计数据,单车的车载扬声器搭载量正在快速起量。 很显然,作为智…

前端学习DAY26(华为平板页面)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>平板图片</title><style> .box{text-al…

算法 双指针技巧

文章目录 双指针[leetcode167 两数之和](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/description/)分析题解 [leetcode88 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/description/)分析题解 [leetcode142 环形链表](https://lee…

DevOps工程技术价值流:制品库Nexus与Harbor的实战探索

制品库作为DevOps价值流中的一个关键环节&#xff0c;其重要性日益凸显。制品库&#xff0c;作为存储和管理软件开发过程中产生的各种制品&#xff08;如代码包、镜像、配置文件等&#xff09;的仓库&#xff0c;是连接开发、测试、部署等多个环节的桥梁。它不仅能够实现制品的…

R9000P键盘失灵解决办法

问题描述 突然&#xff0c;就是很突然&#xff0c;我买的R9000P 2024不到三个月&#xff0c;键盘突然都不能用了&#xff0c;是所有键盘按键都无效的那种。&#xff08;可以使用外接键盘&#xff09; 解决办法 我本科室友说的好哈&#xff0c;全坏全没坏。 &#xff08;该解…

潜在狄利克雷分配LDA 算法深度解析

引言 潜在狄利克雷分配&#xff08;Latent Dirichlet Allocation, LDA&#xff09;是一种广泛应用于文本挖掘和信息检索领域的主题模型。它能够从文档集合中自动发现隐藏的主题结构&#xff0c;为理解大规模文本数据提供了强有力的工具。本文将着重讲解 LDA 的核心理论&#x…

sentinel学习笔记6-限流降级(上)

本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏&#xff0c;写的好值得推荐&#xff0c;我整理的有所删减&#xff0c;推荐看原文。 https://blog.csdn.net/baidu_28523317/category_10400605.html sentinel 实现限流降级、熔断降级、黑白名单限流降级、系统自适应…