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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

一文带你认识Docker

發布時間:2023/10/18 编程问答 75 如意码农
生活随笔 收集整理的這篇文章主要介紹了 一文带你认识Docker 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Docker是一個容器技術的應用,而底層是由于Linux容器實現的,Docker只是實現層。

一、Linux容器

1、隔離與共享

一臺服務器運行著多個邏輯隔離的服務器進程,誰的運行環境都不希望影響到誰,也就是一個物理機需要虛擬出多個環境或容器,Linux提供一種創建和進入容器的方式,操作系統讓應用程序就像在獨立的機器上運行一樣,但又能共享很多底層的資源。

2、實現基礎

Linux容器功能是基于cgroups和Namespace實現的。

(1)cgroups(control groups 控制組)

cgroups是將進程分組管理的內核功能,通過cgroups可以隔離進程,同時還可以隔離進程的資源占用(cpu,內存等)情況,在操作系統底層限制物理資源,起到container的作用,進程可用的cpu資源由cpuset指定。

(2)Namespace

Namespace讓每個進程擁有獨立的PID、IPC和網絡空間。Namespace是通過clone系統調用來實現的。clone系統調用的第三個參數flags就是通過設置Namespace來劃分資源的。

Linux一共構建了6種不同的Namespace,用于不同場景下的隔離

  1. Mount - 隔離文件系統掛載點
  2. UTS - 隔離主機名和域名
  3. IPC - 隔離進程間通信資源
  4. PID - 隔離PID空間
  5. Network - 隔離網絡接口
  6. User - 隔離用戶/用戶組空間

二、Docker簡介

1、是什么

Docker是一個開源的應用容器引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在本地編譯通過的容器可以批量的在生產環境上部署。

Docker類似于集裝箱,各式各樣的貨物,經過集裝箱的標準化進行托管,而集裝箱與集裝箱之前沒有影響。Docker是一個開放平臺,使開發人員和管理員可以在稱為容器的松散隔離的環境中構建鏡像、交互和運行分布式應用程序,以便在開發、QA和生產環境之間進行高效的應用程序生命周期管理。

2、Docker三個重要組件

(1)鏡像(images)

一個特殊的文件系統。操作系統分為內核和用戶空間,對于Linux來說,內核啟動后會掛載root文件系統為其提供用戶控件的支持。而Docker鏡像,就相當于是一個root文件系統。

除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含一些為運行時準備的配置參數。鏡像不包含任何動態數據,其內容在構建之后也不會被改變。

鏡像實際是由多層文件系統聯合組成。鏡像構建時,會一層一層構建,前一層是后一層的基礎。每一層構建完就不會再改變,后一層上的任何改變只發生在當前層。比如:刪除前一層文件的操作,實際不是真的刪除前一層的文件,而是僅把當前層標記為該文件已刪除。

分層存儲的特征還使得鏡像的復用、定制變的更為容易。甚至可以用之前構建好的鏡像作為基礎層,然后進一步添加新的層,以定制自己所需的內容,構建新的鏡像。

(2)容器(Container)

鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的類和實例,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、暫停、停止、刪除等。

容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行與屬于自己獨立的命名空間,容器也是分層存儲。

容器存儲層的生命周期跟容器一樣,容器消亡時,容器存儲層也會消亡,任何保存于容器存儲層的信息都會丟失。

容器不應該向其存儲層內寫入任何數據,容器存儲層也要保持無狀態化。所有的文件寫入操作,都應該使用數據卷、或者綁定宿主目錄,在這些位置的讀寫會跳過存儲層,直接對宿主發生讀寫,其性能和穩定性更高。容器消亡后數據卷的數據不會丟失。

容器在整個應用程序生命周期工作流中提供以下優點:隔離性、可移植性、靈活性、可伸縮性和可控性。 最重要的優點是可在開發和運營之間提供隔離。

(3)倉庫(Registry)

Docker Registry是一個集中存儲、分發鏡像的服務。

一個Registry可以包含多個倉庫(Repository),每個倉庫只包含一種軟件,但可以包含多個標簽(tag,也就是版本),每個標簽對應一個鏡像。

這三個組件的關系如下圖,比如有兩個倉庫,分別是Redis和MySQL

3、docker持續開發工作流

二、Docker安裝、卸載

環境:Centos7

1、安裝

Centos有配置docker社區版的yum包,所以安裝比較方便。

1、先更新yum安裝包
sudo yum update
2、安裝docker
yum install docker-ce
3、安裝之后查看docker版本,也可以用docker info
docker version
4、如果出現Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
啟動docker
service docker start
5、配置開機啟動
sudo systemctl enable docker

  

docker默認是docker官方的下載源,下載速度會比較慢,所以一般是配置國內的下載源,這里介紹阿里的下載源。

1、登陸阿里云獲取鏡像加速器地址

https://cr.console.aliyun.com/undefined/instances/mirrors

上圖中就有針對各種服務器的配置詳情。

2、卸載

(1)首先查看安裝的Docker yum包

yum list installed | grep docker

  

(2)依次卸載yum包

yum -y remove 包名

  

(3)卸載掉之后,依次刪除目錄

rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker

  

如果出現如下錯誤:

rm: cannot remove ‘/var/lib/docker/containers’: Device or resource busy

  

執行如下命令:
cat /proc/mounts|grep containers
umount /var/lib/docker/containers/

  


===============================

我是Liusy,一個喜歡健身的程序員。

獲取更多干貨以及最新消息,請關注公眾號:上古偽神

如果對您有幫助,點個關注就是對我最大的支持!!!

總結

以上是生活随笔為你收集整理的一文带你认识Docker的全部內容,希望文章能夠幫你解決所遇到的問題。

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