Docker基本使用


歷史

  • 2010 年幾個人基於PAAS平台創建的dotCloud。隨着雲的應用,大公司比如谷歌、微軟都涉足。所以dotCloud生死攸關。既無盈利又可惜自己的汗水付諸東流,所以他們選擇了開源。開源后就開始了逆襲之路。
  • 2014年6月,第一個版本Docker1.0誕生。
  • 目前社區版1.29。

概念

  • 最開始docker官網(https://www.docker.com/), 最醒目的三個單詞即是:build、ship、run
  • docker含義: docker衍生於虛擬機,所以,不管是虛擬機還是容器,其實都是對計算機資源隔離的不同實現罷了。包括對文件系統隔離、對網絡隔離。docker基於Ubuntu開發,本身技術不是什么新東西,但它制定的隔離使用標准,成功將服務與系統,服務與硬件進行隔離。
  • docker架構:docker client + docker daemon  + docker repository, 客戶端做構建鏡像,拉取鏡像的指令發出, 宿主機的進程運行容器,倉庫和maven倉庫的概念類似,主要存放已經構建OK的鏡像。
  • 鏡像:鏡像這個詞也不是新鮮東西,我們最早接觸這個詞應該是安裝操作系統的時候,系統盤里的.iso文件就是一個系統鏡像。鏡像其實就是打包好的一個可以運行的程序,和我們windows里面的zip文件類似。要用哪個鏡像,直接就從docker的官方倉庫(https://hub.docker.com/)去拉取即可。
  • 倉庫:存放鏡像。國內也有很多倉庫,阿里的、網易的。
  • 容器:運行的鏡像即是一個容器。這里聯想上面的三個詞:build即是構建鏡像。ship即是運輸鏡像。run即是運行鏡像成容器。
  • 宿主機:即運行docker的主機。
  • 隔離:類似虛擬機,docker里面有自己的文件系統,也有隔離的網絡,所以宿主機的網絡端口0~65535 和docker里面的0~65535是可以獨立存在的。

原理

  docker本質是運行的進程,和宿主機共享linux內核。那如何做到真正的隔離呢?其實是通過linux的namespace技術,對網絡、磁盤、內存的做到細粒度隔離。實際上docker是一個運行在宿主機的進程,和宿主機本身的進程處於平級關系,也都是相互競爭cpu、內存等資源。譬如宿主機PID為333的進程為docker實例,而docker通過namespace技術把docker實例和宿主機分隔開。 但docker又是通過什么做到每個docker實例之間的資源競爭不受影響呢?這就是google公司開源出來的cgroup技術。cgroup作用一句話即是:限制進程對系統資源的使用,不管是空間還是時間上的。

基本使用

  配置源

  用阿里雲的吧,快。在/etc/yum.repos.d/目錄下,創建docker.repo的文件:

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

  更新一下源: 

yum -y update

安裝

  docker的linux安裝非常簡單,一條命令即可。但內核要求3.10以上。

  查看可用包列表:

yum list docker-ce --showduplicates | sort -r

  安裝:

sudo yum install docker-ce-18.03.1.ce-1.el7.centos

 

  • 加入開機啟動

    systemctl start docker

    systemctl enable docker

  • 查看鏡像

    docker images [options] [REPOSITORY[:TAG]]

  • 拉取鏡像

    docker pull [options] NAME[:TAG]

  • 運行鏡像

    docker run [options] IMAGE[:TAG] [COMMAND] [ARG..]

  命令這玩意兒死記硬背沒用,多用就知道了。一定記住多用--help, 例  docker run --help。

網絡模式

  • 橋接,默認

  • host模式,和宿主機公用。
  • none模式。
  • container模式。
  • 自定義模式。

springboot部署到docker

  1. 在本地的虛擬機創建一個構建的目錄,並把jar包傳上來。

    

  2. Dockerfile文件編輯

    

   Dockerfile的元素解釋,盜圖一張,請閱;

    

  3.  構建build

    命令: docker build -t liaoday-gis . 

    用docker images 查看:

    

 

 

  4. 運行

    命令: docker run -d -p 8888:8888 d0ebf323acfb

    用docker run --help ,這里描述:

    -d, --detach                         Run container in background and print container ID,即-d后台運行。

    -p, --publish list                   Publish a container's port(s) to the host ,即后面容器的端口,映射前面宿主機的端口。

    -P, --publish-all                    Publish all exposed ports to random ports, 即大P暴露容器的隨機端口給宿主機。

    用docker ps 查看運行的容器:

    

 

   5. 成功訪問

  

命令 

##守護進程重啟
sudo systemctl daemon-reload
##重啟docker服務
sudo systemctl restart docker
## 關閉docker
sudo systemctl stop docker
## 重啟docker服務
sudo service docker restart
## 關閉docker
sudo service docker stop

 參考

  https://www.cnblogs.com/kaye/p/10508800.html

目錄

  https://www.cnblogs.com/lioa/p/12664686.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM