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.pswp.cn/web/63888.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63888.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63888.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

COMSOL with Matlab

文章目錄 基本介紹COMSOL with MatlabCOMSOL主Matlab輔Matlab為主Comsol為輔 操作步驟常用指令mphopenmphgeommghmeshmphmeshstatsmphnavigatormphplot常用指令mphsavemphlaunchModelUtil.clear 實例教學自動另存新檔**把語法套用到邊界條件**把語法套用到另存新檔 函數及其微分…

游戲關卡設計方法的雜感

1、正規思路是:先寫設計文檔,畫平面圖,再做白模關卡,再做正規模型的關卡。 一步步擴大。 當然是有道理的,從小到大, 但實際上這需要很強的想象力,很多細節靠腦補,初學者很難做好。…

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表示…

C/C++基礎知識復習(43)

1) 什么是運算符重載?如何在 C 中進行運算符重載? 運算符重載是指在 C 中為現有的運算符定義新的行為,使得它們能夠用于用戶定義的數據類型(如類或結構體)。通過運算符重載,可以讓自定義類型像內置數據類型…

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…

每日一題(4)

有一只蝸牛位于二維坐標系的原點(0,0),在x軸上有n根平行于y軸的竹竿,它們底部的縱坐標為0,橫坐標分別為x_1,x_2,\cdots,x_n。蝸牛想要從原點走到第n根竹竿的底部(x_n,0)。蝸牛在x軸上的移動速度是1單位每秒,在竹竿上向上爬的速度是…

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…

搶單人機交互「新紅利」!哪些細分賽道“多金”?

受終端用戶的智能座艙體驗需求驅動,視覺、聽覺、觸覺等人機交互方式加速煥新。 一方面,人機多模交互引領,車載聲學進入新周期。根據高工智能汽車研究院統計數據,單車的車載揚聲器搭載量正在快速起量。 很顯然,作為智…

記錄vue+elementUI table的組件

可展示圖片&#xff0c; 可使用slot插槽添加邏輯&#xff0c; 循環表cloumn&#xff0c; 循環添加操作配置actionButtons <el-tablev-loading"loading":data"tableData"borderstyle"width: 100%"selection-change"selectChange"…

圖像配準有哪些技術?

目錄 圖像配準技術 1.基于特征的圖像配準 2.基于強度的圖像配準 3.基于模型的圖像配準 4.基于學習的圖像配準 5.混合方法 圖像配準的應用 圖像配準技術入門 常見問題解答 圖像配準是計算機視覺和醫學成像中的一項關鍵技術&#xff0c;用于將多幅圖像對齊到一個共同的坐…

前端學習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…