<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學習筆記(一)

          共 25835字,需瀏覽 52分鐘

           ·

          2022-04-01 20:55

          Docker概述

          Docker為什么出現(xiàn)?

          傳統(tǒng)模式中一款產(chǎn)品從開發(fā)到上線需要兩套環(huán)境!部署環(huán)境時涉及到應(yīng)用環(huán)境,應(yīng)用配置!等諸多事情。這就導致開發(fā)及運維之間存在很多問題:

          1、在自己的電腦上可以運行!在別人電腦上無法運行!

          2、版本更新,導致服務(wù)不可用!

          這種模式對于運維來說,考驗就十分大!環(huán)境配置是十分麻煩,每一個機器都要部署環(huán)境(集群Redis、Es、Hadoop)!費時費力。

          因此某些大佬就想:發(fā)布一個項目(jar+(Redis MySql jdk ES)),項目能不能都帶上環(huán)境安裝打包?

          同時傳統(tǒng)開發(fā)部署還遇到一個問題:服務(wù)器配置一個應(yīng)用的環(huán)境 Redis MySQL jdk ES Hadoop,配置超麻煩,不能跨平臺。一般都是Windows上開發(fā),最后發(fā)布到Linux!

          傳統(tǒng)模式:開發(fā)完成打成jar包,由運維來做部署!

          我們期望現(xiàn)在:開發(fā)打包部署上線,一套流程做完!

          容器技術(shù)類比于手機應(yīng)用商店一樣:

          java --- apk --- 發(fā)布(應(yīng)用商店) --- 張三使用apk --- 安裝即可用!

          java --- jar(環(huán)境) --- 打包項目帶上環(huán)境(鏡像) --- (Docker倉庫:商店) --- 下載我們發(fā)布的鏡像 --- 直接運行即可!

          Docker給以上的問題,提出了解決方案!

          a5649925909fbf4932abffb8e0b331cf.webp


          就像Docker圖標一樣,Docker的思想就來自于集裝箱!

          傳統(tǒng):JRE --- 部署多個應(yīng)用(端口沖突) --- 原來都是交叉的!

          docker容器:

          Docker核心思想采用隔離的方式,將每個應(yīng)用打包裝箱!每個箱子都是相互隔離的。這樣就好比將水果和生化武器放在一起都不會出現(xiàn)變異,同時Douker通過隔離機制,可以將服務(wù)器利用到極致!

          本質(zhì):所有的技術(shù)都是因為出現(xiàn)了一些問題,我們需要去解決,才去學習!

          Docker的歷史

          2010年,幾個搞IT的年輕人,就在美國成立了一家公司dotCloud,做一些pass的云計算服務(wù)!Linux有關(guān)的容器技術(shù)!

          他們將自己的技術(shù)(容器化技術(shù))命名 就是Docker!

          Docker剛剛誕生的時候,沒有引起行業(yè)的注意!dotCloud,就活不下去!

          于是公司決定將docker技術(shù)開源!

          2013年,Docker開源!

          越來越多的人發(fā)現(xiàn)了docker的優(yōu)點!因此docker技術(shù)火了,docker官方趁熱打鐵每個月都會更新一個版本!

          于2014年4月9日,Docker1.0發(fā)布!

          那Docker為什么這么火?答案:十分的輕巧!

          在容器技術(shù)出來之前,我們都是使用虛擬機技術(shù)!

          虛擬機:在window中裝一個VMware,通過這個軟件我們可以虛擬出來一臺或多臺電腦!笨重!

          虛擬機也是屬于虛擬化技術(shù),Docker容器技術(shù),也是一種虛擬化技術(shù)!

          vm:?Linux?centos原生鏡像(一個電腦!)隔離,需要開啟多個虛擬機?幾個G?幾分鐘
          Docker:?隔離,鏡像(最核心的環(huán)境4M?+?jdk?+?mysql)十分的小巧,運行鏡像就可以了!小巧!幾個M?KB?秒級啟動

          到現(xiàn)在,所有開發(fā)人員都必須要會Docker!

          聊聊Docker

          Docker是基于Go語言開發(fā)的!開源項目!

          官網(wǎng):https://www.docker.com/

          e50ad35cd757651101ff1b3b87965655.webp


          文檔:https://docs.docker.com/ Docker的文檔是超級詳細的!

          倉庫:https://hub.docker.com/

          Docker能干嘛?

          之前的虛擬機技術(shù)

          22786b1eae9e68754d449b27e52dbd1e.webp


          虛擬機技術(shù)缺點:

          1、資源占用十分多

          2、冗余步驟多

          3、啟動很慢

          容器化技術(shù)

          容器化技術(shù)不是模擬的一個完整的操作系統(tǒng)

          f22ed5d3a425ef2cea8eb3772cef263b.webp


          比較Docker和虛擬機技術(shù)的不同:

          • ??傳統(tǒng)虛擬機,虛擬出一條硬件,運行一個完整的操作系統(tǒng),然后在這個系統(tǒng)上安裝和運行軟件

          • ??容器內(nèi)的應(yīng)用直接運行在宿主機的內(nèi)容,容器是沒有自己的內(nèi)核的,也沒有虛擬我們的硬件,所以就輕便了

          • ??每個容器間是相互隔離的,每個容器內(nèi)都有一個屬于自己的文件系統(tǒng),互不影響。

          DevOps(開發(fā),運維)

          更快速的交付和部署

          傳統(tǒng):一堆幫助文檔,安裝程序

          Docker:打包鏡像發(fā)布測試,一鍵運行

          更便捷的升級和擴縮容

          使用了Docker之后,我們部署應(yīng)用就和搭積木一樣!

          項目打包為一個鏡像,擴展 服務(wù)器A!服務(wù)器B

          更簡單的系統(tǒng)運維

          在容器化之后,我們的開發(fā),測試環(huán)境都是高度的一致的。

          更高效的計算資源利用:

          Docker是內(nèi)核級別的虛擬化,可以在一個物理機上可以運行很多的容器實例!服務(wù)器的性能可以壓榨到極致。

          Docker安裝

          Docker的基本組成

          f5c464c11479c850adebf4eb7018e799.webp


          鏡像(image):

          docker鏡像就好比是一個模板,可以通過這個模板來創(chuàng)建容器服務(wù),tomcat鏡像 ===> run ===> tomcat01容器(提供服務(wù)器),通過這個鏡像可以創(chuàng)建多個容器(最終服務(wù)運行或者項目運行就是在容器中的)。

          容器(container):

          Docker利用容器技術(shù),獨立運行一個或者一組應(yīng)用,通過鏡像來創(chuàng)建的。

          啟動,停止,刪除,基本命令!

          目前可以把這個容器理解為就是一個簡易的Linux系統(tǒng)

          倉庫(repository):

          倉庫就是存放鏡像的地方!

          倉庫分為公有倉庫和私有倉庫!

          Docker Hub(默認國外的)

          阿里云...都有容器服務(wù)器(配置鏡像加速!)

          安裝Docker

          環(huán)境準備

          1、需要會一點點的Linux的基礎(chǔ)

          2、CentOS 7

          3、使用Xshell連接遠程服務(wù)器進行操作!

          環(huán)境查看

          #?系統(tǒng)內(nèi)核是?4.18.0
          [root@VM-4-4-centos?~]#?uname?-r
          4.18.0-193.28.1.el8_2.x86_64
          #?系統(tǒng)版本
          [root@VM-4-4-centos?~]#?cat?/etc/os-release?
          NAME="CentOS?Linux"
          VERSION="8?(Core)"
          ID="centos"
          ID_LIKE="rhel?fedora"
          VERSION_ID="8"
          PLATFORM_ID="platform:el8"
          PRETTY_NAME="CentOS?Linux?8?(Core)"
          ANSI_COLOR="0;31"
          CPE_NAME="cpe:/o:centos:centos:8"
          HOME_URL="https://www.centos.org/"
          BUG_REPORT_URL="https://bugs.centos.org/"

          CENTOS_MANTISBT_PROJECT="CentOS-8"
          CENTOS_MANTISBT_PROJECT_VERSION="8"
          REDHAT_SUPPORT_PRODUCT="centos"
          REDHAT_SUPPORT_PRODUCT_VERSION="8"

          安裝

          幫助文檔:

          #?1、卸載舊的版本
          ?sudo?yum?remove?docker?\
          ??????????????????docker-client?\
          ??????????????????docker-client-latest?\
          ??????????????????docker-common?\
          ??????????????????docker-latest?\
          ??????????????????docker-latest-logrotate?\
          ??????????????????docker-logrotate?\
          ??????????????????docker-engine
          #?2、需要的安裝包
          sudo?yum?install?-y?yum-utils

          #3、設(shè)置鏡像的倉庫
          sudo?yum-config-manager?\
          ????--add-repo?\
          ????https://download.docker.com/linux/centos/docker-ce.repo

          #建議使用國內(nèi)源
          sudo?yum-config-manager?\
          ????--add-repo?\
          ????http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
          #更新軟件包索引???
          sudo?yum?makecache?fast
          #4、安裝docker引擎(最新版)?docker-ce?社區(qū)?ee企業(yè)版
          sudo?yum?install?docker-ce?docker-ce-cli?containerd.io

          #?也可以安裝指定版本
          sudo?yum?install?docker-ce-?docker-ce-cli-?containerd.io

          #5、啟動docker
          sudo?systemctl?start?docker

          #6、查看docker是否安裝成功
          sudo?docker?version

          938d6674efe78edb231ff1c335808430.webp


          #?7、helloworld
          docker?run?hello-world

          d8ee04fec33897e051f500abdce88c62.webp


          #8、查看一下下載的這個hello-world?鏡像
          [root@VM-4-8-centos?~]#?docker?images
          REPOSITORY????TAG???????IMAGE?ID???????CREATED????????SIZE
          hello-world???latest????feb5d9fea6a5???6?months?ago???13.3kB

          了解:卸載docker

          #1、卸載依賴
          sudo?yum?remove?docker-ce?docker-ce-cli?containerd.io
          #2、刪除資源
          sudo?rm?-rf?/var/lib/docker
          #?/var/lib/docker?docker默認資源路徑
          sudo?rm?-rf?/var/lib/containerd

          阿里云鏡像加速

          1、登錄找到阿里云/騰訊云,找到容器服務(wù)

          2、找到鏡像加速地址

          3、配置使用

          回顧HelloWorld流程

          d8ee04fec33897e051f500abdce88c62.webp


          31628a57053d1c7a2458969114c709a3.webp


          Docker底層

          Docker是怎么工作的?

          Docker是一個Client-Serve結(jié)構(gòu)的系統(tǒng),Docker的守護進程運行在主機上。通過Socket從客戶端訪問!

          DockerServer接收到Docker-Client的指令,就會執(zhí)行這個命令!

          484ea1c42fceb058850d5fa315829d2e.webp


          Docker為什么比VM快?

          1、Docker有著比虛擬機更少的抽象層

          2、docker利用的是宿主機的內(nèi)核,vm需要是虛擬機操作系統(tǒng)

          2c25671122e06c4373d7b55f95391039.webp


          所以說,新建一個容器的時候,docker不需要虛擬機一樣重新加載一個操作系統(tǒng)內(nèi)核,避免引導。虛擬機是加載Guest OS,分鐘級別的,而docker是利用宿主機的操作系統(tǒng),省略了這個復雜的過程,秒級!

          Docker的常用命令

          幫助命令

          docker?version????#?顯示docker的版本信息
          docker?info???????#?顯示docker的系統(tǒng)信息,包括鏡像和容器的數(shù)量
          docker?命令?--help?#萬能命令

          幫助文檔:https://docs.docker.com/reference/

          鏡像命令

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

          [root@VM-4-8-centos?~]#?docker?images
          REPOSITORY????TAG???????IMAGE?ID???????CREATED????????SIZE
          hello-world???latest????feb5d9fea6a5???6?months?ago???13.3kB

          #?解釋
          REPOSITORY???鏡像的倉庫源
          TAG??????????鏡像的標簽
          IMAGE?ID?????鏡像的id
          CREATED??????鏡像創(chuàng)建的時間
          SIZE?????????鏡像的大小

          #?可選項
          ??-a,?--all?????????????#?列出所有的鏡像
          ??-q,?--quiet???????????#?只顯示鏡像的id

          docker search?搜索鏡像

          [root@VM-4-8-centos?~]#?docker?search?mysql
          NAME?????????????????????????????DESCRIPTION?????????????????????????????????????STARS?????OFFICIAL???AUTOMATED
          mysql????????????????????????????MySQL?is?a?widely?used,?open-source?relation…???12301?????[OK]???????
          mariadb??????????????????????????MariaDB?Server?is?a?high?performing?open?sou…???4733??????[OK]???????
          mysql/mysql-server???????????????Optimized?MySQL?Server?Docker?images.?Create…???913??????????????????[OK]
          percona??????????????????????????Percona?Server?is?a?fork?of?the?MySQL?relati…???572???????[OK]???????


          #?可選項,通過搜藏來過濾
          --filter=STARS=3000??#搜索出來的鏡像就是STARS大于3000的
          [root@VM-4-8-centos?~]#?docker?search?mysql?--filter=STARS=3000
          NAME??????DESCRIPTION?????????????????????????????????????STARS?????OFFICIAL???AUTOMATED
          mysql?????MySQL?is?a?widely?used,?open-source?relation…???12301?????[OK]???????
          mariadb???MariaDB?Server?is?a?high?performing?open?sou…???4733??????[OK]

          [root@VM-4-8-centos?~]#?docker?search?mysql?--filter=STARS=5000
          NAME??????DESCRIPTION?????????????????????????????????????STARS?????OFFICIAL???AUTOMATED
          mysql?????MySQL?is?a?widely?used,?open-source?relation…???12301?????[OK]

          docker pull?下載鏡像

          #?下載鏡像?docker?pull?鏡像名[:tag]
          [root@VM-4-8-centos?~]#?docker?pull?mysql
          Using?default?tag:?latest?#?如果不寫tag,默認就是latest
          latest:?Pulling?from?library/mysql
          a4b007099961:?Pull?complete?#?分層下載,docker?image的核心??聯(lián)合文件系統(tǒng)
          e2b610d88fd9:?Pull?complete?
          38567843b438:?Pull?complete?
          5fc423bf9558:?Pull?complete?
          aa8241dfe828:?Pull?complete?
          cc662311610e:?Pull?complete?
          9832d1192cf2:?Pull?complete?
          f2aa1710465f:?Pull?complete?
          4a2d5722b8f3:?Pull?complete?
          3a246e8d7cac:?Pull?complete?
          2f834692d7cc:?Pull?complete?
          a37409568022:?Pull?complete?
          Digest:?sha256:b2ae0f527005d99bacdf3a220958ed171e1eb0676377174f0323e0a10912408a?#?簽名
          Status:?Downloaded?newer?image?for?mysql:latest
          docker.io/library/mysql:latest?#?真實地址

          #?等價于它
          docker?pull?mysql
          docker?pull?docker.io/library/mysql:latest

          [root@VM-4-8-centos?~]#?docker?pull?mysql:5.7
          5.7:?Pulling?from?library/mysql
          a4b007099961:?Already?exists?
          e2b610d88fd9:?Already?exists?
          38567843b438:?Already?exists?
          5fc423bf9558:?Already?exists?
          aa8241dfe828:?Already?exists?
          cc662311610e:?Already?exists?
          9832d1192cf2:?Already?exists?
          3f242378e320:?Pull?complete?
          cc65503c0186:?Pull?complete?
          ce8944d50437:?Pull?complete?
          597d59a9a424:?Pull?complete?
          Digest:?sha256:c8f68301981a7224cc9c063fc7a97b6ef13cfc4142b4871d1a35c95777ce96f4
          Status:?Downloaded?newer?image?for?mysql:5.7
          docker.io/library/mysql:5.7

          c67c5609a9ce16d81e2b80ed404e6e40.webp


          docker rmi?刪除鏡像

          [root@VM-4-8-centos?~]#?docker?rmi?鏡像id?#刪除指定的鏡像
          [root@VM-4-8-centos?~]#?docker?rmi?鏡像id?鏡像id?鏡像id?#刪除多個鏡像
          [root@VM-4-8-centos?~]#?docker?rmi?-f?$(docker?images?-aq)?#刪除全部的鏡像

          [root@VM-4-8-centos?~]#?docker?rmi?05311a87aeb4
          Untagged:?mysql:5.7
          Untagged:?mysql@sha256:c8f68301981a7224cc9c063fc7a97b6ef13cfc4142b4871d1a35c95777ce96f4
          Deleted:?sha256:05311a87aeb4d7f98b2726c39d4d29d6a174d20953a6d1ceaa236bfa177f5fb6
          Deleted:?sha256:ce09b17e1372dcbe2ca378a7ab3bf3d2d1ac2cf92497c4e016c1ec122c0dc1e9
          Deleted:?sha256:dcc1a49541911203634c3a4d238ec78d979b5b482deb83ea37e418080861c285
          Deleted:?sha256:3d1d08f848c1b010e1f2323d9adb7d8589110dbe6fc1caf7a84eade16b31042d
          Deleted:?sha256:9d6a457e1119cd4bf14a7c60c53848e86639672ee17eb129515477e5b9f616f9

          [root@VM-4-8-centos?~]#?docker?rmi?-f?$(docker?images?-aq)
          Untagged:?mysql:latest
          Untagged:?mysql@sha256:b2ae0f527005d99bacdf3a220958ed171e1eb0676377174f0323e0a10912408a
          Deleted:?sha256:562c9bc24a0883226e994aabbd09fcb5621a4eadb510df749bc6dac40fa991e3
          Deleted:?sha256:922f7808fa33c2fbe942423d3feb9a6d7a5f94bec7b9ea0991ab6c2e2f847572
          Deleted:?sha256:83fffdb572261c1f2e9f19471bd1b508943c501ed370984b5cfd358bc755d2e9
          Deleted:?sha256:c79d74d1ae5d7c7238dc9e17c11c386fb3831bbeccda13d35692c487e830cb30
          Deleted:?sha256:890829e2a3ea27a0c97567b48b3ee2d35ec518c831445b52b3a9b9350a407b19
          Deleted:?sha256:dc2d56ca2bf65894556989944f5bb43be8c85b846a65f939f14db0a13faed901
          Deleted:?sha256:2bfa38aa4a121c3003184e53f583ae27b3644308bf97ddbc307f06a0d6d29c9a
          Deleted:?sha256:fa808b36c749c5f8b97a9fa391bba83e4d71a81089a671079f5e9964d41ef21c
          Deleted:?sha256:25deea191944f6927352c94aac19b93fe4f06032f6287f7a8e671d182bb939ac
          Deleted:?sha256:118be3e0025663818f84526b895923c708e254ea16704cfb6f72e3595769160f
          Deleted:?sha256:093b2e6fd07228b0ce4dcffdcd1bd5cd5cff4758e7a92f9ef00002c38593a550
          Deleted:?sha256:f43f525e5700c371aca941af470de540c77e9f668d5357a31b9d01e9d3d1e825
          Deleted:?sha256:4e7bd47e4668c217f6eeba3b515d55d485e069ec297e0d1f5b0d643eb0478c72
          Untagged:?hello-world:latest
          Untagged:?hello-world@sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
          Deleted:?sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412

          容器命令

          說明:有了鏡像才可以創(chuàng)建容器,linux,下載一個centos鏡像來測試學習

          docker?pull?centos

          新建容器并啟動

          docker?run?[可選參數(shù)]?image

          #參數(shù)說明
          --name="NAME"?容器名字?tomcat01?tomcat02?用來區(qū)分容器
          -d????????????后臺方式運行
          -it???????????使用加護方式運行,進入容器查看內(nèi)容
          -p????????????指定容器的端口,?-p?8080:8080
          ????-p?ip:主機端口:容器端口
          ????-p?主機端口:容器端口(常用)
          ????-p?容器端口
          ????容器端口
          -P????????????隨機指定端口

          #?測試,啟動并進入容器
          [root@VM-4-8-centos?~]#?docker?run?-it?centos?/bin/bash
          [root@b39226b092a3?/]#?ls?#查看容器內(nèi)的centos,基礎(chǔ)版本,很多命令不完善
          bin??dev??etc??home??lib??lib64??lost+found??media??mnt??opt??proc??root??run??sbin??srv??sys??tmp??usr??var
          #?從容器退回到主機
          [root@b39226b092a3?/]#?exit
          exit

          列出所有的運行的容器

          #?docker?ps?命令
          ??????#?列出當前正在運行的容器
          -a????#?列出當前正在運行的容器?+?帶出歷史運行過的容器
          -n=???#?顯示最近創(chuàng)建的容器
          -q????#?只顯示容器的編號

          [root@VM-4-8-centos?~]#?docker?ps
          CONTAINER?ID???IMAGE?????COMMAND???CREATED???STATUS????PORTS?????NAMES
          [root@VM-4-8-centos?~]#?docker?ps?-a
          CONTAINER?ID???IMAGE??????????COMMAND???????CREATED????????STATUS????????????????????PORTS?????NAMES
          b39226b092a3???centos?????????"/bin/bash"???24?hours?ago???Exited?(0)?24?hours?ago?????????????wonderful_wilbur
          8c935f729a36???feb5d9fea6a5???"/hello"??????2?days?ago?????Exited?(0)?2?days?ago???????????????loving_knuth

          退出容器

          exit?????#?直接容器停止并退出
          Ctrl?+?P?+?Q??#?容器不停止退出

          刪除容器

          docker?rm?容器id??????????????????#刪除指定的容器,不能刪除正在運行的容器,如果要刪除rm?-f
          docker?rm?-f?$(docker?ps?-aq)?????#刪除所有的容器
          docker?ps?-a?-q?|?xargs?docker?rm?#刪除所有的容器

          啟動和停止容器的操作

          docker?start?容器id??????#?啟動容器
          docker?restart?容器id????#?重啟容器
          docker?stop?容器id???????#?停止當前正在運行的容器
          docker?kill?容器id???????#?強制停止當前容器

          常用其它命令

          后臺啟動容器

          #?命令?docker?run?-d?鏡像名
          [root@VM-4-8-centos?~]#?docker?run?-d?centos

          #?問題?docker?ps,?發(fā)現(xiàn)centos停止了

          #?常見的坑:docker容器使用后臺運行,就必須要有一個前臺進程,docker發(fā)現(xiàn)沒有應(yīng)用,就會自動停止
          #?nginx,容器啟動后,發(fā)現(xiàn)自己沒有提供服務(wù),就會立刻停止,就是沒有程序了

          查看日志

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

          #?自己編寫一段shell腳本
          [root@VM-4-8-centos?~]#?docker?run?-d?centos?/bin/sh?-c?"while?true;do?echo?lsustc;sleep?1;done"

          [root@VM-4-8-centos?~]#?docker?ps
          CONTAINER?ID???IMAGE??
          07ec06da09d3???centos??

          #?顯示日志
          -tf?????????????#?顯示日志
          --tail?number???#?要顯示的日志條數(shù)
          [root@VM-4-8-centos?~]#?docker?logs?-f?-t?--tail?10?07ec06da09d3

          查看容器中的進程信息

          #?命令?docker?top?容器id
          [root@VM-4-8-centos?~]#?docker?top?07ec06da09d3
          UID?????????????????PID?????????????????PPID????????????????C???????????????????STIME???????????????TTY????
          root????????????????26758???????????????26738???????????????0???????????????????09:30??????????????????????
          root????????????????28124???????????????26758???????????????0???????????????????09:37??????????????????????

          查看鏡像源數(shù)據(jù)

          #?命令
          docker?inspect?容器id

          #?測試
          [root@VM-4-8-centos?~]#?docker?inspect?07ec06da09d3
          [
          ????{
          ????????"Id":?"07ec06da09d3f81a56a17c94f80d254eb12cdff2f387581486d9406c53847548",
          ????????"Created":?"2022-03-26T01:30:44.994481793Z",
          ????????"Path":?"/bin/sh",
          ????????"Args":?[
          ????????????"-c",
          ????????????"while?true;do?echo?lsustc;sleep?1;done"
          ????????],
          ????????"State":?{
          ????????????"Status":?"running",
          ????????????"Running":?true,
          ????????????"Paused":?false,
          ????????????"Restarting":?false,
          ????????????"OOMKilled":?false,
          ????????????"Dead":?false,
          ????????????"Pid":?26758,
          ????????????"ExitCode":?0,
          ????????????"Error":?"",
          ????????????"StartedAt":?"2022-03-26T01:30:45.315873953Z",
          ????????????"FinishedAt":?"0001-01-01T00:00:00Z"
          ????????},
          ????????"Image":?"sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
          ????????"ResolvConfPath":?"/var/lib/docker/containers/07ec06da09d3f81a56a17c94f80d254eb12cdff2f387581486d9406c53847548/resolv.conf",
          ????????"HostnamePath":?"/var/lib/docker/containers/07ec06da09d3f81a56a17c94f80d254eb12cdff2f387581486d9406c53847548/hostname",
          ????????"HostsPath":?"/var/lib/docker/containers/07ec06da09d3f81a56a17c94f80d254eb12cdff2f387581486d9406c53847548/hosts",
          ????????"LogPath":?"/var/lib/docker/containers/07ec06da09d3f81a56a17c94f80d254eb12cdff2f387581486d9406c53847548/07ec06da09d3f81a56a17c94f80d254eb12cdff2f387581486d9406c53847548-json.log",
          ????????"Name":?"/focused_jemison",
          ????????"RestartCount":?0,
          ????????"Driver":?"overlay2",
          ????????"Platform":?"linux",
          ????????"MountLabel":?"",
          ????????"ProcessLabel":?"",
          ????????"AppArmorProfile":?"",
          ????????"ExecIDs":?null,
          ????????"HostConfig":?{
          ????????????"Binds":?null,
          ????????????"ContainerIDFile":?"",
          ????????????"LogConfig":?{
          ????????????????"Type":?"json-file",
          ????????????????"Config":?{}
          ????????????},
          ????????????"NetworkMode":?"default",
          ????????????"PortBindings":?{},
          ????????????"RestartPolicy":?{
          ????????????????"Name":?"no",
          ????????????????"MaximumRetryCount":?0
          ????????????},
          ????????????"AutoRemove":?false,
          ????????????"VolumeDriver":?"",
          ????????????"VolumesFrom":?null,
          ????????????"CapAdd":?null,
          ????????????"CapDrop":?null,
          ????????????"CgroupnsMode":?"host",
          ????????????"Dns":?[],
          ????????????"DnsOptions":?[],
          ????????????"DnsSearch":?[],
          ????????????"ExtraHosts":?null,
          ????????????"GroupAdd":?null,
          ????????????"IpcMode":?"private",
          ????????????"Cgroup":?"",
          ????????????"Links":?null,
          ????????????"OomScoreAdj":?0,
          ????????????"PidMode":?"",
          ????????????"Privileged":?false,
          ????????????"PublishAllPorts":?false,
          ????????????"ReadonlyRootfs":?false,
          ????????????"SecurityOpt":?null,
          ????????????"UTSMode":?"",
          ????????????"UsernsMode":?"",
          ????????????"ShmSize":?67108864,
          ????????????"Runtime":?"runc",
          ????????????"ConsoleSize":?[
          ????????????????0,
          ????????????????0
          ????????????],
          ????????????"Isolation":?"",
          ????????????"CpuShares":?0,
          ????????????"Memory":?0,
          ????????????"NanoCpus":?0,
          ????????????"CgroupParent":?"",
          ????????????"BlkioWeight":?0,
          ????????????"BlkioWeightDevice":?[],
          ????????????"BlkioDeviceReadBps":?null,
          ????????????"BlkioDeviceWriteBps":?null,
          ????????????"BlkioDeviceReadIOps":?null,
          ????????????"BlkioDeviceWriteIOps":?null,
          ????????????"CpuPeriod":?0,
          ????????????"CpuQuota":?0,
          ????????????"CpuRealtimePeriod":?0,
          ????????????"CpuRealtimeRuntime":?0,
          ????????????"CpusetCpus":?"",
          ????????????"CpusetMems":?"",
          ????????????"Devices":?[],
          ????????????"DeviceCgroupRules":?null,
          ????????????"DeviceRequests":?null,
          ????????????"KernelMemory":?0,
          ????????????"KernelMemoryTCP":?0,
          ????????????"MemoryReservation":?0,
          ????????????"MemorySwap":?0,
          ????????????"MemorySwappiness":?null,
          ????????????"OomKillDisable":?false,
          ????????????"PidsLimit":?null,
          ????????????"Ulimits":?null,
          ????????????"CpuCount":?0,
          ????????????"CpuPercent":?0,
          ????????????"IOMaximumIOps":?0,
          ????????????"IOMaximumBandwidth":?0,
          ????????????"MaskedPaths":?[
          ????????????????"/proc/asound",
          ????????????????"/proc/acpi",
          ????????????????"/proc/kcore",
          ????????????????"/proc/keys",
          ????????????????"/proc/latency_stats",
          ????????????????"/proc/timer_list",
          ????????????????"/proc/timer_stats",
          ????????????????"/proc/sched_debug",
          ????????????????"/proc/scsi",
          ????????????????"/sys/firmware"
          ????????????],
          ????????????"ReadonlyPaths":?[
          ????????????????"/proc/bus",
          ????????????????"/proc/fs",
          ????????????????"/proc/irq",
          ????????????????"/proc/sys",
          ????????????????"/proc/sysrq-trigger"
          ????????????]
          ????????},
          ????????"GraphDriver":?{
          ????????????"Data":?{
          ????????????????"LowerDir":?"/var/lib/docker/overlay2/12dc0a9a1edfa81d751b0fb1e46c7b8a57496ce28c567a9be0c4cee0826e3aeb-init/diff:/var/lib/docker/overlay2/26bb2777dc2cacdd0a7615b08305b202213c79e19d42abe2da96931159d87fe4/diff",
          ????????????????"MergedDir":?"/var/lib/docker/overlay2/12dc0a9a1edfa81d751b0fb1e46c7b8a57496ce28c567a9be0c4cee0826e3aeb/merged",
          ????????????????"UpperDir":?"/var/lib/docker/overlay2/12dc0a9a1edfa81d751b0fb1e46c7b8a57496ce28c567a9be0c4cee0826e3aeb/diff",
          ????????????????"WorkDir":?"/var/lib/docker/overlay2/12dc0a9a1edfa81d751b0fb1e46c7b8a57496ce28c567a9be0c4cee0826e3aeb/work"
          ????????????},
          ????????????"Name":?"overlay2"
          ????????},
          ????????"Mounts":?[],
          ????????"Config":?{
          ????????????"Hostname":?"07ec06da09d3",
          ????????????"Domainname":?"",
          ????????????"User":?"",
          ????????????"AttachStdin":?false,
          ????????????"AttachStdout":?false,
          ????????????"AttachStderr":?false,
          ????????????"Tty":?false,
          ????????????"OpenStdin":?false,
          ????????????"StdinOnce":?false,
          ????????????"Env":?[
          ????????????????"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
          ????????????],
          ????????????"Cmd":?[
          ????????????????"/bin/sh",
          ????????????????"-c",
          ????????????????"while?true;do?echo?lsustc;sleep?1;done"
          ????????????],
          ????????????"Image":?"centos",
          ????????????"Volumes":?null,
          ????????????"WorkingDir":?"",
          ????????????"Entrypoint":?null,
          ????????????"OnBuild":?null,
          ????????????"Labels":?{
          ????????????????"org.label-schema.build-date":?"20210915",
          ????????????????"org.label-schema.license":?"GPLv2",
          ????????????????"org.label-schema.name":?"CentOS?Base?Image",
          ????????????????"org.label-schema.schema-version":?"1.0",
          ????????????????"org.label-schema.vendor":?"CentOS"
          ????????????}
          ????????},
          ????????"NetworkSettings":?{
          ????????????"Bridge":?"",
          ????????????"SandboxID":?"a1f18e6232584a32ac8d2cb6db5d8a1f18ad821fce71b2cd34fa0a020a09a557",
          ????????????"HairpinMode":?false,
          ????????????"LinkLocalIPv6Address":?"",
          ????????????"LinkLocalIPv6PrefixLen":?0,
          ????????????"Ports":?{},
          ????????????"SandboxKey":?"/var/run/docker/netns/a1f18e623258",
          ????????????"SecondaryIPAddresses":?null,
          ????????????"SecondaryIPv6Addresses":?null,
          ????????????"EndpointID":?"d1e2479a32bd539de95b8df790472101d8b845c18a369d04d02464945d53d7be",
          ????????????"Gateway":?"172.17.0.1",
          ????????????"GlobalIPv6Address":?"",
          ????????????"GlobalIPv6PrefixLen":?0,
          ????????????"IPAddress":?"172.17.0.2",
          ????????????"IPPrefixLen":?16,
          ????????????"IPv6Gateway":?"",
          ????????????"MacAddress":?"02:42:ac:11:00:02",
          ????????????"Networks":?{
          ????????????????"bridge":?{
          ????????????????????"IPAMConfig":?null,
          ????????????????????"Links":?null,
          ????????????????????"Aliases":?null,
          ????????????????????"NetworkID":?"5243f4bc7a0fb78b2e34152bac5fed360d3899b9bcbd7949c62824046097e1fb",
          ????????????????????"EndpointID":?"d1e2479a32bd539de95b8df790472101d8b845c18a369d04d02464945d53d7be",
          ????????????????????"Gateway":?"172.17.0.1",
          ????????????????????"IPAddress":?"172.17.0.2",
          ????????????????????"IPPrefixLen":?16,
          ????????????????????"IPv6Gateway":?"",
          ????????????????????"GlobalIPv6Address":?"",
          ????????????????????"GlobalIPv6PrefixLen":?0,
          ????????????????????"MacAddress":?"02:42:ac:11:00:02",
          ????????????????????"DriverOpts":?null
          ????????????????}
          ????????????}
          ????????}
          ????}
          ]

          進入當前正在運行的容器

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

          #?命令
          docker?exec?-it?容器id?bashShell

          #測試
          [root@VM-4-8-centos?~]#?docker?ps
          CONTAINER?ID???IMAGE?????COMMAND??????????????????CREATED????????STATUS????????PORTS?????NAMES
          07ec06da09d3???centos????"/bin/sh?-c?'while?t…"???33?hours?ago???Up?33?hours?????????????focused_jemison
          [root@VM-4-8-centos?~]#?docker?exec?-it?07ec06da09d3?/bin/bash
          [root@07ec06da09d3?/]#?ls
          bin??dev??etc??home??lib??lib64??lost+found??media??mnt??opt??proc??root??run??sbin??srv??sys??tmp??usr??var
          [root@07ec06da09d3?/]#?ps?-ef
          UID????????PID??PPID??C?STIME?TTY??????????TIME?CMD
          root?????????1?????0??0?Mar26??????????00:00:35?/bin/sh?-c?while?true;do?echo?lsustc;sleep?1;done
          root?????20554?????0??0?10:20?pts/0????00:00:00?/bin/bash
          root?????20577?????1??0?10:20??????????00:00:00?/usr/bin/coreutils?--coreutils-prog-shebang=sleep?/usr/bin/sleep?1
          root?????20578?20554??0?10:20?pts/0????00:00:00?ps?-ef


          #?方式二
          docker?attach?容器id
          #?測試
          [root@VM-4-8-centos?~]#?docker?attach?07ec06da09d3
          正在執(zhí)行當前的代碼



          #?docker?exec??????#?進入容器后開啟一個新的中斷,可以在里面操作(常用)
          #?docker?attach????#?進入容器正在執(zhí)行的終端,不會啟動新的進程

          從容器內(nèi)拷貝文件到主機上

          docker?cp?容器id:容器內(nèi)路徑??目的的主機路徑

          #查看當前主機目錄
          [root@VM-4-8-centos?~]#?cd?/home
          [root@VM-4-8-centos?home]#?ls
          lighthouse
          #?進入docker容器內(nèi)部
          [root@VM-4-8-centos?home]#?docker?attach?a7db90e07628
          [root@a7db90e07628?/]#?cd?/home/
          [root@a7db90e07628?home]#?ls
          #在容器內(nèi)新建一個文件
          [root@a7db90e07628?home]#?touch?test.txt
          [root@a7db90e07628?home]#?ls
          test.txt
          [root@a7db90e07628?home]#?exit
          exit
          [root@VM-4-8-centos?home]#?docker?ps?-a
          CONTAINER?ID???IMAGE?????COMMAND???????CREATED?????????
          a7db90e07628???centos????"/bin/bash"???2?minutes?ago???
          #?將這文件拷貝出來到主機上
          [root@VM-4-8-centos?home]#?docker?cp?a7db90e07628:/home/test.txt?/home
          [root@VM-4-8-centos?home]#?ls
          lighthouse?test.txt

          #?拷貝是一個手動過程,未來我們使用?-v?卷的技術(shù),可以實現(xiàn)

          學習方式:將所有命令全部敲一遍,自己記錄筆記!

          小結(jié)

          507716fe81694ea375137cd09c3016f0.webp


          ??attach??????Attach?local?standard?input,?output,?and?error?streams?to?a?running?container?#?當前shell下???attach連接指定運行鏡像
          ??build???????Build?an?image?from?a?Dockerfile??????????????????#?通過dockfile定制鏡像
          ??commit??????Create?a?new?image?from?a?container's?changes?????#?提交當前容器為新的鏡像
          ??cp??????????Copy?files/folders?between?a?container?and?the?local?filesystem??#?從容器中拷貝指定文件或者目???錄到宿主機中
          ??create??????Create?a?new?container????????????????????????????#創(chuàng)建一個新的容器,同run,但不啟動容器
          ??diff????????Inspect?changes?to?files?or?directories?on?a?container's?filesystem?#?查看docker容器變化
          ??events??????Get?real?time?events?from?the?server??????????????#?從docker服務(wù)獲取容器實時事件
          ??exec????????Run?a?command?in?a?running?container??????????????#?在已存在的容器上運行命令
          ??export??????Export?a?container's?filesystem?as?a?tar?archive??#?導出容器的內(nèi)容流作為一個tar?歸檔文件[對應(yīng)???import]
          ??history?????Show?the?history?of?an?image??????????????????????#?展示一個鏡像形成歷史????
          ??images??????List?images???????????????????????????????????????#?列出系統(tǒng)當前鏡像
          ??import??????Import?the?contents?from?a?tarball?to?create?a?filesystem?image??#?從tar包中的內(nèi)容創(chuàng)建一個新???的文件系統(tǒng)映像[對應(yīng)export]
          ??info????????Display?system-wide?information???????????????????#?顯示系統(tǒng)相關(guān)信息
          ??inspect?????Return?low-level?information?on?Docker?objects????#?查看容器詳細信息
          ??kill????????Kill?one?or?more?running?containers???????????????#?kill?指定docker?容器
          ??load????????Load?an?image?from?a?tar?archive?or?STDIN?????????#?從一個tar包中加載一個鏡像[對應(yīng)save]
          ??login???????Log?in?to?a?Docker?registry???????????????????????#?注冊或者登錄一個docker源服務(wù)器
          ??logout??????Log?out?from?a?Docker?registry????????????????????#?從當前docker?registry退出
          ??logs????????Fetch?the?logs?of?a?container?????????????????????#?輸出當前容器日志信息
          ??pause???????Pause?all?processes?within?one?or?more?containers?#?暫停容器
          ??port????????List?port?mappings?or?a?specific?mapping?for?the?container?#?查看映射端口對應(yīng)的容器內(nèi)部源端口
          ??ps??????????List?containers???????????????????????????????????#?列出容器列表
          ??pull????????Pull?an?image?or?a?repository?from?a?registry?????#?從docker鏡像源服務(wù)器拉取指定鏡像或者庫鏡像
          ??push????????Push?an?image?or?a?repository?to?a?registry???????#?推送指定鏡像或者庫鏡像至docker源服務(wù)器
          ??rename??????Rename?a?container????????????????????????????????#?重命名容器
          ??restart?????Restart?one?or?more?containers????????????????????#?重啟容器
          ??rm??????????Remove?one?or?more?containers?????????????????????#?移除一個或多個容器
          ??rmi?????????Remove?one?or?more?images?????????????????????????#?移除一個或多個鏡像[無容器使用該鏡像才可刪???除,否則刪除相關(guān)容器才可繼續(xù)或?-f?強制刪除]
          ??run?????????Run?a?command?in?a?new?container??????????????????#?創(chuàng)建一個新的容器并運行一個命令
          ??save????????Save?one?or?more?images?to?a?tar?archive?(streamed?to?STDOUT?by?default)?#?保存一個鏡像為一???個tar包[對應(yīng)load]
          ??search??????Search?the?Docker?Hub?for?images??????????????????#?在docker?hub中搜索鏡像
          ??start???????Start?one?or?more?stopped?containers??????????????#?啟動容器
          ??stats???????Display?a?live?stream?of?container(s)?resource?usage?statistics?#?
          ??stop????????Stop?one?or?more?running?containers???????????????#?停止容器
          ??tag?????????Create?a?tag?TARGET_IMAGE?that?refers?to?SOURCE_IMAGE?#?給源中的鏡像打標簽
          ??top?????????Display?the?running?processes?of?a?container??????#?查看容器中運行的進程信息
          ??unpause?????Unpause?all?processes?within?one?or?more?containers?#?取消暫停容器
          ??update??????Update?configuration?of?one?or?more?containers????#?更新一個或多個容器配置
          ??version?????Show?the?Docker?version?information???????????????#?查看docker版本號
          ??wait????????Block?until?one?or?more?containers?stop,?then?print?their?exit?codes?#?截取容器停止時的退出狀???態(tài)值

          docker的命令時十分多的,上面我們學習的那些都是常有的容器和鏡像的命令,之后我們還會學習很多命令!

          接下來就是一堆的練習

          作業(yè)練習

          Docker安裝Nginx

          #?1、搜索鏡像?search?建議去docker官網(wǎng)搜索,可以查看幫助文檔
          #?2、下載鏡像?pull
          #?3、運行測試
          [root@VM-4-8-centos?home]#?docker?images
          REPOSITORY???TAG???????IMAGE?ID???????CREATED????????SIZE
          nginx????????latest????f2f70adc5d89???9?days?ago?????142MB
          centos???????latest????5d0da3dc9764???6?months?ago???231MB


          #?-d?后臺運行
          #?--name?給容器命名
          #?-p?宿主機端口,容器內(nèi)部端口
          [root@VM-4-8-centos?home]#?docker?run?-d?--name?nginx01?-p?3344:80?nginx
          1e18828819ab57709368f91e7825ba8ba26ebf3af45c2ef65dc958308a1f52e9
          [root@VM-4-8-centos?home]#?docker?ps
          CONTAINER?ID???IMAGE?????COMMAND??????????????????CREATED?????????STATUS?????????PORTS???????????????????????????????????NAMES
          1e18828819ab???nginx?????"/docker-entrypoint.…"???7?seconds?ago???Up?5?seconds???0.0.0.0:3344->80/tcp,?:::3344->80/tcp???nginx01
          [root@VM-4-8-centos?home]#?curl?localhost:3344

          #?進入容器
          [root@VM-4-8-centos?home]#?docker?exec?-it?nginx01?/bin/bash
          root@1e18828819ab:/#?whereis?nginx
          nginx:?/usr/sbin/nginx?/usr/lib/nginx?/etc/nginx?/usr/share/nginx
          root@1e18828819ab:/#?cd?/etc/nginx/
          root@1e18828819ab:/etc/nginx#?ls
          conf.d????fastcgi_params????mime.types??modules??nginx.conf??scgi_params??uwsgi_params
          root@1e18828819ab:/etc/nginx#?

          端口暴露的概念

          3c75f68cf2130297d2dfe4435122e61d.webp


          瀏覽 112
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  天堂一区二区三区18在线观看 | www.艹 | 青青草人人操人人摸人人干 | 派遣素描模特儿居家作画 却假藉 | 综合视频区|