1. Docker學(xué)習(xí)筆記(一)

        共 25835字,需瀏覽 52分鐘

         ·

        2022-04-01 20:55

        Docker概述

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

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

        1、在自己的電腦上可以運(yùn)行!在別人電腦上無法運(yùn)行!

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

        這種模式對(duì)于運(yùn)維來說,考驗(yàn)就十分大!環(huán)境配置是十分麻煩,每一個(gè)機(jī)器都要部署環(huán)境(集群Redis、Es、Hadoop)!費(fèi)時(shí)費(fèi)力。

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

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

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

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

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

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

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

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

        a5649925909fbf4932abffb8e0b331cf.webp


        就像Docker圖標(biāo)一樣,Docker的思想就來自于集裝箱!

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

        docker容器:

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

        本質(zhì):所有的技術(shù)都是因?yàn)槌霈F(xiàn)了一些問題,我們需要去解決,才去學(xué)習(xí)!

        Docker的歷史

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

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

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

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

        2013年,Docker開源!

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

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

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

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

        虛擬機(jī):在window中裝一個(gè)VMware,通過這個(gè)軟件我們可以虛擬出來一臺(tái)或多臺(tái)電腦!笨重!

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

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

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

        聊聊Docker

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

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

        e50ad35cd757651101ff1b3b87965655.webp


        文檔:https://docs.docker.com/ Docker的文檔是超級(jí)詳細(xì)的!

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

        Docker能干嘛?

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

        22786b1eae9e68754d449b27e52dbd1e.webp


        虛擬機(jī)技術(shù)缺點(diǎn):

        1、資源占用十分多

        2、冗余步驟多

        3、啟動(dòng)很慢

        容器化技術(shù)

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

        f22ed5d3a425ef2cea8eb3772cef263b.webp


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

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

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

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

        DevOps(開發(fā),運(yùn)維)

        更快速的交付和部署

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

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

        更便捷的升級(jí)和擴(kuò)縮容

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

        項(xiàng)目打包為一個(gè)鏡像,擴(kuò)展 服務(wù)器A!服務(wù)器B

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

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

        更高效的計(jì)算資源利用:

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

        Docker安裝

        Docker的基本組成

        f5c464c11479c850adebf4eb7018e799.webp


        鏡像(image):

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

        容器(container):

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

        啟動(dòng),停止,刪除,基本命令!

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

        倉庫(repository):

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

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

        Docker Hub(默認(rèn)國外的)

        阿里云...都有容器服務(wù)器(配置鏡像加速?。?/p>

        安裝Docker

        環(huán)境準(zhǔn)備

        1、需要會(huì)一點(diǎn)點(diǎn)的Linux的基礎(chǔ)

        2、CentOS 7

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

        環(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、啟動(dòng)docker
        sudo?systemctl?start?docker

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

        938d6674efe78edb231ff1c335808430.webp


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

        d8ee04fec33897e051f500abdce88c62.webp


        #8、查看一下下載的這個(gè)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默認(rèn)資源路徑
        sudo?rm?-rf?/var/lib/containerd

        阿里云鏡像加速

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

        2、找到鏡像加速地址

        3、配置使用

        回顧HelloWorld流程

        d8ee04fec33897e051f500abdce88c62.webp


        31628a57053d1c7a2458969114c709a3.webp


        Docker底層

        Docker是怎么工作的?

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

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

        484ea1c42fceb058850d5fa315829d2e.webp


        Docker為什么比VM快?

        1、Docker有著比虛擬機(jī)更少的抽象層

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

        2c25671122e06c4373d7b55f95391039.webp


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

        Docker的常用命令

        幫助命令

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

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

        鏡像命令

        docker images?查看所有本地的主機(jī)上的鏡像

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

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

        #?可選項(xiàng)
        ??-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]???????


        #?可選項(xiàng),通過搜藏來過濾
        --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,默認(rèn)就是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?#?真實(shí)地址

        #?等價(jià)于它
        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?#刪除多個(gè)鏡像
        [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,下載一個(gè)centos鏡像來測試學(xué)習(xí)

        docker?pull?centos

        新建容器并啟動(dòng)

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

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

        #?測試,啟動(dòng)并進(jìn)入容器
        [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
        #?從容器退回到主機(jī)
        [root@b39226b092a3?/]#?exit
        exit

        列出所有的運(yùn)行的容器

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

        [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??????????????????#刪除指定的容器,不能刪除正在運(yùn)行的容器,如果要?jiǎng)h除rm?-f
        docker?rm?-f?$(docker?ps?-aq)?????#刪除所有的容器
        docker?ps?-a?-q?|?xargs?docker?rm?#刪除所有的容器

        啟動(dòng)和停止容器的操作

        docker?start?容器id??????#?啟動(dòng)容器
        docker?restart?容器id????#?重啟容器
        docker?stop?容器id???????#?停止當(dāng)前正在運(yùn)行的容器
        docker?kill?容器id???????#?強(qiáng)制停止當(dāng)前容器

        常用其它命令

        后臺(tái)啟動(dòng)容器

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

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

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

        查看日志

        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

        查看容器中的進(jìn)程信息

        #?命令?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
        ????????????????}
        ????????????}
        ????????}
        ????}
        ]

        進(jìn)入當(dāng)前正在運(yùn)行的容器

        #?我們通常容器都是使用后臺(tái)方式運(yùn)行的,需要進(jìn)入容器,修改一些配置

        #?命令
        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í)行當(dāng)前的代碼



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

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

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

        #查看當(dāng)前主機(jī)目錄
        [root@VM-4-8-centos?~]#?cd?/home
        [root@VM-4-8-centos?home]#?ls
        lighthouse
        #?進(jìn)入docker容器內(nèi)部
        [root@VM-4-8-centos?home]#?docker?attach?a7db90e07628
        [root@a7db90e07628?/]#?cd?/home/
        [root@a7db90e07628?home]#?ls
        #在容器內(nèi)新建一個(gè)文件
        [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???
        #?將這文件拷貝出來到主機(jī)上
        [root@VM-4-8-centos?home]#?docker?cp?a7db90e07628:/home/test.txt?/home
        [root@VM-4-8-centos?home]#?ls
        lighthouse?test.txt

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

        學(xué)習(xí)方式:將所有命令全部敲一遍,自己記錄筆記!

        小結(jié)

        507716fe81694ea375137cd09c3016f0.webp


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

        docker的命令時(shí)十分多的,上面我們學(xué)習(xí)的那些都是常有的容器和鏡像的命令,之后我們還會(huì)學(xué)習(xí)很多命令!

        接下來就是一堆的練習(xí)

        作業(yè)練習(xí)

        Docker安裝Nginx

        #?1、搜索鏡像?search?建議去docker官網(wǎng)搜索,可以查看幫助文檔
        #?2、下載鏡像?pull
        #?3、運(yùn)行測試
        [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?后臺(tái)運(yùn)行
        #?--name?給容器命名
        #?-p?宿主機(jī)端口,容器內(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

        #?進(jìn)入容器
        [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
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 玖玖在线视频 | 婷婷五月无码 | 开心成人激情 | 天美传媒操小屄 | 黄色一节片 |