<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Docker容器化教程

      Docker容器虛擬化

      學(xué)習(xí)目標(biāo):

      • 掌握Docker基礎(chǔ)知識,能夠理解Docker鏡像與容器的概念
      • 完成Docker安裝與啟動
      • 掌握Docker鏡像與容器相關(guān)命令
      • 掌握Tomcat Nginx 等軟件的常用應(yīng)用的安裝
      • 掌握docker遷移與備份相關(guān)命令
      • 能夠運用Dockerfile編寫創(chuàng)建容器的腳本
      • 能夠搭建與使用docker私有倉庫

      第一章 Docker簡介

      1.1 什么是虛擬化

      虛擬化,是指通過虛擬化技術(shù)將一臺計算機虛擬為多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統(tǒng),并且應(yīng)用程序都可以在相互獨立的空間內(nèi)運行而互不影響,從而顯著提高計算機的工作效率。

      虛擬化技術(shù)種類很多,例如:軟件虛擬化、硬件虛擬化、內(nèi)存虛擬化、網(wǎng)絡(luò)虛擬化(vip)、桌面虛擬化、服務(wù)虛擬化、虛擬機等等。

      問題:為什么會有docker出現(xiàn)?

      一款產(chǎn)品從開發(fā)到上線,從操作系統(tǒng),到運行環(huán)境,再到應(yīng)用配置。作為開發(fā)+運維之間的協(xié)作我們需要關(guān)心很多東西,這也是很多互聯(lián)網(wǎng)公司都不得不面對的問題,特別是各種版本的迭代之后,不同版本環(huán)境的兼容,對運維人員都是考驗 , 這個時候 Docker 橫空出世,是因為它對此給出了一個標(biāo)準(zhǔn)化的解決方案。

      環(huán)境配置如此麻煩,換一臺機器,就要重來一次,費力費時。很多人想到,能不能從根本上解決問題,軟件可以帶環(huán)境安裝?也就是說,安裝的時候,把原始環(huán)境一模一樣地復(fù)制過來。開發(fā)人員利用 Docker 可以消除協(xié)作編碼時“在我的機器上可正常工作”的問題。

      之前,可以發(fā)現(xiàn),每發(fā)布一個程序,都要走一遍以上的流程:

      1.2 什么是Docker

      Docker 是一個開源的應(yīng)用容器引擎,基于 Go 語言開發(fā)。Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

      Docker的主要目標(biāo)是“Build,Ship and Run Any App,Anywhere”,也就是通過對應(yīng)用組件的封裝、分發(fā)、部署、運行等生命周期的管理,使用戶的APP(可以是一個WEB應(yīng)用或數(shù)據(jù)庫應(yīng)用等等)及其運行環(huán)境能夠做到“一次封裝,到處運行”。

      總之一句話:只需要一次配置好環(huán)境,換到別的機子上就可以一鍵部署好,大大簡化了操作 。

      • 為什么選擇Docker?

        • Docker的鏡像提供了除內(nèi)核外完整的運行時環(huán)境,確保了應(yīng)用運行環(huán)境一致性,從而不會再出現(xiàn)“這段代碼在我機器上沒問題啊”這類問題;——一致的運行環(huán)境
        • 可以做到秒級、甚至毫秒級的啟動時間。大大的節(jié)約了開發(fā)、測試、部署的時間。——更快速的啟動時間
        • 避免公用的服務(wù)器,資源會容易受到其他用戶的影響。——隔離性
        • 善于處理集中爆發(fā)的服務(wù)器使用壓力;——彈性伸縮,快速擴展
        • 可以很輕易的將在一個平臺上運行的應(yīng)用,遷移到另一個平臺上,而不用擔(dān)心運行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運行的情況。——遷移方便
        • 使用Docker可以通過定制應(yīng)用鏡像來實現(xiàn)持續(xù)集成、持續(xù)交付、部署。——持續(xù)交付和部署
      • Docker應(yīng)用場景

        ① Web 應(yīng)用的自動化打包和發(fā)布

        ② 自動化測試和持續(xù)集成、發(fā)布

        ③ 在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺應(yīng)用

      使用Docker可以實現(xiàn)開發(fā)人員的開發(fā)環(huán)境、測試人員的測試環(huán)境、運維人員的生產(chǎn)環(huán)境的一致性。

      Docker借鑒了標(biāo)準(zhǔn)集裝箱的概念。標(biāo)準(zhǔn)集裝箱將貨物運往世界各地,Docker將這個模型運用到自己的設(shè)計中,唯一不同的是:集裝箱運輸貨物,而Docker運輸軟件。

      1.3 容器與虛擬機比較

      下面的圖片比較了 Docker 和傳統(tǒng)虛擬化方式的不同之處,可見容器是在操作系統(tǒng)層面上實現(xiàn)虛擬化,直接復(fù)用本地主機的操作系統(tǒng),而傳統(tǒng)方式則是在硬件層面實現(xiàn)。

      • 傳統(tǒng)虛擬機

      傳統(tǒng)虛擬機技術(shù)基于安裝在主操作系統(tǒng)上的虛擬機管理系統(tǒng)(如:VirtualBox和VMWare等),創(chuàng)建虛擬機(虛擬出各種硬件),在虛擬機上安裝從操作系統(tǒng),在從操作系統(tǒng)中安裝部署各種應(yīng)用。

      • Docker

      Docker容器是在操作系統(tǒng)層面上實現(xiàn)虛擬化,直接復(fù)用本地主機的操作系統(tǒng),而傳統(tǒng)虛擬機則是在硬件層面實現(xiàn)虛擬化。與傳統(tǒng)的虛擬機相比,Docker優(yōu)勢體現(xiàn)為啟動速度快、占用體積小。

      • 使用上的區(qū)別

      簡單來說: 容器和虛擬機具有相似的資源隔離和分配優(yōu)勢,但功能有所不同,因為容器虛擬化的是操作系統(tǒng),而不是硬件,因此容器更容易移植,效率也更高。

      1.4 Docker 組件

      1.4.1 Docker組成部分

      Docker是一個客戶端-服務(wù)器(C/S)架構(gòu)程序。Docker客戶端只需要向Docker服務(wù)器或者守護進程發(fā)出請求,服務(wù)器或者守護進程將完成所有工作并返回結(jié)果。Docker提供了一個命令行工具Docker以及一整套RESTful API。你可以在同一臺宿主機上運行Docker守護進程和客戶端,也可以從本地的Docker客戶端連接到運行在另一臺宿主機上的遠程Docker守護進程。

      1.4.2 Docker鏡像與容器

      鏡像:類似虛擬機鏡像 , 是一個特殊的文件系統(tǒng)

      操作系統(tǒng)分為內(nèi)核和用戶空間。對于Linux而言,內(nèi)核啟動后,會掛載root文件系統(tǒng)為其提供用戶空間支持。而Docker鏡像(Image),就相當(dāng)于是一個root文件系統(tǒng)。

      Docker鏡像是一個特殊的文件系統(tǒng),除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。 鏡像不包含任何動態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會被改變。

      容器:類似linux系統(tǒng)環(huán)境,運行和隔離應(yīng)用。是鏡像運行時的實體

      鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計中的類和實例一樣,鏡像是靜態(tài)的定義,容器是鏡像運行時的實體。容器可以被創(chuàng)建、啟動、停止、刪除、暫停等 。

      倉庫:集中存放鏡像文件的地方。

      鏡像構(gòu)建完成后,可以很容易的在當(dāng)前宿主上運行,但是, 如果需要在其它服務(wù)器上使用這個鏡像,我們就需要一個集中存儲、分發(fā)鏡像的地方,比如后面我們要學(xué)的,Docker Registry就是這樣的服務(wù)。

      1.4.3 Registry(注冊中心)

      Docker用Registry來保存用戶構(gòu)建的鏡像。Registry分為公共和私有兩種。Docker公司運營公共的Registry叫做Docker Hub。用戶可以在Docker Hub注冊賬號,分享并保存自己的鏡像(說明:在Docker Hub下載鏡像巨慢,可以自己構(gòu)建私有的Registry)。

      https://hub.docker.com/

      第二章 Docker安裝與啟動

      2.1 安裝Docker-CentOS7

      Docker官方建議在Ubuntu中安裝,因為Docker是基于Ubuntu發(fā)布的,而且一般Docker出現(xiàn)的問題Ubuntu是最先更新或者打補丁的。在很多版本的CentOS中是不支持更新最新的一些補丁包的。? 由于我們學(xué)習(xí)的環(huán)境都使用的是CentOS,因此這里我們將Docker安裝到CentOS上。

      注意:這里建議安裝在CentOS7.x以上的版本,在CentOS6.x的版本中,安裝前需要安裝其他很多的環(huán)境,而且Docker很多補丁不支持更新。

      1. 官網(wǎng)中文安裝參考手冊

      https://docs.docker.com/install/linux/docker-ce/centos/

      1. 確定你是CentOS7及以上版本

        cat /etc/redhat-release

      2. yum安裝gcc相關(guān)

        • CentOS7能上外網(wǎng)

        • 檢查gcc和g++是否安裝好,如果沒有安裝好,則需要安裝。

        • 安裝gcc和g++

          yum -y install gcc

          yum -y install gcc-c++

      3. 安裝需要的軟件包

      yum install -y yum-utils device-mapper-persistent-data lvm2
      1. 設(shè)置鏡像倉庫
        • 大坑(千萬不要試,網(wǎng)速慢,超時,安裝不上)
      yum-config-manager --add-repo (centos快速添加yum源)https://download.docker.com/linux/centos/docker-ce.repo 報錯:官網(wǎng)太慢,一定超時。 [Errno 14] curl#35 - TCP connection reset by peer [Errno 12] curl#35 - Timeout
      • 推薦:阿里云服務(wù)器
      yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      1. 更新yum軟件包索引
      yum makecache fast
      1. 安裝DOCKER CE(社區(qū)版)(DOCKER EE企業(yè)版收費)
      yum -y install docker-ce
      1. 啟動docker
        • 手動啟動:systemctl start docker
        • 自動啟動:systemctl enable docker
      2. 測試
        • 檢查版本:docker version
        • 下載并運行HelloWorld:docker run hello-world
          • 如果下載不下來,可以配置鏡像加速器
          • 輸出這段提示以后,hello world就會停止運行,容器自動終止。

      • run干了什么

      ![計算機生成了可選文字: 以該鏡像為模板生產(chǎn)容器實例運行 開始 DoCker在本機中 尋找該鏡像 本機是否有該鏡像 下載該鏡像到本地 以該說像為棋板生產(chǎn)容瀚實例運行 去DockerHub上查找該鏡像 Hub能否找到 返回失敗錯誤,查不到該鏡像]

      1. 配置鏡像加速CentOS7版本

        mkdir -p /etc/docker

        vim /etc/docker/daemon.json

        • #網(wǎng)易云
      { "registry-mirrors": ["http://hub-mirror.c.163.com"] }
      • #阿里云(推薦)
      { "registry-mirrors": ["https://8y2y8njn.mirror.aliyuncs.com"] }
      • #ustc

        #是老牌的linux鏡像服務(wù)提供者了,還在遙遠的ubuntu 5.04版本的時候就在用。ustc的docker鏡像加速器速度很快。

        #ustc docker mirror的優(yōu)勢之一就是不需要注冊,是真正的公共服務(wù)。

        #https://lug.ustc.edu.cn/wiki/mirrors/help/docker

        在該文件中輸入如下內(nèi)容:

      { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }

      systemctl daemon-reload

      systemctl restart docker

      1. 卸載
      yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

      2.2 Docker的啟動與停止

      2.2.1 命令

      啟動docker: systemctl start docker
      停止docker: systemctl stop docker
      重啟docker: systemctl restart docker
      查看docker狀態(tài): systemctl status docker
      開機啟動: systemctl enable docker
      查看docker概要信息: docker info
      查看docker幫助文檔: docker --help

      2.2.2 幫助手冊:docker --help

      2.2.3 指令介紹

      cp 本地文件系統(tǒng)(OS操作系統(tǒng)|宿主機)和容器之間進行文件或者文件夾拷貝
      exec 登錄一個容器,使用命令行操作正在運行的容器。
      images 鏡像的集合查詢。
      ps 容器列表
      pull 下載鏡像
      restart 重啟一個或多個容器
      rm 刪除一個或多個容器
      rmi 刪除一個或多個鏡像
      run 創(chuàng)建一個容器,并運行起來
      save 導(dǎo)出鏡像到一個文件(tar)中
      search 搜索鏡像(從Docker Hub)
      start 啟動一個或多個已經(jīng)停止的容器
      stop 停止一個或多個正在運行的容器

      第三章 常用命令

      鏡像:Docker鏡像是由文件系統(tǒng)疊加而成(是一種文件的存儲形式);是docker中的核心概念,可以認為鏡像就是對某些運行環(huán)境或者軟件打的包,用戶可以從docker倉庫中下載基礎(chǔ)鏡像到本地,比如,開發(fā)人員可以從docker倉庫拉取(下載)一個只包含centos7系統(tǒng)的基礎(chǔ)鏡像,然后在這個鏡像中安裝jdk、mysql、Tomcat和自己開發(fā)的應(yīng)用,最后將這些環(huán)境打成一個新的鏡像。開發(fā)人員將這個新的鏡像提交給測試人員進行測試,測試人員只需要在測試環(huán)境下運行這個鏡像就可以了,這樣就可以保證開發(fā)人員的環(huán)境和測試人員的環(huán)境完全一致。

      3.1 鏡像相關(guān)命令

      3.1.1 查看鏡像

      查看鏡像可以使用如下命令:docker images

      • REPOSITORY:鏡像名稱

      • TAG:鏡像標(biāo)簽(版本)

      • IMAGE ID:鏡像ID

      • CREATED:鏡像的創(chuàng)建日期(不是獲取該鏡像的日期)

      • SIZE:鏡像大小

        這些鏡像都是存儲在Docker的 /var/lib/docker 目錄下

      3.1.2 搜索鏡像

      從網(wǎng)絡(luò)中查找需要的鏡像:docker search 鏡像名稱

      例如 下載一個 nginx 鏡像

      • NAME:倉庫名稱
      • DESCRIPTION:鏡像描述
      • STARS:用戶評價,反應(yīng)一個鏡像的受歡迎程度
      • OFFICIAL:是否官方
      • AUTOMATED:自動構(gòu)建,表示該鏡像由Docker Hub自動構(gòu)建流程創(chuàng)建

      3.1.3 拉取鏡像

      拉取鏡像就是從Docker倉庫下載鏡像到本地,鏡像名稱格式為 【名稱:版本號】,如果版本號不指定則是最新的版本

      命令:docker pull 鏡像名稱
      下載一個 nginx 的鏡像 , 需要注意:如果下載的時候,不指定版本,會下載最新版本

      剛剛下載的鏡像通過 docker images 就可以查看

      3.1.4 刪除鏡像

      可以按照鏡像id刪除鏡像,命令如下:docker rmi 鏡像ID

      刪除單個鏡像(-f 強制刪除):docker rmi -f 鏡像ID

      刪除多個鏡像:docker rmi -f 鏡像名1:TAG 鏡像名2:TAG

      刪除所有鏡像:docker rmi -f $(docker images -qa)

      3.1.5 從Docker Hub拉取

      Docker鏡像首頁,包括官方鏡像和其它公開鏡像。Docker Hub上最受歡迎的10大鏡像(通過Docker registry API獲取不了鏡像被pull的個數(shù),只能通過鏡像的stars數(shù)量來衡量鏡像的流行度。毫無疑問,擁有最高stars數(shù)量的庫都是官方庫)。

      https://hub.docker.com/search?image_filter=official&type=image

      國情的原因,國內(nèi)下載 Docker HUB 官方的相關(guān)鏡像比較慢,可以使用國內(nèi)(docker.io)的一些鏡像加速器,鏡像保持和官方一致,關(guān)鍵是速度快,推薦使用。

      3.2 容器相關(guān)命令

      容器也是docker中的核心概念,鏡像是創(chuàng)建容器的軟件 , 容器是由鏡像運行產(chǎn)生的運行實例。鏡像和容器的關(guān)系,就如同Java語言中類和對象的關(guān)系。

      如果需要通俗的描述容器的話,我覺得容器就是一個存放東西的地方,就像書包可以裝各種文具、衣柜可以放各種衣服、鞋架可以放各種鞋子一樣。我們現(xiàn)在所說的容器存放的東西可能更偏向于應(yīng)用。比如網(wǎng)站、程序甚至是系統(tǒng)環(huán)境。

      3.2.1 查看容器

      查看正在運行的容器: docker ps
      查看所有容器: docker ps –a
      查看最后一次運行的容器: docker ps –l
      查看停止的容器: docker ps -f status=exited

      3.2.2 創(chuàng)建與啟動容器

      ① 什么是宿主機?

      就是主機,這個概念是相對于子機而言的,比如你安裝有虛擬機的話,那么相對于虛擬機而言,你正在使用的計算機就是宿主機,虛擬機是安裝在主機上的,必須在主機上才能運行,主機就是一個“宿主”。

      ② 創(chuàng)建容器常用的參數(shù)說明:

      創(chuàng)建容器命令:docker run

      -i:表示運行容器 -t:表示容器啟動后會進入其命令行。加入這兩個參數(shù)后,容器創(chuàng)建就能登錄進去。即分配一個偽終端。 --name :為創(chuàng)建的容器命名。 -v:表示目錄映射關(guān)系(前者是宿主機目錄,后者是映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上。 -d:在run后面加上-d參數(shù),則會創(chuàng)建一個守護式容器在后臺運行(這樣創(chuàng)建容器后不會自動登錄容器,如果只加-i -t兩個參數(shù),創(chuàng)建后就會自動進去容器)。 -p:表示端口映射,前者是宿主機端口,后者是容器內(nèi)的映射端口。可以使用多個-p做多個端口映射

      (1)交互式方式創(chuàng)建容器

      以交互式方式創(chuàng)建并啟動容器,啟動完成后,直接進入當(dāng)前容器。使用exit命令退出容器。需要注意的是以此種方式啟動容器,如果退出容器,則容器會進入停止?fàn)顟B(tài)。可以理解成交互式容器 是前臺容器。

      docker run -it --name=容器名稱 鏡像名稱:標(biāo)簽 /bin/bash
      # 比如:docker run -it --name=mycentos centos:7 /bin/bash
      # docker run:表示創(chuàng)建容器
      # -it:表示運行容器并進入它的命令行
      # --name=mycentos:給當(dāng)前的容器命名
      # centos:7:使用該鏡像創(chuàng)建
      # /bin/bash:放在鏡像名后的是命令,這里我們希望有個交互式 Shell,因此用的是 /bin/bash
      

      創(chuàng)建好容器,并且已經(jīng)進入到容器內(nèi)部了,可以直接觀察前面中括號里面的內(nèi)容發(fā)現(xiàn),跟創(chuàng)建容器之前不一樣了,

      并且 通過 dir 命令,會發(fā)現(xiàn),其實容器內(nèi)部也是一個 centos , 我們可以把每個容器都看成一個小電腦或者服務(wù)器

      重新開一個新的會話,查看剛剛創(chuàng)建的容器是否已經(jīng)有了。

      查看正在運行的容器:docker ps

      退出當(dāng)前容器:exit

      退出之后,容器也退出了,沒有刪除

      (2) 創(chuàng)建后臺容器

      docker run -id --name=mycentos2 centos:7

      查看 docker 容器已經(jīng)運行

      (3) 守護式方式創(chuàng)建容器:

      創(chuàng)建一個守護式容器;如果對于一個需要長期運行的容器來說,我們可以創(chuàng)建一個守護式容器。

      命令如下(容器名稱不能重復(fù)):守護容器可以理解成在后臺運行的容器

      # 守護式容器和交互式容器的創(chuàng)建方式區(qū)別:
      # ① -it 換成 -di
      # ② 去掉后面的 /bin/bash
      docker run -di --name=容器名稱 鏡像名稱:標(biāo)簽
      # 比如:docker run -di --name=mycentos10 centos:7
      

      通過 docker ps 查看容器已經(jīng)是運行狀態(tài)

      進入守護式容器方式:

      docker exec -it 容器名稱 (或者容器ID)  /bin/bash
      # 比如  docker exec -it mycentos10 /bin/bash
      

      已經(jīng)進入到容器內(nèi)部了,如果現(xiàn)在退出exit,然后查看容器docker ps是否還在后臺運行(仍在運行)

      3.2.3 停止與啟動容器

      • 先通過 docker ps 查看正在運行的容器
      • 停止容器:
      docker stop 容器名稱(或者容器ID) 例如: docker stop mycentos2
      • 創(chuàng)建完容器之后,停止容器

      • 查看容器是否已經(jīng)停止
      • 啟動容器:
      docker start 容器名稱(或者容器ID) 例如: docker start mycentos2 (以交互式運行的容器,只是第一次exit退出的時候會關(guān)閉容器,當(dāng)用start啟動的時候,就相當(dāng)于后臺啟動了,exec進去之后再exit退出不會關(guān)閉容器)
      • 查看容器是否已經(jīng)啟動

      3.2.4 文件拷貝

      我們需要在容器內(nèi)安裝一個軟件,軟件首先需要有安裝包,我們就需要把安裝包拷貝到容器內(nèi)。我們通常的操作是先把文件上傳到宿主機,然后我們在將文件從宿主機拷貝到容器內(nèi)的某個目錄下面進行安裝。

      將linux宿主機中的文件拷貝到容器內(nèi)可以使用命令:

      如果我們需要將文件拷貝到容器內(nèi)可以使用cp命令

      docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄 例如: docker cp anaconda-ks.cfg mycentos2:/usr/local/

      拷貝一個文件到 mycentos2 的 /urs/local/ 文件下面 ,拷貝完成之后,刪除文件,然后在mycentos2拷貝過來

      登錄容器查看拷貝之后的結(jié)果

      docker exec -it mycentos2 /bin/bash docker exec:表示登陸正在運行的容器 -it:進入命令行 mycentos2:進入到該容器

      也可以將文件從容器內(nèi)拷貝出來

      docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄 例如:docker cp mycentos2:/usr/local/anaconda-ks.cfg ./

      我們先通過 exit 退出容器,然后在把文件從容器拷貝到當(dāng)前目錄

      3.2.5 目錄掛載

      我們可以在創(chuàng)建容器的時候,將宿主機的目錄與容器內(nèi)的目錄進行映射,這樣我們就可以通過修改宿主機某個目錄的文件從而去影響容器。

      創(chuàng)建容器 添加-v參數(shù) 后邊為 宿主機目錄:容器目錄,例如:

      # 創(chuàng)建并啟動容器mycentos3,并掛載linux中的/usr/local/myhtml目錄到容器的/usr/local/myhtml;也就是在linux中的/usr/local/myhtml中操作相當(dāng)于對容器相應(yīng)目錄操作 docker run -di --name=容器的名字 -v /usr/local/myhtml:/usr/local/myhtml centos:7 比如:docker run -di --name=mycentos3 -v /usr/local/myhtml:/usr/local/myhtml centos:7

      通過 docker ps 查看正在運行的容器,在創(chuàng)建容器并且進行目錄掛載,然后在通過 docker ps 查看剛剛創(chuàng)建的容器是否已經(jīng)創(chuàng)建

      進入到 myhtml 目錄 ,通過dir查看是否有文件,通過vi test2 ,創(chuàng)建一個文件,進入test2文件,隨便輸入一些數(shù)據(jù)

      進入目錄隨便輸入一些東西 , 退出保存

      登錄容器,查看剛剛輸入的內(nèi)容

      # 進入容器 docker exec -it mycentos11 /bin/bash # 進入容器中查看目錄 cd /usr/local/myhtml # 查看myhtml目錄中,是否有對應(yīng)文件test2.txt ls cat test2 # 退出容器 exit

      如果你共享的是多級的目錄,可能會出現(xiàn)權(quán)限不足的提示。

      這是因為CentOS7中的安全模塊selinux把權(quán)限禁掉了,我們需要添加參數(shù)

      --privileged=true 來解決掛載的目錄沒有權(quán)限的問題

      docker run -id --privileged=true --name=mycentos5 -v /usr/local/myhtml:/usr/local/myhtml centos:7

      3.2.6 查看容器IP地址

      我們可以通過以下命令查看容器運行的各種數(shù)據(jù)

      docker inspect 容器名稱(容器ID) # 在linux宿主機下查看 mycentos3 的ip

      IP 地址

      通過inspect 可以查看的信息太多,如果想單純有針對性的查看某個信息,也可以直接執(zhí)行下面的命令直接輸出IP地址

      docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱(容器ID) # 例如:docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos11

      3.2.7 刪除容器

      1. 刪除指定的容器:
      docker rm 容器名稱(容器ID) 例如:docker rm mycentos11
      1. 刪除容器的時候,如果容器在運行,會報錯,必須先停止容器
      # 查看正在運行的容器 docker ps # 刪除正在運行的容器 docker rm mycentos11 # 停止容器 docker stop mycentos11

      # 查看所有的容器,看看是否有mycentos11 docker ps -a # 刪除centos11容器 docker rm mycentos11 # 刪除完成之后,在查看mycentos11容器是否還存在 docker ps -a

      也可以使用-f參數(shù)進行強制刪除:docker rm -f 容器名稱或id

      第四章 應(yīng)用部署

      4.1 MySQL部署

      (1)拉取mysql鏡像

      docker pull centos/mysql-57-centos7

      (2)創(chuàng)建容器

      # 創(chuàng)建mysql5.7容器 # docker run -di --name=容器名字 -p 宿主機端口:容器端口 -e MYSQL_ROOT_PASSWORD=mysql密碼 容器名稱 docker run -di --name=mysql5.7 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7

      -p 代表端口映射,格式為 宿主機映射端口:容器運行端口

      -e 代表添加環(huán)境變量 MYSQL_ROOT_PASSWORD 是root用戶遠程登陸密碼

      創(chuàng)建守護式容器 ,并且通過 docker ps 查看是否映射成功,

      (3)遠程登錄mysql

      連接宿主機的IP ,指定端口為33306

      使用 windows上面的小海豚進行連接

      navicat 測試連接

      創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫里面的表

      CREATE DATABASE vue; USE vue; CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT, age INT, username VARCHAR(20), password VARCHAR(50), email VARCHAR(50), sex VARCHAR(20) )

      4.2 Tomcat部署

      (1)拉取鏡像

      docker pull tomcat:7-jre7

      (2)創(chuàng)建容器

      創(chuàng)建容器 -p表示地址映射 -v 表示目錄掛載

      # 創(chuàng)建tomcat容器;并掛載了webapps目錄 docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7

      創(chuàng)建完成容器之后,在通過 docker ps 查看容器是否正在運行

      本地的war包 ,上傳到docker容器里面

      ls 查看 dubbo的war 是否已經(jīng)上傳到docker容器,上傳成功之后,在通過mv 命令 把dubbo移動到 /usr/local/webapps 目錄下面,然后請求 http://192.168.211.144:9000/dubbo-admin-2.6.0/

      請求地址:http://192.168.211.144:9000/dubbo-admin-2.6.0/ 說明咱的tomcat已經(jīng)部署成功

      4.3 Nginx部署

      (1)拉取鏡像

      docker pull nginx

      (2)創(chuàng)建Nginx容器

      docker run -di --name=mynginx -p 80:80 nginx

      安裝完成之后,請求nginx頁面

      4.4 Redis部署

      (1)拉取鏡像

      docker pull redis

      (2)創(chuàng)建容器

      docker run -di --name=myredis -p 6379:6379 redis

      創(chuàng)建 redis 容器

      (3)通過客戶端工具連接測試。或者通過java代碼用Jedis客戶端進行測試。

      第五章 遷移與備份

      其中涉及到的命令有:

      • docker commit 將容器保存為鏡像
      • docker save 將鏡像備份為tar文件
      • docker load 根據(jù)tar文件恢復(fù)為鏡像

      5.1 容器保存為鏡像

      我們可以通過以下命令將容器保存為鏡像

      # 保存nginx容器為鏡像 docker commit 容器名稱 鏡像名稱 例如:docker commit mynginx mynginx_i

      使用 docker ps -a 查看所有的容器

      看到有一個mynginx 容器 , 將容器保存為一個鏡像:

      查看鏡像是否保存成功

      使用剛剛保存的鏡像 ,重新創(chuàng)建一個容器

      創(chuàng)建完成之后 , 直接 通過 docker ps查看正在運行的容器,可以找到剛剛創(chuàng)建的容器mynginx2

      5.2 鏡像備份

      我們可以通過以下命令將鏡像保存為tar 文件

      # 命令形式:docker save –o tar文件名 鏡像名 # 保存鏡像為文件 -o:表示output 輸出的意思,后跟輸出路徑+輸出保存的文件名 docker save -o mynginx.tar mynginx_i

      通過 save 保存成文件之后,在通過 ls 命令進行查看當(dāng)前目錄是否有 tar文件

      5.3 鏡像恢復(fù)與遷移

      首先我們先刪除掉mynginx_img鏡像 然后執(zhí)行此命令進行恢復(fù)

      # 命令形式:docker load -i tar文件名 docker load -i mynginx.tar

      -i 表示input輸入的文件

      執(zhí)行后再次查看鏡像,可以看到鏡像已經(jīng)恢復(fù)

      我們需要直接恢復(fù)剛剛的 tar 文件 ,就需要先刪除 mynginx_i 鏡像,才能恢復(fù), 直接刪除 mynginx_i 鏡像 ,發(fā)現(xiàn)會報錯,因為當(dāng)前鏡像的容器正在運行,需要先停止容器,刪除容器 , 在刪除鏡像

      刪除完成之后 , 在查看鏡像是否還存在 ,發(fā)現(xiàn)mynginx_i 鏡像已經(jīng)被刪除

      恢復(fù)鏡像

      第六章 Dockerfile

      6.1 什么是Dockerfile

      前面的課程中已經(jīng)知道了,要獲得鏡像,可以從Docker倉庫中進行下載。那如果我們想自己開發(fā)一個鏡像,那該如何做呢?答案是:Dockerfile

      Dockerfile其實就是一個文本文件,由一系列命令和參數(shù)構(gòu)成,Docker可以讀取Dockerfile文件并根據(jù)Dockerfile文件的描述來構(gòu)建鏡像。

      1、對于開發(fā)人員:可以為開發(fā)團隊提供一個完全一致的開發(fā)環(huán)境;

      2、對于測試人員:可以直接拿開發(fā)時所構(gòu)建的鏡像或者通過Dockerfile文件構(gòu)建一個新的鏡像開始工作了;

      3、對于運維人員:在部署時,可以實現(xiàn)應(yīng)用的無縫移植。

      6.2 常用命令

      命令 作用
      FROM image_name:tag 定義了使用哪個基礎(chǔ)鏡像啟動構(gòu)建流程
      MAINTAINER user_name 聲明鏡像的創(chuàng)建者
      ENV key value 設(shè)置環(huán)境變量 (可以寫多條)
      RUN command 是Dockerfile的核心部分(可以寫多條)
      ADD source_dir/file dest_dir/file 將宿主機的文件復(fù)制到容器內(nèi),如果是一個壓縮文件,將會在復(fù)制后自動解壓
      COPY source_dir/file dest_dir/file 和ADD相似,但是如果有壓縮文件并不能解壓
      WORKDIR path_dir 設(shè)置工作目錄(就是登錄容器后所在的目錄)

      6.3 使用腳本創(chuàng)建鏡像

      步驟:

      (1)創(chuàng)建目錄

      mkdir –p /usr/local/dockerjdk8

      (2)下載jdk-8u144-linux-x64.tar.gz并上傳到服務(wù)器(虛擬機)中的/usr/local/dockerjdk8目錄

      (3)移動目錄剛剛上傳的 jdk 到 /usr/local/dockerjdk8 目錄下面

      mv jdk-8u144-linux-x64.tar.gz /usr/local/dockerjdk8

      (4)創(chuàng)建文件Dockerfile 并vi Dockerfile

      # Dockerfile 名字不要改 vi Dockerfile

      設(shè)置環(huán)境變量 ,設(shè)置完成之后 先按下esc , 然后在 :wq 保存退出

      #依賴鏡像名稱和ID
      FROM centos:7
      #指定鏡像創(chuàng)建者信息
      MAINTAINER zhangsan
      #切換工作目錄
      WORKDIR /usr
      #RUN yum install -y glibc.i686 ,下邊的路徑是在centos容器里創(chuàng)建的路徑
      RUN mkdir /usr/local/java 
      #ADD 是相對路徑j(luò)ar,把java添加到容器中
      ADD jdk-8u144-linux-i586.tar.gz /usr/local/java/
      #配置java環(huán)境變量
      ENV JAVA_HOME /usr/local/java/jdk1.8.0_144
      ENV JRE_HOME $JAVA_HOME/jre
      ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
      ENV PATH $JAVA_HOME/bin:$PATH
      

      (5)執(zhí)行命令構(gòu)建鏡像

      docker build -t='jdk1.8' .

      注意后邊的空格和點,不要省略

      (6)查看鏡像是否建立完成

      docker images

      (7)運行容器測試

      報錯:

      解決:缺少依賴插件,安裝即可。

      yum install glibc.i686

      第七章 Docker私有倉庫

      Docker官方的Docker hub(https://hub.docker.com)是一個用于管理公共鏡像的倉庫,我們可以從上面拉取鏡像到本地,也可以把我們自己的鏡像推送上去。但是,有時候我們的服務(wù)器無法訪問互聯(lián)網(wǎng),或者你不希望將自己的鏡像放到公網(wǎng)當(dāng)中,那么我們就需要搭建自己的私有倉庫來存儲和管理自己的鏡像。

      7.1 私有倉庫搭建與配置

      (1)拉取私有倉庫鏡像(此步省略,私有倉庫也是一個容器,也需要鏡像)

      docker pull registry

      (2)啟動私有倉庫容器

      docker run -di --name=registry -p 5000:5000 registry

      創(chuàng)建私有倉庫容器

      通過 docker ps 查看容器是否創(chuàng)建成功

      (3)打開瀏覽器 輸入地址 http://192.168.211.144:5000/v2/_catalog 看到{"repositories":[]} 表示私有倉庫搭建成功并且內(nèi)容為空

      (4)修改daemon.json

      vi /etc/docker/daemon.json

      添加以下內(nèi)容,保存退出。目的是讓容器信任下面的地址

      "insecure-registries":["192.168.211.144:5000"]

      此步用于讓 docker信任私有倉庫地址 ,然后退出保存

      (5)重啟docker 服務(wù)

      systemctl restart docker

      7.2 鏡像上傳至私有倉庫

      (1)標(biāo)記此鏡像為私有倉庫的鏡像

      # 標(biāo)記鏡像為私有倉庫的鏡像 # docker tag jdk1.8 宿主機IP:5000/jdk1.8 docker tag jdk1.8 192.168.184.141:5000/jdk1.8

      (2)再次啟動私服容器

      # 再次啟動私有倉庫容器 docker start registry

      (3)上傳標(biāo)記的鏡像

      # 上傳標(biāo)記的鏡像 # docker push 宿主機IP:5000/jdk1.8 docker push 192.168.211.144:5000/jdk1.8

      重新刷新,發(fā)現(xiàn)jdk 1.8 已經(jīng)上傳到私服

      7.3 從私有倉庫拉取鏡像

      # 執(zhí)行拉取鏡像命令并查看 docker pull 192.168.211.144:5000/jdk1.8 docker images
      posted @ 2025-02-24 21:28  Musha-yuan  閱讀(127)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 人妻少妇偷人作爱av| 亚洲av成人精品日韩一区| 四虎永久在线精品免费看| 国产精品第一区亚洲精品| 精品国产一区二区三区av性色| 在线精品自拍亚洲第一区| 亚洲AV蜜桃永久无码精品| 亚洲 另类 小说 国产精品无码| 性欧美乱熟妇xxxx白浆| 亚洲精品www久久久久久| 国产精品久久久国产盗摄| 精品嫩模福利一区二区蜜臀| 久久香蕉国产线看观看怡红院妓院| 亚洲国产天堂久久综合226114| 又大又粗又硬又爽黄毛少妇| 国产福利高颜值在线观看| 在线播放国产精品三级网| 男女性高爱潮免费网站| 蜜桃臀av一区二区三区| 国产中文字幕精品视频| 国产中文字幕日韩精品| 国产精品无码久久久久AV| 88国产精品视频一区二区三区| 爆乳日韩尤物无码一区| 国产在线线精品宅男网址| 日本一卡2卡3卡四卡精品网站| 中文字幕一区二区久久综合| 狠狠cao日日穞夜夜穞av| 亚洲国产精品日韩av专区| 亚州av第二区国产精品| 国产丰满麻豆videossexhd| 国产一区精品在线免费看| 成人免费无遮挡在线播放| 人妻激情偷乱一区二区三区| 日韩精品视频一二三四区| 日日橹狠狠爱欧美视频| 少妇高潮水多太爽了动态图| 亚洲精品日韩中文字幕| 午夜在线不卡| 公天天吃我奶躁我的在线观看| 热久久美女精品天天吊色 |