<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Docker從入門到干活,看這一篇足矣 [建議收藏]

          共 9444字,需瀏覽 19分鐘

           ·

          2020-12-12 03:53

          容器簡介

          什么是?Linux?容器

          Linux容器是與系統(tǒng)其他部分隔離開的一系列進(jìn)程,從另一個(gè)鏡像運(yùn)行,并由該鏡像提供支持進(jìn)程所需的全部文件。


          容器提供的鏡像包含了應(yīng)用的所有依賴項(xiàng),因而在從開發(fā)到測試再到生產(chǎn)的整個(gè)過程中,它都具有可移植性和一致性。



          更加詳細(xì)地來說,請(qǐng)您假定您在開發(fā)一個(gè)應(yīng)用。您使用的是一臺(tái)筆記本電腦,而且您的開發(fā)環(huán)境具有特定的配置。其他開發(fā)人員身處的環(huán)境配置可能稍有不同。您正在開發(fā)的應(yīng)用依賴于您當(dāng)前的配置,還要依賴于某些特定文件。


          與此同時(shí),您的企業(yè)還擁有標(biāo)準(zhǔn)化的測試和生產(chǎn)環(huán)境,且具有自身的配置和一系列支持文件。


          您希望盡可能多在本地模擬這些環(huán)境,而不產(chǎn)生重新創(chuàng)建服務(wù)器環(huán)境的開銷。


          因此,您要如何確保應(yīng)用能夠在這些環(huán)境中運(yùn)行和通過質(zhì)量檢測,并且在部署過程中不出現(xiàn)令人頭疼的問題,也無需重新編寫代碼和進(jìn)行故障修復(fù)?答案就是使用容器。


          容器可以確保您的應(yīng)用擁有必需的配置和文件,使得這些應(yīng)用能夠在從開發(fā)到測試、再到生產(chǎn)的整個(gè)流程中順利運(yùn)行,而不出現(xiàn)任何不良問題。這樣可以避免危機(jī),做到皆大歡喜。


          雖然這只是簡化的示例,但在需要很高的可移植性、可配置性和隔離的情況下,我們可以利用 Linux 容器通過很多方式解決難題。


          無論基礎(chǔ)架構(gòu)是在企業(yè)內(nèi)部還是在云端,或者混合使用兩者,容器都能滿足您的需求。


          容器不就是虛擬化嗎

          是,但也不竟然。我們用一種簡單方式來思考一下:


          虛擬化使得許多操作系統(tǒng)可同時(shí)在單個(gè)系統(tǒng)上運(yùn)行。


          容器則可共享同一個(gè)操作系統(tǒng)內(nèi)核,將應(yīng)用進(jìn)程與系統(tǒng)其他部分隔離開。


          圖?-?普通虛擬化技術(shù)和Docker的對(duì)比


          這意味著什么?首先,讓多個(gè)操作系統(tǒng)在單個(gè)虛擬機(jī)監(jiān)控程序上運(yùn)行以實(shí)現(xiàn)虛擬化,并不能達(dá)成和使用容器同等的輕量級(jí)效果。


          事實(shí)上,在僅擁有容量有限的有限資源時(shí),您需要能夠可以進(jìn)行密集部署的輕量級(jí)應(yīng)用。


          Linux 容器可從單個(gè)操作系統(tǒng)運(yùn)行,在所有容器中共享該操作系統(tǒng),因此應(yīng)用和服務(wù)能夠保持輕量級(jí),并行快速運(yùn)行。


          容器發(fā)展簡史?


          我們現(xiàn)在稱為容器技術(shù)的概念最初出現(xiàn)在 2000?年,當(dāng)時(shí)稱為 FreeBSD jail,這種技術(shù)可將 FreeBSD 系統(tǒng)分區(qū)為多個(gè)子系統(tǒng)(也稱為 Jail)。


          Jail 是作為安全環(huán)境而開發(fā)的,系統(tǒng)管理員可與企業(yè)內(nèi)部或外部的多個(gè)用戶共享這些 Jail。


          Jail 的目的是讓進(jìn)程在經(jīng)過修改的 chroot 環(huán)境中創(chuàng)建,而不會(huì)脫離和影響整個(gè)系統(tǒng)?—?在 chroot 環(huán)境中,對(duì)文件系統(tǒng)、網(wǎng)絡(luò)和用戶的訪問都實(shí)現(xiàn)了虛擬化。


          盡管 Jail 在實(shí)施方面存在局限性,但最終人們找到了脫離這種隔離環(huán)境的方法。


          但這個(gè)概念非常有吸引力。


          2001 年,通過 Jacques Gélinas 的 VServer 項(xiàng)目,隔離環(huán)境的實(shí)施進(jìn)入了 Linux 領(lǐng)域。


          正如 Gélinas 所說,這項(xiàng)工作的目的是“在高度獨(dú)立且安全的單一環(huán)境中運(yùn)行多個(gè)通用 Linux 服務(wù)器?[sic]?!?


          在完成了這項(xiàng)針對(duì) Linux 中多個(gè)受控制用戶空間的基礎(chǔ)性工作后,Linux 容器開始逐漸成形并最終發(fā)展成了現(xiàn)在的模樣。


          什么是 Docker?

          “Docker”?一詞指代多種事物,包括開源社區(qū)項(xiàng)目、開源項(xiàng)目使用的工具、主導(dǎo)支持此類項(xiàng)目的公司 Docker Inc. 以及該公司官方支持的工具。技術(shù)產(chǎn)品和公司使用同一名稱,的確讓人有點(diǎn)困惑。


          我們來簡單說明一下:

          ? IT 軟件中所說的?“Docker”?,是指容器化技術(shù),用于支持創(chuàng)建和使用 Linux 容器。


          ??開源 Docker 社區(qū)致力于改進(jìn)這類技術(shù),并免費(fèi)提供給所有用戶,使之獲益。


          ? Docker Inc. 公司憑借 Docker 社區(qū)產(chǎn)品起家,它主要負(fù)責(zé)提升社區(qū)版本的安全性,并將改進(jìn)后的版本與更廣泛的技術(shù)社區(qū)分享。此外,它還專門對(duì)這些技術(shù)產(chǎn)品進(jìn)行完善和安全固化,以服務(wù)于企業(yè)客戶。


          借助 Docker ,您可將容器當(dāng)做重量輕、模塊化的虛擬機(jī)使用。同時(shí),您還將獲得高度的靈活性,從而實(shí)現(xiàn)對(duì)容器的高效創(chuàng)建、部署及復(fù)制,并能將其從一個(gè)環(huán)境順利遷移至另一個(gè)環(huán)境。


          Docker 如何工作?

          Docker 技術(shù)使用 Linux 內(nèi)核和內(nèi)核功能(例如 Cgroups 和 namespaces)來分隔進(jìn)程,以便各進(jìn)程相互獨(dú)立運(yùn)行。


          這種獨(dú)立性正是采用容器的目的所在;它可以獨(dú)立運(yùn)行多種進(jìn)程、多個(gè)應(yīng)用程序,更加充分地發(fā)揮基礎(chǔ)設(shè)施的作用,同時(shí)保持各個(gè)獨(dú)立系統(tǒng)的安全性。


          容器工具(包括 Docker)可提供基于鏡像的部署模式。這使得它能夠輕松跨多種環(huán)境,與其依賴程序共享應(yīng)用或服務(wù)組。Docker 還可在這一容器環(huán)境中自動(dòng)部署應(yīng)用程序(或者合并多種流程,以構(gòu)建單個(gè)應(yīng)用程序)。


          此外,由于這些工具基于 Linux 容器構(gòu)建,使得 Docker 既易于使用,又別具一格?——?它可為用戶提供前所未有的高度應(yīng)用程訪問權(quán)限、快速部署以及版本控制和分發(fā)能力。


          Docker 技術(shù)是否與傳統(tǒng)的 Linux 容器相同?

          否。Docker 技術(shù)最初是基于 LXC 技術(shù)構(gòu)建(大多數(shù)人都會(huì)將這一技術(shù)與“傳統(tǒng)的” Linux 容器聯(lián)系在一起),但后來它逐漸擺脫了對(duì)這種技術(shù)的依賴。


          就輕量級(jí)?虛擬化?這一功能來看,LXC?非常有用,但它無法提供出色的開發(fā)人員或用戶體驗(yàn)。除了運(yùn)行容器之外,Docker 技術(shù)還具備其他多項(xiàng)功能,包括簡化用于構(gòu)建容器、傳輸鏡像以及控制鏡像版本的流程。



          傳統(tǒng)的 Linux 容器使用 init 系統(tǒng)來管理多種進(jìn)程。這意味著,所有應(yīng)用程序都作為一個(gè)整體運(yùn)行。與此相反,Docker 技術(shù)鼓勵(lì)應(yīng)用程序各自獨(dú)立運(yùn)行其進(jìn)程,并提供相應(yīng)工具以實(shí)現(xiàn)這一功能。這種精細(xì)化運(yùn)作模式自有其優(yōu)勢。


          docker的目標(biāo)

          docker的主要目標(biāo)是"Build,Ship and Run any App,Angwhere",構(gòu)建,運(yùn)輸,處處運(yùn)行

          • 構(gòu)建:做一個(gè)docker鏡像
          • 運(yùn)輸:docker pull
          • 運(yùn)行:啟動(dòng)一個(gè)容器


          每一個(gè)容器,他都有自己的文件系統(tǒng)rootfs.


          安裝Docker

          環(huán)境說明
          #?需要兩臺(tái)幾點(diǎn)進(jìn)行安裝
          [root@docker01?~]#?cat?/etc/redhat-release?
          CentOS?Linux?release?7.2.1511?(Core)?
          [root@docker01?~]#?uname??-r?
          3.10.0-327.el7.x86_64
          [root@docker01?~]#?hostname?-I
          10.0.0.100?172.16.1.100?
          [root@docker02?~]#?hostname?-I
          10.0.0.101?172.16.1.101


          兩個(gè)節(jié)點(diǎn)上都進(jìn)行操作

          wget?-O?/etc/yum.repos.d/docker-ce.repo?https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
          sed?-i?'s#download.docker.com#mirrors.ustc.edu.cn/docker-ce#g'?/etc/yum.repos.d/docker-ce.repo
          yum?install?docker-ce?-y


          修改在docker01配置:

          #?修改啟動(dòng)文件,監(jiān)聽遠(yuǎn)程端口
          vim?/usr/lib/systemd/system/docker.service
          ExecStart=/usr/bin/dockerd?-H?unix:///var/run/docker.sock?-H?tcp://10.0.0.100:2375
          systemctl?daemon-reload
          systemctl?enable?docker.service?
          systemctl?restart?docker.service
          #?ps?-ef檢查進(jìn)行,是否啟動(dòng)


          docker02測試

          [root@docker02?~]#?docker?-H?10.0.0.100?info
          Containers:?0
          ?Running:?0
          ?Paused:?0
          ?Stopped:?0
          Images:?0
          Server?Version:?17.12.0-ce
          Storage?Driver:?devicemapper
          ···


          Docker基礎(chǔ)命令操作

          查看docker相關(guān)信息

          [root@docker01?~]#??docker?version??
          Client:
          ?Version:????17.12.0-ce
          ?API?version:????1.35
          ?Go?version:????go1.9.2
          ?Git?commit:????c97c6d6
          ?Built:????Wed?Dec?27?20:10:14?2017
          ?OS/Arch:????linux/amd64
          Server:
          ?Engine:
          ??Version:????17.12.0-ce
          ??API?version:????1.35?(minimum?version?1.12)
          ??Go?version:????go1.9.2
          ??Git?commit:????c97c6d6
          ??Built:????Wed?Dec?27?20:12:46?2017
          ??OS/Arch:????linux/amd64
          ??Experimental:????false


          配置docker鏡像加速

          vi?/etc/docker/daemon.json
          {
          ??"registry-mirrors":?["https://registry.docker-cn.com"]
          }???


          啟動(dòng)第一個(gè)容器

          [root@docker01?~]#?docker?run?-d?-p?80:80?nginx
          Unable?to?find?image?'nginx:latest'?locally
          latest:?Pulling?from?library/nginx
          e7bb522d92ff:?Pull?complete?
          6edc05228666:?Pull?complete?
          cd866a17e81f:?Pull?complete?
          Digest:?sha256:285b49d42c703fdf257d1e2422765c4ba9d3e37768d6ea83d7fe2043dad6e63d
          Status:?Downloaded?newer?image?for?nginx:latest
          8d8f81da12b5c10af6ba1a5d07f4abc041cb95b01f3d632c3d638922800b0b4d
          #?容器啟動(dòng)后,在瀏覽器進(jìn)行訪問測試?


          參數(shù)說明


          Docker鏡像生命周期

          ?

          Docker鏡像相關(guān)操作

          搜索官方倉庫鏡像

          [root@docker01?~]#??docker?search?centos
          NAME??????????????????????DESCRIPTION????????????????????STARS????OFFICIAL???????????????AUTOMATED
          centos????????????????????The?official?build?of?CentOS.??3992?????[OK]??????
          ansible/centos7-ansible???Ansible?on?Centos7?????????????105??????????????????????????????[OK]


          列表說明


          獲取鏡像

          根據(jù)鏡像名稱拉取鏡像
          [root@docker01?~]#?docker?pull?centos
          Using?default?tag:?latest
          latest:?Pulling?from?library/centos
          af4b0a2388c6:?Downloading??34.65MB/73.67MB


          查看當(dāng)前主機(jī)鏡像列表

          [root@docker01?~]#?docker?image?list?
          REPOSITORY??????????TAG?????????????????IMAGE?ID????????????CREATED?????????????SIZE
          centos??????????????latest??????????????ff426288ea90????????3?weeks?ago?????????207MB
          nginx???????????????latest??????????????3f8a4339aadd????????5?weeks?ago?????????108MB


          拉第三方鏡像方法

          docker?pull?index.tenxcloud.com/tenxcloud/httpd


          導(dǎo)出鏡像

          [root@docker01?~]#?docker?image?list?
          REPOSITORY??????????TAG?????????????????IMAGE?ID????????????CREATED?????????????SIZE
          centos??????????????latest??????????????ff426288ea90????????3?weeks?ago?????????207MB
          nginx???????????????latest??????????????3f8a4339aadd????????5?weeks?ago?????????108MB
          #?導(dǎo)出
          [root@docker01?~]#?docker?image?save?centos?>?docker-centos.tar.gz


          刪除鏡像

          [root@docker01?~]#?docker?image?rm?centos:latest
          [root@docker01?~]#?docker?image?list?
          REPOSITORY??????????TAG?????????????????IMAGE?ID????????????CREATED?????????????SIZE
          nginx???????????????latest??????????????3f8a4339aadd????????5?weeks?ago?????????108MB


          導(dǎo)入鏡像

          [root@docker01?~]#?docker?image?load?-i?docker-centos.tar.gz??
          e15afa4858b6:?Loading?layer??215.8MB/215.8MB
          Loaded?image:?centos:latest
          [root@docker01?~]#?docker?image?list?
          REPOSITORY??????????TAG?????????????????IMAGE?ID????????????CREATED?????????????SIZE
          centos??????????????latest??????????????ff426288ea90????????3?weeks?ago?????????207MB
          nginx???????????????latest??????????????3f8a4339aadd????????5?weeks?ago?????????108MB


          查看鏡像的詳細(xì)信息

          [root@docker01?~]#?docker?image?inspect?centos


          容器的日常管理

          容器的起/停

          最簡單的運(yùn)行一個(gè)容器
          [root@docker01?~]#?docker?run?nginx


          創(chuàng)建容器,兩步走(不常用)

          [root@docker01?~]#?docker?create?centos:latest??/bin/bash
          bb7f32368ecf0492adb59e20032ab2e6cf6a563a0e6751e58930ee5f7aaef204
          [root@docker01?~]#?docker?start?stupefied_nobel
          stupefied_nobel


          快速啟動(dòng)容器方法

          [root@docker01?~]#?docker?run??centos:latest??/usr/bin/sleep?20;


          容器內(nèi)的第一個(gè)進(jìn)程必須一直處于運(yùn)行的狀態(tài),否則這個(gè)容器,就會(huì)處于退出狀態(tài)!


          查看正在運(yùn)行的容器
          [root@docker01?~]#?docker?container?ls
          ????或
          [root@docker01?~]#?docker?ps?
          CONTAINER?ID????????IMAGE???????????????COMMAND??????????????????CREATED?????????????STATUS??????????????PORTS???????????????NAMES
          8708e93fd767????????nginx???????????????"nginx?-g?'daemon?of…"???6?seconds?ago???????Up?4?seconds????????80/tcp??????????????keen_lewin


          查看你容器詳細(xì)信息/ip

          [root@docker01?~]#?docker?container??inspect??容器名稱/id


          查看你所有容器(包括未運(yùn)行的)

          [root@docker01?~]#?docker?ps?-a
          CONTAINER?ID????????IMAGE???????????????COMMAND??????????????????CREATED?????????????STATUS??????????????????????PORTS???????????????NAMES
          8708e93fd767????????nginx???????????????"nginx?-g?'daemon?of…"???4?minutes?ago???????Exited?(0)?59?seconds?ago???????????????????????keen_lewin
          f9f3e6af7508????????nginx???????????????"nginx?-g?'daemon?of…"???5?minutes?ago???????Exited?(0)?5?minutes?ago????????????????????????optimistic_haibt
          8d8f81da12b5????????nginx???????????????"nginx?-g?'daemon?of…"???3?hours?ago?????????Exited?(0)?3?hours?ago??????????????????????????lucid_bohr


          停止容器

          [root@docker01?~]#?docker?stop?容器名稱/id?

          [root@docker01?~]#?docker?container??kill??容器名稱/id

          進(jìn)入容器方法

          啟動(dòng)時(shí)進(jìn)去方法
          [root@docker01?~]# docker run -it #參數(shù):-it 可交互終端
          [root@docker01?~]#?docker?run?-it?nginx:latest??/bin/bash
          root@79241093859e:/#


          退出/離開容器
          ctrl+p?&?ctrl+q


          啟動(dòng)后進(jìn)入容器的方法

          啟動(dòng)一個(gè)docker
          [root@docker01?~]#?docker?run?-it?centos:latest?
          [root@1bf0f43c4d2f?/]#?ps?-ef?
          UID?????????PID???PPID??C?STIME?TTY??????????TIME?CMD
          root??????????1??????0??0?15:47?pts/0????00:00:00?/bin/bash
          root?????????13??????1??0?15:47?pts/0????00:00:00?ps?-ef


          attach進(jìn)入容器,使用pts/0?,會(huì)讓所用通過此方法進(jìn)如放入用戶看到同樣的操作。

          [root@docker01?~]#?docker?attach?1bf0f43c4d2f
          [root@1bf0f43c4d2f?/]#?ps?-ef?
          UID?????????PID???PPID??C?STIME?TTY??????????TIME?CMD
          root??????????1??????0??0?15:47?pts/0????00:00:00?/bin/bash
          root?????????14??????1??0?15:49?pts/0????00:00:00?ps?-ef

          自命名啟動(dòng)一個(gè)容器?--name

          [root@docker01?~]#?docker?attach?1bf0f43c4d2f
          [root@1bf0f43c4d2f?/]#?ps?-ef?
          UID?????????PID???PPID??C?STIME?TTY??????????TIME?CMD
          root??????????1??????0??0?15:47?pts/0????00:00:00?/bin/bash
          root?????????14??????1??0?15:49?pts/0????00:00:00?ps?-ef


          exec?進(jìn)入容器方法(推薦使用)

          [root@docker01?~]#?docker?exec?-it?clsn1??/bin/bash?
          [root@b20fa75b4b40?/]#?重新分配一個(gè)終端
          [root@b20fa75b4b40?/]#?ps?-ef?
          UID?????????PID???PPID??C?STIME?TTY??????????TIME?CMD
          root??????????1??????0??0?16:11?pts/0????00:00:00?/bin/bash
          root?????????13??????0??0?16:14?pts/1????00:00:00?/bin/bash
          root?????????26?????13??0?16:14?pts/1????00:00:00?ps?-ef

          刪除所有容器

          [root@docker01?~]#?docker?rm?-f??`docker?ps?-a?-q`
          #?-f?強(qiáng)制刪除


          啟動(dòng)時(shí)進(jìn)行端口映射

          -p參數(shù)端口映射
          [root@docker01?~]#?docker?run?-d?-p?8888:80??nginx:latest?
          287bec5c60263166c03e1fc5b0b8262fe76507be3dfae4ce5cd2ee2d1e8a89a9


          不同指定映射方法


          隨機(jī)映射
          docker?run?-P?(大P)#?需要鏡像支持


          瀏覽 50
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  97精品国产 | 美国发布站久久 | 欧美性爱免费在线视频PK视频 | 麻豆亚洲一级女 | 俺也去在线 |