日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker基础篇——万字解读小鲸鱼

發布時間:2024/8/1 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker基础篇——万字解读小鲸鱼 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????????

目錄

前言? ? ? ??

為什么會出現docker?

背景

docker理念

容器和虛擬機比較

容器發展簡史

?容器虛擬化技術

Why Docker

docker的基本組成

??鏡像(image)

容器(container)

倉庫(repository)

總結

第一個docker鏡像——hello-world

run干了什么

docker為什么比虛擬機快

幫助啟動類命令

幫助命令

鏡像命令

docker images 查看所有本地主機上的鏡像

docker search 搜索鏡像

docker pull 下載鏡像

查看鏡像/容器/數據卷所占的空間

刪除鏡像

容器命令

新建容器并啟動

列出運行中的程序

退出容器

刪除容器

啟動和停止容器操作

后臺啟動容器

前臺啟動和后臺啟動區別

Detached (-d)

Foregroud(不寫-d)

其他常用命令(重點)

查看日志

查看容器中的進程信息

查看鏡像的元數據

進入當前正在運行的容器

方式一

方式二

attach與exec對比:

從容器拷貝文件到主機上

?導入和導出容器

Docker鏡像

鏡像是什么?

鏡像是分層的

???UnionFS(聯合文件系統)

Docker鏡像加載原理

為什么 Docker 鏡像要采用這種分層結構呢?

??重點理解

Docker容器數據卷

數據卷是什么?

數據卷能干什么?

?容器和宿主機之間數據共享

查看數據卷是否掛載成功?

??讀寫規則限制說明

卷的繼承和共享

?容器1完成和宿主機的映射?

容器2繼承容器1的卷規則

繼承舉例

思考

總結一波當前學的命令:

練習:下載nginx

端口暴露

查找ngnix的位置 whereis

作業: docker來裝一個tomcat

???????

前言?

?????????大家好,我是躺平哥,這是我的docker學習筆記基礎篇,用來記錄自己的學歷歷程,我感覺學習docker主要是多敲多練多看。我也是個小白,如果有寫的不好的地方也請大家多多指點!? ? ?

為什么會出現docker?

背景

在公司開發過程中,開發需要清楚的告訴運維部署團隊,用的全部配置文件+所有軟件環境。不過,即便如此,仍然常常發生部署失敗的狀況。

于是——

docker誕生了

Docker的出現使得Docker得以打破過去「程序即應用」的觀念。

透過鏡像(images)將作業系統核心除外,運作應用程式所需要的系統環境,由下而上打包,達到應用程式跨平臺間的無縫接軌運作。

大白話來講:就是我把環境連帶程序都給你一塊打包起來了!

docker理念

Docker是基于Go語言實現的云開源項目。

只需要一次配置好環境,換到別的機子上就可以一鍵部署好,大大簡化了操作。

?????一句話:

???解決了運行環境配置問題的軟件容器, 方便做持續集成并有助于整體發布的容器虛擬化技術。

在了解docker之前我們先聊聊虛擬機,虛擬機也是一個偉大的發明!

容器和虛擬機比較

容器發展簡史

傳統虛擬機的缺點

  • 資源占用多,因為它要模擬出一整套操作系統
  • 冗余步驟多,虛擬機創建出一個操作系統往往要有很多步驟
  • 啟動慢,往往好幾分鐘。

?容器虛擬化技術

由于前面虛擬機存在某些缺點,Linux發展出了另一種虛擬化技術:

Linux容器(Linux Containers,縮寫為 LXC)

Linux 容器不是模擬一個完整的操作系統而是對進程進行隔離。

有了容器,就可以將軟件運行所需的所有資源打包到一個隔離的容器中。

容器與虛擬機不同,不需要捆綁一整套操作系統,只需要軟件工作所需的庫資源和設置。

*容器內的應用進程直接運行于宿主的內核,容器內沒有自己的內核且也沒有進行硬件虛擬。因此容器要比傳統虛擬機更為輕便。

例如下圖:

那話又說回來了——

Why Docker

更輕量: 基于容器的虛擬化,僅包含業務運行所需的runtime環境,CentOS/Ubuntu基礎鏡像僅170M;宿主機可部署100~ 1000個容器

●更高效:無操作系統虛擬化開銷

●計算:輕量,無極外開銷

#存儲:系統盤aufs/dmloverlayts; 數據盤volume

●網絡:宿主機網絡,NS隔離

.更敏捷、更靈活:

●分層的存儲和包管理,devops理念

●支持多種網絡配置

docker的基本組成

下面的圖可以很清楚的看出docker各個組成之間的轉換關系,以及對應命令:

??鏡像(image)

Docker 鏡像(Image)就是一個只讀的模板。鏡像可以用來創建 Docker 容器,一個鏡像可以建很多容器。

它也相當于是一個root文件系統。比如官方鏡像 centos:7 就包含了完整的一套 centos:7 最小系統的 root 文件系統。

相當于容器的“源代碼”,docker鏡像文件類似于Java的類模板,而docker容器實例類似于java中new出來的實例對象。

容器(container)

下面我們從以下兩個角度來介紹容器?:

1 從面向對象角度

????????Docker 利用容器(Container)獨立運行的一個或一組應用,應用程序或服務運行在容器里面,容器就類似于一個虛擬化的運行環境,容器是用鏡像創建的運行實例。就像是Java中的類和實例對象一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器為鏡像提供了一個標準的和隔離的運行環境,它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺

2 從鏡像容器角度

可以把容器看做是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。

倉庫(repository)

倉庫(Repository)是集中存放鏡像文件的場所。

最大的公開倉庫是 DockerHub(Docker Hub)

tar與dockerfile以后會說

總結

鏡像文件

  • image 文件生成的容器實例,本身也是一個文件,稱為鏡像文件。

容器實例

  • ?一個容器運行一種服務,當我們需要的時候,就可以通過docker客戶端創建一個對應的運行實例,也就是我們的容器

倉庫

  • 就是放一堆鏡像的地方,我們可以把鏡像發布到倉庫中,需要的時候再從倉庫中拉下來就可以了。

第一個docker鏡像——hello-world

run干了什么

docker為什么比虛擬機快

(1)docker有著比虛擬機更少的抽象層:

(2)docker利用的是linux的內核,而不需要加載操作系統OS內核

幫助啟動類命令

  • 啟動docker : systemctl start docker
  • 停止docker : systemctl stop docker
  • 重啟docker : systemctl restart docker
  • 查看docker狀態: systemctl status docker
  • 開機啟動 : systemctl enable docker
  • 查看docker概要信息: docker info
  • 查看docker 總體幫助文檔: docker --help
  • 查看docker命令幫助文檔: docker 具體命令 --help

幫助命令

docker version //顯示docker 的版本信息

docker info //顯示docker 的系統信息 包括鏡像和容器數量

docker 命令 -- help

鏡像命令

docker images 查看所有本地主機上的鏡像

REPOSITORY 倉庫的鏡像

TAG 鏡像的標簽,也就是鏡像版本號,不寫默認最新版

IMAGE ID 鏡像的id

CREATE 鏡像的創建時間

SIZE 鏡像的大小

可選項

  • -a --all 列出所有鏡像
  • -q --quiet 只列出鏡像的id

docker search 搜索鏡像

可選項,通過搜索來過濾

[root@ecs-287241 ~]# docker search mysql --filter=stars=3000

NAME DESCRIPTION STARS OFFICIAL AUTOMATED

mysql MySQL is a widely used, open-source relation… 13384 [OK]

mariadb MariaDB Server is a high performing open sou… 5109 [OK]

[root@ecs-287241 ~]#

篩選starts大于3000的

docker pull 下載鏡像

下載鏡像 docker pull 鏡像名 [: tag版本]

  • docker pull mysql
  • 如果不寫tag,默認就是latest
  • 分層下載,這是docker images 的核心,聯合文件信息

查看鏡像/容器/數據卷所占的空間

docker system df

刪除鏡像

docker rmi id

[root@ecs-287241 ~]# docker rmi -f feb5d9fea6a5

Untagged: hello-world:latest

Untagged: hello-world@sha256:18a657d0cc1c7d0678a3fbea8b7eb4918bba25968d3e1b0adebfa71caddbc346

Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412

[root@ecs-287241 ~]# docker images

?面試題:談談docker虛懸鏡像是什么?

·????????是什么

·????????倉庫名、標簽都是<none>的鏡像,俗稱虛懸鏡像dangling image

·????????長什么樣

·????????后續Dockerfile章節再介紹

容器命令

說明:我們有了鏡像才可以創建容器,linux,下載一個centos來學習

docker pull centos (centos小型的服務器)

新建容器并啟動

docker run [可選參數] image

#參數說明(最常用參數)

--name="Name" 容器名字 tomcat1 tomcat2 用來區分容器

-d 后臺方式運行

-i:以交互模式運行容器,通常與 -t 同時使用;

-t:為容器重新分配一個偽輸入終端,通常與 -i 同時使用;

也即啟動交互式容器(前臺有偽終端,等待交互),就是等待你輸入命令!

-it 使用交互方式運行,進入容器查看內容


為什么要寫 -it?

不寫-it你會發現是這樣的

我們想要一個終端進行交互!輸入命令,所以必須寫!

后面往往還要寫上/bin/bash:?是指此腳本使用/bin/bash來解釋執行。/bin/bash:放在鏡像名后的shell命令,這里我們希望有個交互式 Shell,因此用的是 /bin/bash。

#使用鏡像centos:latest以交互模式啟動一個容器,在容器內執行/bin/bash命令。

docker run -it centos /bin/bash

或者

docker run -it centos bash 也可以!即使你沒寫/bin/bash 他也會默認在你后面帶一個shell腳本


-p 指定容器的端口 -p 8080:8080

-p IP:主機端口:容器端口

-p 主機端口:容器端口 (常用)

-p 容器端口

-P: 隨機端口映射,大寫P

-p: 指定端口映射,小寫p

一般我們用小p

如下圖:

左邊是宿主機暴露的端口,右邊是docker訪問redis暴露的端口

啟動 并進入容器

[root@ecs-287241 ~]# docker run -it centos /bin/bash

查看容器內的centos,基礎鏡像都是不完善的

[root@882655ac322c /]# ls

bin etc lib lost+found mnt proc run srv tmp var

dev home lib64 media opt root sbin sys usr

從容器中退到主機

exit

列出運行中的程序

docker ps 命令

-a 當前正在運行,帶出歷史運行過的容器。

-l:顯示最近創建的容器。

-n=? 最近創建的容器。

-q 靜默模式,只顯示容器的編號。

退出容器

exit 直接容器停止并退出

ctrl +p +q 容器不停止退出

刪除容器

docker rm 容器id 刪除指定的容器,不能刪除正在運行的容器,如果要強制刪除 rm -f

可以先docker stop 停止容器 再docker rm

docker rm -f $(docker ps -aq) 刪除所有的容器

docker ps -a -qlxargs docker rm

啟動和停止容器操作

docker satrt 容器id 啟動容器

docker restart 容器id 重啟容器

docker stop 容器id 停止當前正在運行的容器

docker kill 容器id 強制停止當前容器

后臺啟動容器

  • 命令 docker run -d 鏡像名!
  • docker run -d centos
  • 問題docker ps,發現了 centos停止了
  • docker run 之后一定要docker ps查看容器是否運行!
  • 常見的坑docker 容器使用后臺運行,就必須要有一個前臺進程,docker發現沒有應用,就會自動停止 。
  • ngnix ,容器啟動后,發現自己沒有提供服務,就會立即停止,就是沒有程序了
  • Nginx?(engine x) 是一個高性能的HTTP和反向代理web服務器

前臺啟動和后臺啟動區別

  • 前臺交互式啟動
  • ?????docker run -it redis:6.0.8
  • ?? ??后臺守護式啟動
  • ??????docker run -d redis:6.0.8

Detached (-d)

如果在docker run后面追加-d=true或者-d,那么容器將會運行在后臺模式。此時所有I/O數據只能通過網絡資源或者共享卷組來進行交互。因為容器不再監聽你執行docker run的這個終端命令行窗口。但你可以通過執行docker attach來重新附著到該容器的會話中。需要注意的是,容器運行在后臺模式下,是不能使用--rm選項的。

Foregroud(不寫-d)

在前臺模式下(不指定-d參數即可),Docker會在容器中啟動進程,同時將當前的命令行窗口附著到容器的標準輸入、標準輸出和標準錯誤中。也就是說容器中所有的輸出都可以在當前窗口中看到。甚至它都可以虛擬出一個TTY窗口,來執行信號中斷。

我們要在在容器中干活!

以redis容器為例,在里面干活

兩個開發方式對比,想必你更能體會到容器的威力!

其他常用命令(重點)

查看日志

查看容器日志:docker logs 容器ID

docker logs -f -t --tail 容器,沒有日志

顯示日志

-tf 顯示日志

--tail number 顯示日志條數

查看容器中的進程信息

查看容器內運行的進程

命令: docker top 容器id

查看鏡像的元數據

命令:

?查看容器內部細節

docker inspect 容器 id

進入當前正在運行的容器

我們通常容器都是使用后臺放式運行的,需要進入容器,修改一些配置

方式一

#命令

docker exec -it 容器id bashShell

[root@ecs-287241 /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6e5cf171dca0 centos "/bin/bash" 10 minutes ago Up 10 minutes serene_goodall [root@ecs-287241 /]# docker exec -it 6e5cf171dca0 /bin/bash [root@6e5cf171dca0 /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@6e5cf171dca0 /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 13:42 pts/0 00:00:00 /bin/bash root 15 0 0 13:54 pts/1 00:00:00 /bin/bash root 30 15 0 13:55 pts/1 00:00:00 ps -ef [root@6e5cf171dca0 /]#

方式二

docker attach 容器id

進入后會發現正在執行當前代碼!

attach與exec對比:

????attach 直接進入容器啟動命令的終端,不會啟動新的進程 用exit退出,會導致容器的停止。

????exec 是在容器中打開新的終端,并且可以啟動新的進程 用exit退出,不會導致容器的停止。

docker exec 進入容器后開啟一個新的終端,可以在里面操作(常用)

docker attach 進入容器正在執行的終端,不會啟動新的進程

從容器拷貝文件到主機上

為了防止別人或者自己誤刪!所以要做備份

docker cp 容器id :容器內路徑 目的主機路徑

[root@ecs-287241 home]# docker cp 6e5cf171dca0:/home/test.java /home [root@ecs-287241 home]# ls one1 test1 test.java wei wei.java www [root@ecs-287241 home]#

拷貝是一個手動過程,未來我們使用 -v卷的技術,可以實現,自動同步

即容器內的home目錄和主機內的home目錄連通,打通

?導入和導出容器

比拷貝docker cp 更加強大,這是拷貝整個容器!

·????????export 導出容器的內容留作為一個tar歸檔文件[對應import命令]

·????????docker export 容器ID > 文件名.tar

·????????import 從tar包中的內容創建一個新的文件系統再導入為鏡像[對應export]

·????????cat 文件名.tar | docker import - 鏡像用戶/鏡像名:鏡像版本號

刪除之后,利用import將abcd.tar變成一個鏡像,然后在通過run運行成為一個容器。

下面我們來深入探究一下docker運行原理!

Docker鏡像

鏡像是什么?

鏡像

是一種輕量級、可執行的獨立軟件包,它包含運行某個軟件所需的所有內容,我們把應用程序和配置依賴打包好形成一個可交付的運行環境(包括代碼、運行時需要的庫、環境變量和配置文件等),這個打包好的運行環境就是image鏡像文件。

只有通過這個鏡像文件才能生成Docker容器實例!

鏡像是分層的

以我們的pull為例,在下載的過程中我們可以看到docker的鏡像好像是在一層一層的在下載

一層一層的下載! 因此鏡像是分層的。

???UnionFS(聯合文件系統)

UnionFS(聯合文件系統):

Union文件系統(UnionFS)是一種分層、輕量級并且高性能的文件系統,它支持對文件系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統下。

Union文件系統是 Docker 鏡像的基礎。鏡像可以通過分層來進行繼承,基于基礎鏡像(沒有父鏡像),可以制作各種具體的應用鏡像。

特性:一次同時加載多個文件系統,但從外面看起來,只能看到一個文件系統,聯合加載會把各層文件系統疊加起來,這樣最終的文件系統會包含所有底層的文件和目錄。

Docker鏡像加載原理

Docker鏡像加載原理:

???docker的鏡像實際上由一層一層的文件系統組成,這種層級的文件系統UnionFS。

bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引導加載kernel, Linux剛啟動時會加載bootfs文件系統,在Docker鏡像的最底層是引導文件系統bootfs。

這一層與我們典型的Linux/Unix系統是一樣的,包含boot加載器和內核。

當boot加載完成之后整個內核就都在內存中了,此時內存的使用權已由bootfs轉交給內核,此時系統也會卸載bootfs。

rootfs (root file system) ,在bootfs之上。包含的就是典型 Linux 系統中的 /dev, /proc, /bin, /etc 等標準目錄和文件。rootfs就是各種不同的操作系統發行版,比如Ubuntu,Centos等等。?

說白了我們只要bootfs和rootfs!

平時我們安裝進虛擬機的CentOS都是好幾個G,為什么docker這里才200M??

對于一個精簡的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序庫就可以了,因為底層直接用宿主機的linux內核(Host的kernel),自己只需要提供 rootfs 就行了

由此可見對于不同的linux發行版, bootfs基本是一致的, rootfs會有差別, 因此不同的發行版可以公用bootfs。

就像這樣:

那么話說回來了——

為什么 Docker 鏡像要采用這種分層結構呢?

其實就是像樂高積木一樣,想用哪塊拿來組裝就行了!

鏡像分層最大的一個好處就是共享資源,方便復制遷移,就是為了復用。

比如說有多個鏡像都從相同的 base 鏡像構建而來,那么 Docker Host 只需在磁盤上保存一份 base 鏡像;

同時內存中也只需加載一份 base 鏡像,就可以為所有容器服務了。而且鏡像的每一層都可以被共享。?

一句話來講分層的意義:

加載簡單,資源復用

??重點理解

·????????Docker鏡像層都是只讀的,容器層是可寫的當容器啟動時,一個新的可寫層被加載到鏡像的頂部。 這一層通常被稱作“容器層”,“容器層”之下的都叫“鏡像層”。

所有對容器的改動——無論添加、刪除、還是修改文件都只會發生在容器層中。只有容器層是可寫的,容器層下面的所有鏡像層都是只讀的。

Docker容器數據卷

?????坑:容器卷記得加入

??????--privileged=true

???why??

?Docker掛載主機目錄訪問如果出現cannotopen directory .: Permission denied

解決辦法:在掛載目錄后多加一個--privileged=true參數即可

如果是CentOS7安全模塊會比之前系統版本加強,不安全的會先禁止,所以目錄掛載的情況被默認為不安全的行為,

在SELinux里面掛載目錄被禁止掉了額,如果要開啟,我們一般使用--privileged=true命令,擴大容器的權限解決掛載目錄沒有權限的問題,也即使用該參數,container內的root擁有真正的root權限,否則,container內的root只是外部的一個普通用戶權限。一個容器就相當于是一個小的linux內核。

數據卷是什么?

卷就是目錄或文件,存在于一個或多個容器中,由docker掛載到容器,但不屬于聯合文件系統,因此能夠繞過Union File System提供一些用于持續存儲或共享數據的特性:

卷的設計目的就是數據的持久化,完全獨立于容器的生存周期,因此Docker不會在容器刪除時刪除其掛載的數據卷。

·????????一句話:有點類似我們Redis里面的rdb和aof文件

·????????將docker容器內的數據保存進宿主機的磁盤中

·????????運行一個帶有容器卷存儲功能的容器實例

·?????????docker run -it --privileged=true -v /宿主機絕對路徑目錄:/容器內目錄????? 鏡像名

映射我們用“ :”,即冒號表示。

數據卷能干什么?

將運用與運行的環境打包鏡像,run后形成容器實例運行 ,但是我們對數據的要求希望是久化的。?

Docker容器產生的數據,如果不備份,那么當容器實例刪除后,容器內的數據自然也就沒了。

為了能保存數據在docker中我們使用卷。?

特點:

1:數據卷可在容器之間共享或重用數據。

2:卷中的更改可以直接實時生效,爽。

3:數據卷中的更改不會包含在鏡像的更新中。

4:數據卷的生命周期一直持續到沒有容器使用它為止。

?容器和宿主機之間數據共享

docker:

host宿主機

查看數據卷是否掛載成功?

docker inspect 容器ID

1? docker修改,主機同步獲得?

2 主機修改,docker同步獲得

3 docker容器stop,主機修改,docker容器重啟數據依舊同步。

因此即使是docker容器停止了也能夠同步數據

??讀寫規則限制說明

只限制容器,沒有限制主機

?rw = read + write

·?????????docker run -it --privileged=true -v /宿主機絕對路徑目錄:/容器內目錄:rw????? 鏡像名

·????????默認同上案例,默認就是rw

·????????只讀

·????????容器實例內部被限制,只能讀取不能寫

?/容器目錄:ro鏡像名??????????????就能完成功能,此時容器自己只能讀取不能寫??

ro = read only?

此時如果宿主機寫入內容,可以同步給容器內,容器可以讀取到。

docker run -it --privileged=true -v /宿主機絕對路徑目錄:/容器內目錄:ro????? 鏡像名

操作一下:

容器

宿主機

卷的繼承和共享

?容器1完成和宿主機的映射?

docker run -it? --privileged=true -v /mydocker/u:/tmp --name u1ubuntu

容器2繼承容器1的卷規則

·????????docker run -it? --privileged=true --volumes-from 父類? --name u2 ubuntu

繼承舉例

u3繼承u1

思考

u1stop掉了,u3和宿主機之間同步數據,u1start之后會同步數據嗎?

會的!

總結一波當前學的命令:

1.容器上拷貝到linux上?cp

2.講一個image啟動成一個container容器?run

3.運行了容器怎么停止?kill/stop

4.怎么啟動容器?start 怎么暫停?pause

5.logs:查看日志 inspect是干什么的?查看源數據

6.attach 進入已經啟動的重端,而exec是啟動一個新的終端

7.^p^q是以運行的方式退出

8.port 控制端口

9.ps可以看到當前所有的進程信息

10,top查看進程信息

port # 查看映射端口對應的容器內部源端口

pause # 暫停容器

ps # 獵戶容器列表

pull # 從docker鏡像源服務器拉取指定鏡像或者庫鏡像

push # 推送指定鏡像或者庫鏡像至docker源服務器

restart # 重啟運行的容器

rm # 移除一個或多個容器

rmi # 移除一個或多個鏡像 (無容器使用該鏡像才可刪除,否則需要刪除相關容器才可繼續或 -f 強制刪除)

run # 創建一個新的容器并運行一個命令

save # 保存一個鏡像為一個 tar 包【對應 load】

search # 在 docker hub 中搜索鏡像

start # 啟動容器

stop # 停止容器

tag # 給源中鏡像打標簽

top # 查看容器中運行的進程信息

unpause # 取消暫停容器

version # 查看 docker版本號

wait # 截取容器停止時的退出狀態值

練習:下載nginx

端口暴露

[root@ecs-287241 home]# docker run -d --name ngimx01 -p 3344:80 nginx 303bb4275798c811290a237bde71456194ed41fe82fdc9b03fb72df87edb6fbc [root@ecs-287241 home]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 303bb4275798 nginx "/docker-entrypoint.…" 5 seconds ago Up 4 seconds 0.0.0.0:3344->80/tcp, :::3344->80/tcp ngimx01 [root@ecs-287241 home]# curl localhost:3344 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> [root@ecs-287241 home]#

查找ngnix的位置 whereis

root@303bb4275798:/# whereis ngnix

ngnix:地址

root@303bb4275798:/#

思考問題:我們每次改動nginx配置文件.都需要進入容器內部?

十分的麻煩,我要是可以在容器外部提供一個映射路徑 ,達到在容器修改文件名,容器內部就可以自動修改? -v 數據卷

作業: docker來裝一個tomcat

#官方的使用

docker run -it --rm tomcat:9.0

#我們之前的啟動都是后臺,停止了容器之后,容器還是可以查到

docker run -it --rm. 一般用來測試,用完就刪除

?感謝大家觀看!

總結

以上是生活随笔為你收集整理的docker基础篇——万字解读小鲸鱼的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。