Docker-超強核心整理

Docker入門

1.爲什麼需要Docker

開發過程中後端與運維交付項目,運維部署運行不成功,兩者無法判定是哪方問題

環境問題

docker解決-搬家問題直接入住

image-20200426142946109

一次封裝,到處運行

docker是什麼?

解決了運行環境和配置的問題,方便持續集成有助於整體發佈的容器虛擬化技術

2. Docker能幹嘛

有點像我們的虛擬機一樣,虛擬機也是帶軟硬件直接安裝在我們電腦上自帶環境運行,但是它啓動太慢了,而且耗資源,步驟也多,docker是秒級的

但是它也不是完整的一個操作系統,而是運行所需要什麼東西就加載什麼東西。輕量級的

每個容器互相隔離,且不自帶內核

開發自運維

docker的好處

image-20200426192647344

下載地址: https://www.docker-cn.com, https://www.docker.com

Docker流程圖

image-20200426195122607

3 Docker三劍客

3.1 鏡像

鏡像就是一個只讀模板,她可以創建Docker容器,一個鏡像可以創建很多容器

比如:仍然是同一個模板,卻有不同的對象

Person p1=new Person();
Person p2=new Person();
Person p3=new Person();
Docker 面向對象
容器 對象
鏡像

3.2 容器

容器是可以獨立安全運行應用的環境,是鏡像用來運行的實例,容器可讀可寫

3.3 倉庫

是集中存放鏡像文件的場所

image-20200426213847414

3.4 小結

image-20200426214316344

4.Docker的使用

docker環境安裝 yum install -y epel-release

docker安裝 yum install -y docker-io

image-20200426215550353

安裝完在 /etc/docker下

啓動docker: service docker start

當出現下面這個

Redirecting to /bin/systemctl start docker.service

說明需要用到systemctl命令來啓動

啓動docker:systemctl start docker
停止docker:systemctl stop docker
重啓docker:systemctl restart docker
查看docker狀態:systemctl status docker
開機啓動:systemctl enable docker 
查看docker概要信息:docker info
查看docker幫助文檔:docker --help
查看docker安裝的版本: docker --version
查看docker環境: docker version

    systemctl status docker查看了一下,在運行中

    image-20200426220946261

    目前爲止已經成功安裝好了

    image-20200427094446967

    5. 阿里雲鏡像加速

    https://dev.aliyun.com/search.html

    image-20200427075608347

    獲取加速器地址,第一次點擊這邊的需要設置一個密碼就可以看到了

    我這裏是centos7版本的

    直接複製下面的話執行就可以了

    image-20200427094558987

    然後再回車重啓,查看docker info發現

    image-20200427094841999

    配置成功

    5.1 網易雲加速器

    步驟和上面一樣,只是需要去網易雲找加速器地址,把那個阿里雲的換成網易雲的就可以了

    5.2 docker run 運行

    image-20200427095515141

    docker如何運行

    image-20200427095917287

    爲什麼它比虛擬機快

    • docker更少的抽象層,短小精幹,
    • docker用的是本機的內核和操作系統,虛擬機都自帶

    6. 常用Docker命令

    6.1幫助命令

docker info   //對應的描述
docker version  //docker 版本
docker --help  //幫助命令
  • 1
  • 2

6.2 鏡像命令

docker images//查看本機鏡像

    image-20200427105851873

    docker images (-a 列出所有的鏡像,包括最外層,-q 列出鏡像的id,-qa就是所有鏡像的id --digests 會顯示DIGESTS說明 --no-trunc 完整說明,比如完整id)

    docker serach  鏡像名  加上-s 查看點贊數    //docker serach -s 30 tomcat 大於30點讚的

      image-20200427112404514

      docker search -s 30 --no-trunc tomcat  //--no-trunc完整的摘要信息

        image-20200427112618559

        docker pull tomcat //等於下載最新tomcat
        docker pull tomcat:3.2 //指定版本
        //下載成功
        //Digest: sha256:cae591b6f798359b0ba2bdd9cc248e695ac6e14d20722c5ff82a9a138719896f
        //Status: Downloaded newer image for tomcat:latest
          docker rmi 名字或者id
          
          • 1

          image-20200427113900013

          出現上面的原因是因爲容器在運行,需要強制刪除

          docker rmi -f 名字或者id
          

          刪除成功

          image-20200427114007507

          docker rmi -f 名字1 名字2  //多個一起刪除
            docker rmi -f $(docker images -qa) //刪除查詢出來的全部id===全部刪除

              7.容器命令

              docker pull centos 驚奇發現它才200多M,這無疑證明了docker去掉了繁重的配置,比虛擬機更爲輕量級

              新建並啓動交互式容器,起別名mycentos  docker run -it --name mycentos id名或者名字    
              

              輸入完,終端就進入mycentos了等於虛擬機進入終端時的根目錄下

              查看正在運行的容器

              docker ps
              

              image-20200427120301442

              docker ps -l 查看上一次運行的  -a查看現在運行和以前運行過的 -n顯示最近n個創建的容器  -q只顯示容器編號  --no-trunc 不截斷輸出,顯示全部信息 
              
              • 1

              進入那個centos終端後,但是退出不想直接exit,可以按住ctrl+p+q然後退出,會發現centos仍然在運行

              image-20200427121648547

              啓動容器 docker start id或者名字

              重啓容器 docker restart id或者名字

              停止容器,慢慢自己關閉 docker stop id或者名字

              強制停止,強行關閉 docker kill id或者名字

              刪除已停止的緩存信息 docker rm id或者名字

              找出全部容器全部刪除 docker rm -f $(docker ps -a -q) 或者 docker s -a -q| xargs docker rm

              重要的命令

              docker run -d 容器名 啓動守護式容器,docker ps看不到

              image-20200427123722643

              docker logs -f -t --tail 容器id 查看容器日誌 -t是加入時間顯示 -f跟隨最新的日誌打印 --tail 數字 顯示最後n條

              **docker run -d centos /bin/sh -c “while true;do echo hello zzyy;sleep 2;done”**以後臺運行

              查看日誌

              image-20200427125918561

              docker inspect id 查看容器內部細節

              docker top id 查看容器內部進程

              docker attach id名字 重新進入終端命令行

              image-20200427132307222

              docker exec -t id名字 命令語句 可以不進入終端然後返回終端執行結果

              如果命令語句是一個路勁,那麼就是跟docker attach id名字一樣進去終端

              docker cp id名 /tmp/yum.log /root 拷貝文件,這個和linux無區別

              8.鏡像原理

              image-20200427140045495

              image-20200427140213819

              爲什麼docker要分層結構

              因爲緩存,方便刪除完,下次下載更快,如果分層的話,比如其它層是相同的base文件產生的,下次速度會更快產生

              image-20200427141902902

              9. Docker Commit

              修改完鏡像副本,然後提交成一個新鏡像,比如加個作者啥的 原鏡像依然存在

              docker commit

              docker run -it -p 8888:8080 tomcat 運行以8888訪問tomcat

              image-20200427162803012

              docker run -it -P tomcat 大寫的p會隨機分配端口

              image-20200427163932391

              加了-d就可以後臺運行

              10.Docker容器數據卷

              有點像redis的rdb和aof,主要用來持久化數據,實現容器數據共享

              docker cp id名 容器內路徑  目的路徑
              
              • 1

              命令給容器類添加數據卷

              docker cp /路徑:/目的地址  鏡像名
              
              • 1

              兩個路徑之間數據共享,新建一個文件都看得到,可以用docker inspect 容器名查看json是否掛載成功

              image-20200427172826920

              docker cp /路徑:/目的地址:ro 鏡像名 只讀,是不可以修改的

              jhhhhhhhhhhhhhhhhhh

              DockerFile添加數據卷

              先編寫dockerfile 然後build, docker build -f 路勁 -t 路勁

              容器之間共享 --volumes-from

              docker run -it --name dc04 --volumes-from dc03 容器名字 相 當於繼承dc03,那麼所有數據dc04都可看,即使dc03刪除,全量備份

              容器卷之間有數據共享,,而主機與容器則需要自己寫數據卷

              11. DockerFile

              1. 編寫dockerfile(這一個的解讀我就沒寫在這了,不難,dockerHub上看幾段代碼就會了,不要求手寫)
              2. build
              3. run

              DockerFile是構建鏡像的構建文件,是由一系列命令和參數構成的腳本

              執行流程

              image-20200427191334938

              11.1 關鍵字解讀

              • from 說明鏡像基於哪個鏡像
              • maintainer 鏡像維護者的姓名和郵箱
              • run 容器構建時要執行的命令
              • expose 對外暴露的端口號
              • workdir 創建容器後,默認登錄的工作目錄
              • env 構建環境過程中設置環境變量
              • add 拷貝加解壓縮,自動處理url
              • volume 容器數據卷
              • copy 拷貝
              • cmd 容器啓動時執行的命令,只生效最後一個cmd
              • entrypoint 和cmd一樣,但不會覆蓋命令會追加執行
              • onbuild 當子鏡像繼承父鏡像時,父鏡像的onbuild會執行

              11.2 存放倉庫

              image-20200427224144766

              登錄完

              docker tag[imageid] registry.cn-hangzhou.aliyuncs.com/鏡像名字:[版本號]

              然後push

              docker push registry.cn-hangzhou.aliyuncs.com/鏡像名字:[版本號]

              再執行==docker serach 鏡像名字:[版本號]==就會從倉庫發現你推送的鏡像

              d 拷貝加解壓縮,自動處理url

              • volume 容器數據卷
              • copy 拷貝
              • cmd 容器啓動時執行的命令,只生效最後一個cmd
              • entrypoint 和cmd一樣,但不會覆蓋命令會追加執行
              • onbuild 當子鏡像繼承父鏡像時,父鏡像的onbuild會執行

              11.2 存放倉庫

              登錄完

              docker tag[imageid] registry.cn-hangzhou.aliyuncs.com/鏡像名字:[版本號]

              然後push

              docker push registry.cn-hangzhou.aliyuncs.com/鏡像名字:[版本號]

              再執行==docker serach 鏡像名字:[版本號]==就會從倉庫發現你推送的鏡像

              而且你還可以docker pull 鏡像名字:[版本號] 給下載下來

              發表評論
              所有評論
              還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
              相關文章