學(xué)習(xí)筆記 | Docker 學(xué)習(xí)

前言

此篇文章是自己在學(xué)習(xí)Docker的過程中紀(jì)錄的筆記,包括安裝、基本概念理解、基本命令、簡單實(shí)例,適合初學(xué)者對(duì)Docker有個(gè)基本的認(rèn)知,幫助初學(xué)者上手

一、安裝

  1. Mac OSX

    下載

    配置阿里云加速(需要到阿里云申請(qǐng))

    設(shè)置位置:preferences-daemon

  1. Linux--Centos 7
卸載舊版本(如果沒有安裝過則不需要執(zhí)行此步驟)

    sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
    
    
    yum install -y yum-utils device-mapper-persistent-data lvm2

    # 使用阿里云的源
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    vim /etc/yum.repos.d/docker-ce.repo 
    # 運(yùn)行命令  方法(在vim界面執(zhí)行以下替換命令)
    %s#https://download-stage.docker.com#http://mirrors.aliyun.com/docker-ce#g
    
    # 安裝docker
    yum install docker-ce

問題解決

    # 使用官方源,下載會(huì)很慢甚至報(bào)錯(cuò)
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

報(bào)錯(cuò)信息

image.png
  1. Linux-Centos 7 RPM方式安裝

    # 下載      
    wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm
         
    yum install docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm
    

二、基礎(chǔ)知識(shí)

  1. 容器技術(shù)

    容器是一種輕量級(jí)、可移植、自包含的軟件打包技術(shù)

  2. 基本概念

    • 鏡像(Image)
      Docker 鏡像是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序、庫、資源、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動(dòng)態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會(huì)被改變??梢钥闯芍蛔x模板
    • 容器(Container)
      容器是鏡像運(yùn)行時(shí)的實(shí)體,容器的實(shí)質(zhì)是進(jìn)程,通過Docker Image啟動(dòng)
    • 倉庫(Repository)
      鏡像倉庫,用來管理docker鏡像,提供Docker鏡像的上傳、下載和瀏覽功能
    • 守護(hù)進(jìn)程(Docker Daemon)
      接收Docker Client發(fā)來的指令,并對(duì)服務(wù)器進(jìn)行具體的操作(創(chuàng)建、運(yùn)行、監(jiān)控容器。構(gòu)建、存儲(chǔ)鏡像)
  1. docker架構(gòu)

    圖片來源網(wǎng)絡(luò)
  1. 鏡像的分層結(jié)構(gòu)


    圖片來源網(wǎng)絡(luò)
  • Docker鏡像采用分層結(jié)構(gòu)
  • 容器層與鏡像層,只有容器層是可寫的,容器層下面的所有鏡像層都是只讀的

三、基本操作

  1. Docker鏡像搜索

     docker search tutorial
    
  2. 鏡像下載

     docker pull learn/tutorial  
    
  3. 鏡像列表

     docker images
    
  4. 刪除鏡像

     #刪除指定鏡像
     docker rmi image-id    
     #刪除所有鏡像
     docker rmi ${docker images -q}
    
  5. 容器運(yùn)行

     docker run -d --name=test-redis -p 8080:80 redis:latest
    

    基于最新版的redis鏡像創(chuàng)建一個(gè)名為test-redis的容器,并把容器內(nèi)部的80端口與主機(jī)上的8080端口做映射

    實(shí)例

     #創(chuàng)建一個(gè)WebServer
     docker run -d --name=WebServer -p 80:80 nginx
     #直接訪問機(jī)器的http://localhost可看到NGINX的歡迎界面
     #進(jìn)入WebServer的shell
     docker exec -it WebServer bash
     #修改歡迎界面,index.html可以改成自己任意想顯示的東西
     echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
     #退出
     exit
     #查看修改情況
     docker diff WebServer
    
  6. 查看容器

     #查看運(yùn)行狀態(tài)的容器
     docker ps    
     #查看所有的容器
     docker ps -a 
     #查看容器詳細(xì)信息
     docker inspect 
    
  7. 容器操作

    • 啟動(dòng)docker container start WebServer,一般也就直接新建了,docker run
    • 終止docker container stop WebServer
    • 重啟docker container restart WebServer
  8. 刪除容器

     docker rm container_name
    
  9. 保存新的鏡像

     docker commit container_name new_name
    
  10. 顯示鏡像的構(gòu)建歷史

    docker history centos-with-vim
    

四、 Dockerfile方式創(chuàng)建新的鏡像

Dockerfile

FROM centos
RUN yum update && yum install -y vim 

創(chuàng)建

docker build -t centos-with-vim .

含義:創(chuàng)建一個(gè)鏡像,名為centos-with-vim,.指明build context為當(dāng)前目錄。Docker默認(rèn)從build context中查找dockerfile,也可以使用-f指定

build context 為鏡像構(gòu)建提供所需要的文件或目錄。COPY、ADD等命令是從build context目錄下找

常用指令

  • FROM 指定base鏡像
  • RUN 在容器中運(yùn)行指定的命令,樣例:RUN yum install -y vim
  • MAINTAINER 設(shè)置鏡像作者
  • ENV 設(shè)置環(huán)境變量,可以在下文中使用
  • COPY 將文件從build context復(fù)制到鏡像,樣例COPY ["source", "des"]
  • ADD 與COPY類似,不過自帶解壓功能,先解壓再copy
  • EXPOSE 指定容器中的進(jìn)程會(huì)監(jiān)聽某個(gè)端口,Docker可以將該端口暴露出來
  • CMD 容器啟動(dòng)時(shí)運(yùn)行指定的命令,可有多個(gè)指令,但是只有最后一個(gè)生效

五、base鏡像--Centos使用學(xué)習(xí)

base鏡像一般是指不依賴其他鏡像,其他鏡像可以以之為基礎(chǔ)進(jìn)行擴(kuò)展的鏡像,比如Centos等操作系統(tǒng)的鏡像

    # 拉取
    docker pull centos
    # 運(yùn)行并進(jìn)入容器
    docker run -it centos
    # 查看內(nèi)核
    uname -r
    # 安裝vim
    yum install -y vim
    # 退出容器,保存為新的鏡像
    exit
    docker commit centos centos-with-vim
查看容器
查看保存的鏡像

參考網(wǎng)站

知乎專欄--每天5分鐘玩轉(zhuǎn)Docker容器技術(shù)(三)作者:cloudman6
知乎專欄--每天5分鐘玩轉(zhuǎn)Docker容器技術(shù)(四)作者:cloudman6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,728評(píng)論 0 120
  • 什么是容器 容器是一種輕量級(jí),可移植、自包含的軟件的打包技術(shù),使應(yīng)用程序可以在幾乎任何地方以相同的方式運(yùn)行。容器由...
    Vincilii閱讀 500評(píng)論 6 0
  • 簡介 容器與管理程序虛擬化有所不同,管理程序虛擬化通過中間層將一臺(tái)或多臺(tái)獨(dú)立的機(jī)器虛擬運(yùn)行于物理硬件之上,而容器則...
    Gundy_閱讀 425評(píng)論 0 4
  • 1說什么直男癌,其實(shí)就是自私 歡樂頌2大播,也讓處女情結(jié),直男癌等名詞重新進(jìn)入大眾的視野。 不少網(wǎng)友媒體對(duì)應(yīng)勤的所...
    關(guān)你閱讀 1,949評(píng)論 3 4
  • 總要有些隨風(fēng),有些入夢,有些長留心中。
    Alice王志榮閱讀 134評(píng)論 0 2

友情鏈接更多精彩內(nèi)容