<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中級(jí)篇,看這篇就對(duì)了

          共 7438字,需瀏覽 15分鐘

           ·

          2020-10-17 09:17

             


          點(diǎn)擊上方“開(kāi)源Linux”,選擇“設(shè)為星標(biāo)”

          回復(fù)“學(xué)習(xí)”獲取獨(dú)家整理的學(xué)習(xí)資料!


          姊妹篇:


          Docker容器網(wǎng)絡(luò)-基礎(chǔ)篇


          十分鐘看懂Docker和K8S

          Docker鏡像是什么

          鏡像是一種輕量級(jí)、可執(zhí)行的獨(dú)立軟件包,用來(lái)打包軟件運(yùn)行環(huán)境和基于運(yùn)行環(huán)境開(kāi)發(fā)的軟件,它包含運(yùn)行某個(gè)軟件所需的所有內(nèi)容,包括代碼、運(yùn)行時(shí)庫(kù)、環(huán)境變量和配置文件

          Docker鏡像加載原理

          UnionFs:聯(lián)合文件系統(tǒng)

          UnionFs(聯(lián)合文件系統(tǒng)):Union文件系統(tǒng)(UnionFs)是一種分層、輕量級(jí)并且高性能的文件系統(tǒng),它支持對(duì)文件系統(tǒng)的修改作為一次提交來(lái)一層層的疊加,同時(shí)可以將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下,UnionFs聯(lián)合文件系統(tǒng)是Docker鏡像的基礎(chǔ),鏡像可以通過(guò)分層來(lái)進(jìn)行繼承,基于基礎(chǔ)鏡像(沒(méi)有父鏡像),可以制作各種具體的應(yīng)用鏡像特性:一次同時(shí)加載多個(gè)文件系統(tǒng),但從外面看起來(lái),只能看到一個(gè)文件系統(tǒng),聯(lián)合加載會(huì)把各層文件系統(tǒng)疊加起來(lái),這樣最終的文件系統(tǒng)會(huì)包含所有底層的文件和目錄

          Docker鏡像加載原理

          Docker的鏡像實(shí)際上由一層一層的UnionFs文件系統(tǒng)組成bootfs:主要包含 bootloader和 Kernel,bootloader主要是引導(dǎo)加 kernel,Linux剛啟動(dòng)時(shí)會(huì)加bootfs文件系統(tǒng),在 Docker鏡像的最底層是bootfs,這一層與我們典型的Linux/Unix系統(tǒng)是一樣的,包含bootfs加載器和內(nèi)核,當(dāng)bootfs加載完成之后整個(gè)內(nèi)核就都在內(nèi)存中了,此時(shí)內(nèi)存的使用權(quán)已由 bootfs轉(zhuǎn)交給內(nèi)核,此時(shí)系統(tǒng)也會(huì)卸載bootfs。

          rootfs:在 bootfs之上,包含的就是典型 Linux系統(tǒng)中的/dev、/proc、/bin、/etc等標(biāo)準(zhǔn)目錄和文件,rootfs就是各種不同的操作系統(tǒng)發(fā)行版,比如:Ubuntu,、CentOS等等

          簡(jiǎn)單理解:

          1. 對(duì)于Docker安裝OS來(lái)說(shuō):就是Docker使用了Linux本身的bootfs,只需要安裝自己所需的rootfs。

          2. 對(duì)于Docker安裝普通鏡像來(lái)說(shuō):就是Docker本身是分層下載鏡像,所以可以提取出公共層鏡像,進(jìn)行復(fù)用。

          Docker鏡像的特點(diǎn)

          Docker鏡像都是只讀的,當(dāng)容器啟動(dòng)時(shí),一個(gè)新的可寫(xiě)層加載到鏡像的頂部

          這一層就是我們通常說(shuō)的容器層,容器之下的都叫鏡像層

          Commit鏡像

          # 提交本地鏡像 # -a:作者信息 -m:描述信息 容器ID 鏡像名稱(chēng):版本信息docker commit -a="test" -m="test" 容器id tomcat01:1.0

          Docker容器數(shù)據(jù)卷

          什么是容器數(shù)據(jù)卷

          容器之間可以有一個(gè)數(shù)據(jù)共享的技術(shù)!Docker容器中產(chǎn)生的數(shù)據(jù),同步到本地!

          這就是卷技術(shù)!目錄的掛載,將我們?nèi)萜鲀?nèi)的目錄,掛載到Linux上面!

          容器數(shù)據(jù)卷使用命令

          # 命令docker run -it -v 主機(jī)目錄:容器內(nèi)目錄 /bin/bash

          掛載MySQL數(shù)據(jù)庫(kù)到Liunx宿主機(jī)

          # 1. 下載MySQLdocker pull mysql# 2. 啟動(dòng)并掛載 -e:特別注意需要設(shè)置密碼docker run -d -p 3344:3306 -v /home/conf:/etc/mysql/conf.d -v /home/logs:/logs -v /home/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

          此時(shí)我們使用遠(yuǎn)程連接軟件會(huì)報(bào)錯(cuò)


          # 解決報(bào)錯(cuò)# 1. 進(jìn)入容器內(nèi)docker exec -it 容器ID /bin/bash# 2. 進(jìn)入MySQLmysql -uroot -p123456# 3. 授權(quán)mysql> GRANT ALL ON *.* TO 'root'@'%';# 4. 刷新權(quán)限:mysql> flush privileges;# 5. 更新加密規(guī)則:mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;# 6. 更新root用戶(hù)密碼:mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';# 7. 刷新權(quán)限:mysql> flush privileges;


          具名和匿名掛載

          -v 容器內(nèi)路徑          # 匿名掛載-v 卷名:容器內(nèi)路徑         # 具名掛載-v 宿主機(jī)路徑:容器內(nèi)路徑 # 指定路徑掛載Docker容器內(nèi)的卷,在沒(méi)有指定目錄的情況下都在/var/lib/docker/volumes/xxx/_data下

          拓展:綁定權(quán)限

          # 通過(guò) -v 容器內(nèi)路徑:ro rw 改變讀寫(xiě)權(quán)限ro # readonly 只讀rw # readwrite 可讀可寫(xiě)docker run -d nginx01 -v nginxdemo:/etc/nginx:ro nginxdocker run -d nginx01 -v nginxdemo:/etc/nginx:rw nginx# ro:只要看到ro就說(shuō)明這個(gè)路徑只能通過(guò)宿主機(jī)來(lái)操作,容器內(nèi)部是無(wú)法操作

          數(shù)據(jù)卷容器掛載

          目的:實(shí)現(xiàn)多個(gè)容器間的數(shù)據(jù)同步(多個(gè)MySQL間共享數(shù)據(jù))

          # 使用 --volumes-from 容器名稱(chēng) 此命令實(shí)現(xiàn)數(shù)據(jù)卷容器掛載docker run -d --name mysql02 -p 3345:3306 --volumes-from  mysql01 -e MYSQL_ROOT_PASSWORD=123456 mysql

          DockerFile

          DockerFile是用來(lái)構(gòu)建Docker鏡像的文件(命令參數(shù)腳本)

          DockerFile構(gòu)建指令

          FROM                # 基礎(chǔ)鏡像,一切從這里開(kāi)始構(gòu)建MAINTAINER             # 鏡像是誰(shuí)寫(xiě)的, 姓名+郵箱RUN                    # 鏡像構(gòu)建的時(shí)候需要運(yùn)行的命令ADD                    # 步驟,tomcat鏡像,這個(gè)tomcat壓縮包!添加內(nèi)容 添加同目錄WORKDIR                # 鏡像的工作目錄VOLUME                # 掛載的目錄EXPOSE                # 保留端口配置CMD                    # 指定這個(gè)容器啟動(dòng)的時(shí)候要運(yùn)行的命令,只有最后一個(gè)會(huì)生效,可被替代ENTRYPOINT            # 指定這個(gè)容器啟動(dòng)的時(shí)候要運(yùn)行的命令,可以追加命令COPY                # 類(lèi)似ADD,將我們文件拷貝到鏡像中ENV                    # 構(gòu)建的時(shí)候設(shè)置環(huán)境變量!

          創(chuàng)建一個(gè)自己的CentOS鏡像

          • 創(chuàng)建DockerFile
          vim mycentos
          • 編寫(xiě)DockerFile
          FROM centosMAINTAINER MT<[email protected]>
          ENV MYPATH /usr/localWORKEDIR $MYPATH
          RUN yum -y install vim
          EXPOSE 80
          CMD /bin/bash
          • 構(gòu)建自己的鏡像
          docker build -f mycentos -t mycentosdemodo:1.0 .
          • 查看鏡像生成歷史
          docker history 鏡像ID

          創(chuàng)建Tomcat鏡像

          1.準(zhǔn)備鏡像文件:Tomcat和JDK的壓縮包

          2.編寫(xiě)DockerFile

          FROM centosMAINTAINER fortuneteller<[email protected]>
          COPY README.txt /usr/local/README.txt
          ADD jdk-8u251-linux-x64.tar.gz /usr/localADD apache-tomcat-9.0.35.tar.gz /usr/local
          RUN yum -y install vim
          ENV MYPATH /usr/localWORKDIR $MYPATH
          ENV JAVA_HOME /usr/local/jdk1.8.0_251ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-9.0.35ENV CATALINA_BASH /usr/local/apache-toacat-9.0.35ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
          EXPOSE 8080
          CMD ["/usr/local/apache-tomcat-9.0.35/bin/catalina.sh", "run"]

          3.打包鏡像

          # 這里使用的是Dockerfile來(lái)明白的腳本,所以省略-fdocker build -t mytomcat .

          4.啟動(dòng)鏡像

          docker run -d -p 3344:8080 --name mttomcat -v /home/fortuneteller/tomcat/test:/usr/local/apache-tomcat-9.0.35/webapps/test -v /home/fortuneteller/tomcat/logs:/usr/local/apache-tomcat-9.0.35/logs mytomcat

          5.測(cè)試運(yùn)行

          6.在宿主機(jī)的/home/fortuneteller/tomcat/test目錄下創(chuàng)建WEB-INF目錄與mt.jsp

          <%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>dockertitle>head><body>----------welcome------------<%="這是一個(gè)測(cè)試頁(yè)面"%>body>html>

          7.在WEB-INF目錄下編寫(xiě)web.xml文件

          <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"         version="3.1">    <display-name>testdisplay-name>web-app>

          8.測(cè)試訪問(wèn)

          搜索頂級(jí)架構(gòu)師公眾號(hào)回復(fù)“offer”,送你一份算法面試題和答案驚喜禮包。

          本地鏡像上傳阿里云

          1. 登陸阿里云容器鏡像服務(wù)
          2. 創(chuàng)建命名空間
          3. 創(chuàng)建倉(cāng)庫(kù)
          4. 設(shè)置固定密碼
          1. 查看自己的推送命令
          1. 使用推送命令完成上傳
          1. 拉取時(shí)同理根據(jù)阿里云提示命令完成即可

          Docker總結(jié)

          Docker部署SpringBoot項(xiàng)目

          1. 使用Maven構(gòu)建獲得jar包

          2. 編寫(xiě)Dockerfile

          FROM java:8
          COPY *.jar /app.jar
          CMD ["--server.port=8080"]
          EXPOSE 8080
          ENTRYPOINT ["java", "jar", "app.jar"]
          1. 上傳Docker與jar包到Linux服務(wù)器

          2. 使用命令獲得鏡像

          docker build -t ideatest .
          1. 使用命令查看獲取到鏡像編號(hào)
          docker images
          1. 啟動(dòng)鏡像

          docker run -d -p 3344:8080 ideatest  # 3344端口需要提前在阿里云放開(kāi)
          1. 測(cè)試訪問(wèn)

          在瀏覽器輸入:服務(wù)器ip:3344

          作者 | Fortuneteller

          來(lái)源 | developer.aliyun.com/article/769273


          - End -

          關(guān)注「開(kāi)源Linux」加星標(biāo),提升IT技能

          瀏覽 67
          點(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>
                  豆花视频在线观 | 精品一区二区三区四区五区六区七区 | 高清无码一线逼美女系列 | 性色导航 | 国产乱论视频 |