Docker在虛擬機中的安裝


一、Docker簡介

Docker 是一個開源的應用容器引擎,基於Go 語言並遵從 Apache2.0 協議開源。

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。

容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app)更重要的是容器性能開銷極低。

Docker支持將軟件編譯成鏡像;在鏡像中支持各種軟件配置好並發布,其他使用者可以直接使用配置好的鏡像。運行中的鏡像稱之為容器,容器啟動速度很快。類似於封裝好的Windows系統,通過U盤直接安裝即可,不需要進行系統配置軟件

Docker的應用場景:

  • Web應用的自動化打包發布;
  • 自動化測試和持續集成、發布;
  • 在服務型環境中部署調整數據庫或其他的后台應用;
  • 從頭編譯或者擴展現有的 OpenShift 或 Cloud Foundry 平台來搭建自己的 PaaS 環境。

Docker的優點:

  • 快速、一致性的交付應用程序
  • 響應式部署和擴展
  • 充分利用虛擬機資源

二、Docker核心概念

Docker主機(Host):安裝了Docker程序的機器(Docker直接安裝在操作系統中)

Docker客戶端(Client):連接Docker主機進行操作;

Docker容器(Container):鏡像啟動后的實例,獨立運行的一個或一組應用;

Docker鏡像(Image):打包好的軟件,用於創建Docker容器的模板;

Docker倉庫(Respository):用於保存打包好的軟件鏡像;

關系示意圖:

             

   Docker的基本使用方式:

  ① 在機器中安裝Docker;

  ② 在Docker倉庫中尋找這個軟件對應的鏡像;

  ③ 使用Docker運行鏡像,生成一個Docker容器;

  ④ 容器的啟動或停止相當於對軟件的啟動和停止;

三、Docker的搭建

Docker版本要求

更新yum

安裝docker ce即社區免費版,先安裝必要的軟件包,安裝yum-utils,它提供一個yum-config-manager單元,同時安裝的device-mapper-persistent-data和lvm2用於儲存設備映射(devicemapper)必須的兩個軟件包。

要求 CentOs7 系統的內核版本高於 3.10,可通過如下指令查看版本

uname -r

1.更新yum

安裝docker ce即社區免費版,先安裝必要的軟件包,安裝yum-utils,它提供一個yum-config-manager單元,同時安裝的device-mapper-persistent-data和lvm2用於儲存設備映射(devicemapper)必須的兩個軟件包。

sudo yum update
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

 

緊接着配置一個穩定(stable)的倉庫 ,倉庫配置會保存到/etc/yum.repos.d/docker-ce.repo文件中。此處我們使用阿里雲。

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新Yum安裝的相關Docke軟件包

sudo yum makecache fast

出現如下錯誤:

yum makecache: error: argument timer: invalid choice: ‘fast’ (choose from ‘timer’)

        

更新索引的時候出錯,即centos8沒有該參數,解決辦法為:去掉fast參數

sudo yum makecache

      

查看倉庫版本,並指定版本安裝

     查看版本

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

  

 

   安裝yum install -y docker-ce docker-ce-cli  最新的版本

yum install -y docker-ce docker-ce-cli

卸載:
yum list installed | grep docker
yum remove 移除需要卸載的組件

 

 出現如下錯誤: Problem: package docker-ce-3:18.09.9-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed,根據提示,需要containerd.io的版本 >= 1.2.2-3

  

 也有可能出現此錯誤

   

  解決方式:

yum erase podman buildah

 (1)安裝wget指令

yum install wget

 

(2)獲取rpm包

wget http://docker-release-purple-prod.s3-website-us-east-1.amazonaws.com/linux/centos/8/x86_64/edge/Packages/containerd.io-1.3.7-3.1.el8.x86_64.rpm

(3)升級containerd.io(安裝rpm包)

yum -y install containerd.io-1.2.6-3.3.el7.x86_64.rpm

(4)重新安裝docker-ce

yum install docker-ce

出現這個就表示已經安裝完成了;   

 

啟動docker

 我們執行docker info看看結果

docker info

  如果出現如下警告:

  Server:
  ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runming?

  

那是docker服務沒有啟動,解決辦法:
sudo systemctl start docker

  設置為開機自啟動

sudo systemctl enable docker

可:

sudo systemctl start docker && sudo systemctl enable docker

 驗證查看版本:

docker version

   

 或者:

sudo docker ps

 說明安裝,並且服務已經啟動成功啦

  查看docker運行狀態

systemctl status docker

四、Docker常用的命令

 安裝Nginx

docker pull nginx

  

 拉取鏡像:

docker pull busybox

  

  拉取鏡像慢,配置加載鏡像地址:

{
    "registry - mirrors ": ["https: //ebkn7ykm.mirror.aliyuncs.com",
        "https: //docker.mirrors.ustc.edu.cn",
        "http: //f1361db2.m.daocloud.io",
        "https: //registry.docker-cn.com"
    ]
}

 查看鏡像列表:

docker images

  

 前端界面新增一個容器,我們一般不用這個:

docker run  +名字+nginx鏡像列表對應的ID

docker run --name nginx-container 605c77e624dd

如果要使用后端新增的話,用以下命令:加上-d

docker run -d --name nginx-container 605c77e624dd

就可以看到我們已經把它新建出來了 

  

 用此命令可以查看它的log

docker log e488175ea6b1

如果我們想給它做個端口映射:+ “-P”【大寫】

docker run -d -P --name nginx-container-1 605c77e624dd

 

 

 

 上面端口是隨機的,我們也可以指定端口:docker+run+-d(后端運行)+-p(小寫) +對應端口+名稱+nginx:latest(鏡像列表的名字)

docker run -d -p 12300:80 --name nginx-container-2 nginx:latest 

   

  同樣看一下效果:

  

 


免責聲明!

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



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