自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不知不覺(jué)已是容器化時(shí)代,這篇文章帶你快速入門(mén)Docker容器技術(shù)

安全 云安全
Docker真的有這么神奇嗎,我們平時(shí)部署一套系統(tǒng)應(yīng)用少說(shuō)得花個(gè)個(gè)把小時(shí),在部署過(guò)程中如果遇到啥問(wèn)題花費(fèi)一天估計(jì)都很難搞定,那利用Dorcker技術(shù)真的可以大大縮短我們的部署時(shí)間嗎,今天我們就來(lái)學(xué)習(xí)一下這門(mén)技術(shù)吧!

[[284540]]

前言

Docker真的有這么神奇嗎,我們平時(shí)部署一套系統(tǒng)應(yīng)用少說(shuō)得花個(gè)個(gè)把小時(shí),在部署過(guò)程中如果遇到啥問(wèn)題花費(fèi)一天估計(jì)都很難搞定,那利用Dorcker技術(shù)真的可以大大縮短我們的部署時(shí)間嗎,今天我們就來(lái)學(xué)習(xí)一下這門(mén)技術(shù)吧!

 

Docker是什么

當(dāng)我們需要部署一個(gè)應(yīng)用服務(wù)時(shí),我還是以部署Zabbix監(jiān)控系統(tǒng)為例,我們傳統(tǒng)的部署方式是一臺(tái)物理服務(wù)器上首先安裝操作系統(tǒng)比如Linux系統(tǒng),然后在部署Zabbix監(jiān)控系統(tǒng)所需要的依賴(lài)環(huán)境如LAMP(Linux+Apache+Mysql+PHP)和Zabbix一些應(yīng)用服務(wù)(Zabbix Server、Zabbix Database、Zabbix Web等)。傳統(tǒng)應(yīng)用服務(wù)部署方式如下圖所示。 

不知不覺(jué)已是容器化時(shí)代,這篇文章帶你快速入門(mén)Docker容器技術(shù)

這樣一種部署方式會(huì)存在一些問(wèn)題,最明顯的資源會(huì)產(chǎn)生浪費(fèi),現(xiàn)在的物理服務(wù)器動(dòng)不動(dòng)就是十幾核的CPU,上百G的內(nèi)存,幾個(gè)T的硬盤(pán)。如果只部署一個(gè)應(yīng)用服務(wù)的話完全不需要這么高的配置。往往會(huì)存在CPU和內(nèi)存使用率都不到10%的情況。所以后來(lái)我們知道有了虛擬化技術(shù),通過(guò)VMware這些虛擬化軟件利用Hypervisor虛擬化技術(shù)把一臺(tái)物理服務(wù)器劃分成多臺(tái)虛擬機(jī),根據(jù)應(yīng)用服務(wù)需求合理分配CPU、內(nèi)存資源。然后安裝不同的操作系統(tǒng)部署不同的應(yīng)用服務(wù),這樣的部署方式資源相對(duì)來(lái)說(shuō)得到了有效的利用。 

不知不覺(jué)已是容器化時(shí)代,這篇文章帶你快速入門(mén)Docker容器技術(shù)

虛擬機(jī)其實(shí)還是沒(méi)有充分的利用資源的,即使你在初始只劃分1核CPU,2G內(nèi)存給一臺(tái)虛擬機(jī),這物理資源實(shí)實(shí)在在地就被占用了,但是你運(yùn)行的應(yīng)用服務(wù)有時(shí)候也只需要占用一點(diǎn)點(diǎn)資源就行了。所以我們的目標(biāo)是能不能把物理資源直接分配給應(yīng)用服務(wù),應(yīng)用服務(wù)用多少就分配給多少。比如我們部署Zabbix監(jiān)控系統(tǒng)會(huì)包含了許多的依賴(lài)和服務(wù),所有這些依賴(lài)服務(wù)的集合(LAMP環(huán)境+ Zabbix Server、Zabbix Database、Zabbix Web等)就可以理解為一個(gè)APP,在Docker中被叫做Container——容器。每個(gè)容器相當(dāng)于運(yùn)行一個(gè)應(yīng)用服務(wù),相互之間是隔離的互不影響。另外我們傳統(tǒng)的應(yīng)用部署方式是不利于遷移和擴(kuò)展地,比如說(shuō)我這個(gè)應(yīng)用服務(wù)是在Linux平臺(tái)之中的,現(xiàn)在想要把它遷移到Windows平臺(tái)當(dāng)中,這肯定是不能夠遷移的,我們還得基于Windows平臺(tái)再去搭建一套環(huán)境。而如果是Docker Container的話就可以順利運(yùn)行于不同的操作系統(tǒng)平臺(tái),只需要在新的環(huán)境下啟動(dòng)所需要的容器就行了。這就大大節(jié)省了我們部署所花費(fèi)的時(shí)間,并且降低部署過(guò)程中出現(xiàn)問(wèn)題的風(fēng)險(xiǎn)。這就是Docker最基本的作用了,更多資料可以查看Docker官方網(wǎng)站www.docker.com。 

不知不覺(jué)已是容器化時(shí)代,這篇文章帶你快速入門(mén)Docker容器技術(shù)

Docker三大核心概念

我們要學(xué)習(xí)Docker容器技術(shù),必須要了解它的三個(gè)最重要的概念I(lǐng)mage(鏡像)、Container(容器)和Repository(倉(cāng)庫(kù)),大部分的操作都是圍繞這三個(gè)核心概念進(jìn)行的。

  • Image:鏡像是創(chuàng)建容器的基礎(chǔ),可以理解為是一個(gè)只讀模板。例如我們Zabbix監(jiān)控系統(tǒng)需要多臺(tái)服務(wù)器上進(jìn)行部署,那么你就可以把Zabbix監(jiān)控系統(tǒng)應(yīng)用程序及其依賴(lài)打包到一個(gè)Image文件,創(chuàng)建出一個(gè)Zabbix監(jiān)控系統(tǒng)鏡像作為一個(gè)模板,想要部署的服務(wù)器相當(dāng)于去拷貝這個(gè)鏡像文件就可以了。
  • Container:容器是從鏡像創(chuàng)建的一個(gè)運(yùn)行實(shí)例,它可以被啟動(dòng)、停止、刪除等,所創(chuàng)建的每一個(gè)容器都是相互隔離的。容器運(yùn)行著我們所需要的應(yīng)用服務(wù),例如Docker部署Zabbix監(jiān)控系統(tǒng)相當(dāng)于先從一個(gè)標(biāo)準(zhǔn)的Zabbix監(jiān)控系統(tǒng)鏡像拷貝到本地服務(wù)器上,然后根據(jù)這個(gè)Image文件生成容器實(shí)例運(yùn)行,并且你可以對(duì)其進(jìn)行相關(guān)配置修改。
  • Repository:倉(cāng)庫(kù)是用來(lái)集中保存鏡像的地方,當(dāng)你創(chuàng)建完自己的鏡像以后,你可以使用push推送命令將它上傳到倉(cāng)庫(kù),這樣一來(lái)當(dāng)下次要在另一臺(tái)服務(wù)器上使用這個(gè)鏡像的時(shí)候,你只需要使用pull命令從倉(cāng)庫(kù)上下載下來(lái)就可以了。Repository分為公有和私有,最常用的Repository是官方的Docker Hub ,這也是默認(rèn)的Repository,并且擁有大量的官方鏡像可以使用。網(wǎng)址為:hub.docker.com/ 。 

Docker安裝

Docker分為兩個(gè)版本:社區(qū)版(Community Edition,縮寫(xiě) CE)和企業(yè)版(Enterprise Edition,縮寫(xiě) EE)。社區(qū)版本包括了大部分的核心功能滿(mǎn)足大部分的需求。企業(yè)版包含了一些收費(fèi)服務(wù),個(gè)人用戶(hù)一般用不到。所以我以CentOS7系統(tǒng)安裝Docker CE為例??蓞⒖脊倬W(wǎng)文檔進(jìn)行安裝https://docs.docker.com/install/linux/docker-ce/centos/

1.安裝docker依賴(lài)于系統(tǒng)的一些必要工具。

  1. # yum install -y yum-utils device-mapper-persistent-data lvm2 

2.添加docker ce版本yum源,這里是官方的,當(dāng)然你也可以換為國(guó)內(nèi)的yum源,比如阿里云等。

  1. # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 

3.安裝docker ce。

  1. # yum install -y docker-ce 

4.安裝完成后啟動(dòng)docker。

  1. # systemctl start docker 

這樣Docker就安裝完成了。

Docker基本使用

我們之前說(shuō)Docker的三大核心概念,其中鏡像是最重要的,它是運(yùn)行容器的前提。那么我們可以使用pull命令先從默認(rèn)鏡像倉(cāng)庫(kù)Docker Hub網(wǎng)站拉取你需要的鏡像,比如tomcat應(yīng)用服務(wù)鏡像。

  1. # docker pull tomcat 
  2. Using default tag: latest 
  3. latest: Pulling from library/tomcat 
  4. 844c33c7e6ea: Downloading 19.32MB/45.38MB 
  5. … 
  6. 81f4cc5808bc: Pull complete 
  7. Digest: sha256:996d406c509a4ebe2f4e96eeda331a354f1663b7ec0ff06685b75c4decef7325 
  8. Status: Downloaded newer image for tomcat:latest 
  9. docker.io/library/tomcat:latest 

下載鏡像到本地后使用images命令查看鏡像

  1. # docker images 
  2. REPOSITORY TAG IMAGE ID CREATED SIZE 
  3. tomcat latest 6408fdc94212 8 days ago 507MB 

如果想要?jiǎng)h除鏡像。

  1. # docker rmi tomcat 

容器是鏡像的一個(gè)運(yùn)行實(shí)例,當(dāng)我們獲取tomcat鏡像到本地后,那么我們就可以根據(jù)這個(gè)tomcat鏡像來(lái)創(chuàng)建容器了。使用run命令創(chuàng)建一個(gè)名為mytomcat的容器,如果需運(yùn)行在后臺(tái)使用-d參數(shù),這樣docker容器在后臺(tái)以守護(hù)進(jìn)程形式運(yùn)行。

  1. # docker ps 
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
  3. 0acdd7e8a944 tomcat "catalina.sh run" 35 seconds ago Up 34 seconds 8080/tcp mytomcat 

查看當(dāng)前的mytomcat容器已經(jīng)運(yùn)行。

  1. # docker ps 
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
  3. 0acdd7e8a944 tomcat "catalina.sh run" 35 seconds ago Up 34 seconds 8080/tcp mytomcat 

但是tomcat是在docker容器下運(yùn)行的,如果外部需要訪問(wèn)就要做一個(gè)端口映射,比如把mytomcat容器的 8080 端口映射到本機(jī)的 8000 端口上。

  1. # docker run -d --name mytomcat -p 8000:8080 tomcat 

如果想要停止運(yùn)行mytomcat容器。

  1. # docker stop mytomcat 

如果想刪除mytomcat容器。

# docker rm mytomcat

容器一般會(huì)在后臺(tái)運(yùn)行,我們無(wú)法看到容器的信息,如果需要進(jìn)入容器使用exec命令進(jìn)行交互式操作。通過(guò)-it參數(shù)打開(kāi)標(biāo)準(zhǔn)輸入并且分配一個(gè)偽終端。

  1. # docker run -d --name mytomcat -p 8000:8080 tomcat 
  2. 01382c5529da079070da8933a0056e0d469f89eda79a80a26b9872cb1699d291 
  3. # docker exec -it mytomcat /bin/bash  
  4. root@01382c5529da:/usr/local/tomcat# 

可以看到打開(kāi)了一個(gè)新的bash終端,仿佛我們進(jìn)入到了另外一個(gè)Linux系統(tǒng)了,且當(dāng)前的路徑為/usr/local/tomcat,其實(shí)我們就可以理解為每個(gè)容器底層它就是一個(gè)Linux系統(tǒng),只是這個(gè)系統(tǒng)占用的資源是非常小的。 

Docker架構(gòu)

通過(guò)以上Docker的介紹相信大家這張Docker架構(gòu)圖就很容易看懂了吧,Docker 采用的是客戶(hù)端-服務(wù)器 (C/S) 架構(gòu)模式。用戶(hù)在Docker Client端通過(guò)docker相關(guān)命令,如docker build創(chuàng)建鏡像,docker run從鏡像運(yùn)行容器,docker pull 從鏡像倉(cāng)庫(kù)下載鏡像到本地倉(cāng)庫(kù)等發(fā)送請(qǐng)求到Docker Daemon后臺(tái)的系統(tǒng)服務(wù)進(jìn)程,Docker Daemon即Server端收到請(qǐng)求后執(zhí)行不同的任務(wù),比如需要鏡像從鏡像倉(cāng)庫(kù)下載鏡像,生成運(yùn)行容器等。 

不知不覺(jué)已是容器化時(shí)代,這篇文章帶你快速入門(mén)Docker容器技術(shù)

總結(jié)

本篇文章就簡(jiǎn)單介紹了一下Docker容器技術(shù)的一些基本概念及基本操作,希望能夠使大家對(duì)Docker有了一定的了解,后面大家如果對(duì)Docker容器技術(shù)有興趣可以搭建類(lèi)似的環(huán)境安裝使用一下Docker,并做更深入地學(xué)習(xí)!

 

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2019-12-03 18:58:07

DockerLinux操作系統(tǒng)

2022-04-14 10:10:59

Nginx開(kāi)源Linux

2012-03-12 16:23:24

2018-04-24 14:12:29

蘋(píng)果iPhone手機(jī)

2018-08-17 09:14:43

餓了么容器演進(jìn)

2018-07-23 12:48:44

編程學(xué)習(xí)開(kāi)發(fā)

2022-02-21 09:44:45

Git開(kāi)源分布式

2019-03-25 09:56:02

人工智能機(jī)器學(xué)習(xí)技術(shù)

2012-12-14 13:35:29

2017-12-12 12:53:09

2014-07-22 10:50:22

2017-08-04 15:33:33

大數(shù)據(jù)數(shù)據(jù)可視化方法

2020-04-01 09:00:56

容器安全操作

2020-02-17 15:50:11

騰訊文檔

2017-12-05 09:30:27

2023-01-03 09:06:25

IT職業(yè)生涯

2023-01-02 08:57:43

IT職業(yè)業(yè)務(wù)

2019-08-01 11:04:10

Linux磁盤(pán)I

2022-09-26 14:45:55

容器Pod服務(wù)器

2019-10-31 09:48:53

MySQL數(shù)據(jù)庫(kù)事務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)