1. 程式人生 > >阿里雲CentOS環境之docker安裝,啟動,加速器,docker-compose(十四)

阿里雲CentOS環境之docker安裝,啟動,加速器,docker-compose(十四)

阿里雲CentOS環境之docker安裝,啟動,加速器(十四)

介紹

Docker從1.13版本之後採用時間線的方式作為版本號,分為社群版CE和企業版EE。
社群版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施、容器、外掛等。

Docker 屬於 Linux 容器的一種封裝,提供簡單易用的容器使用介面。它是目前最流行的 Linux 容器解決方案。
Docker 將應用程式與該程式的依賴,打包在一個檔案裡面。執行這個檔案,就會生成一個虛擬容器。程式在這個虛擬容器裡執行,就好像在真實的物理機上執行一樣。有了 Docker,就不用擔心環境問題。
總體來說,Docker 的介面相當簡單,使用者可以方便地建立和使用容器,把自己的應用放入容器。容器還可以進行版本管理、複製、分享、修改,就像管理普通的程式碼一樣。

下面一些概念有助於理解docker

  1. Docker 映象(Images):Docker映象是用於建立 Docker 容器的模板。
  2. Docker容器(Container):容器是獨立執行的一個或一組應用。
  3. Docker主機(Host):一個物理或者虛擬的機器用於執行 Docker 守護程序和容器。
  4. Docker倉庫(Registry):Docker 倉庫用來儲存映象,可以理解為程式碼控制中的程式碼倉庫。
  5. Docker Machine:Docker Machine是一個簡化Docker安裝的命令列工具,通過一個簡單的命令列即可在相應的平臺上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

前提條件

1.64位版本的CentOS 7。命令lsb_release -a
2.CentOS系統的核心版本高於 3.10。命令uname -r

centos下安裝

1.解除安裝(可選)

Docker的舊版本被稱為docker或docker-engine,若以前安裝過,解除安裝命令如下:

yum remove docker docker-common container-selinux docker-selinux docker-engine

有些文章在這裡使用了yum upgrade,命令的意思是升級所有包同時也升級軟體和系統核心。我建議最好不執行命令,可能千萬系統崩潰,因為系統版本從低階升級到高階,有些軟體可能會出現問題。

2.安裝yum-utils device-mapper-persistent-data lvm2軟體包

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

3.配置穩定版本庫

大多數使用者設定了Docker的儲存庫並從中安裝,以方便安裝和升級任務。 這是推薦的方法

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4.檢視所有倉庫中所有docker版本

檢視所有社群版的docker-ce版本。

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

這裡寫圖片描述
1.repo中預設只開啟stable倉庫,所以這裡展示的都是穩定版本的docker。
2.使用sort -r命令對結果進行排序,版本號由最高到最低,並被截斷。
3.第一列是軟體名,第二列是版本字串, 第三列是儲存庫名稱,安裝指定版本使用包名-第二列是版本字串

5.安裝docker

指定版本安裝,如下:

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

最新版本

yum install docker-ce

由於repo中預設只開啟stable倉庫,故這裡安裝的是最新穩定版18.03

6.啟動docker

啟動命令

systemctl start docker

檢視版本

docker -version

7.解除安裝

檢視docker已經安裝版本

yum list installed | grep docker

解除安裝

 yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

8.新增DOCKER_HOST

開啟

vi /etc/profile

在檔案末尾新增(如果預設埠2375修改成了9000)

export DOCKER_HOST=tcp://0.0.0.0:2375

讓配置生效:

source /etc/profile

9.開放遠端訪問埠

開啟

vi /usr/lib/systemd/system/docker.service

ExecStart後面新增

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \

結果如下

ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \

安裝docker-machine

命令

curl -L https://github.com/docker/machine/releases/download/v0.10.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

測試

docker-machine -v

官方配置

docker啟動/重啟/停止等命令

新增docker開機啟動:systemctl enable docker
啟動命令:systemctl start docker
重啟命令:systemctl restart docker
停止命令:systemctl stop docker
檢視版本:docker version
解除安裝:yum remove docker-ce
檢視視窗埠對映:docker ps
檢視所以容器(包括被關閉的):docker ps --all
其它docker命令引數這裡

配置加速器

由於訪問官方映象地址很慢,不得不配置國內的映象,我這裡使用阿里雲的加速器,畢竟,我ECS,mysql,redis都使用阿里雲的,那我加速器也使用它的,個人選擇。
登陸阿里雲 - 開發者平臺,和阿里雲控制檯帳號是通用帳號,登陸成功,左側中間選擇映象加速器標籤,結果如下:
這裡寫圖片描述
按圖式方法配置CentOS系統上Docker加速器:

vi /etc/docker/daemon.json

修改檔案如下

{
  "registry-mirrors": ["https://l8ue6x6v.mirror.aliyuncs.com"]
}

重新載入配置,重啟docker

systemctl daemon-reload
systemctl restart docker

測試加速器效果
摘取映象

docker pull busybox

成功打印出“hello world”說明阿里雲加速器配置成功。

docker run busybox echo “hello world” 

windown安裝

安裝前準備:

  1. 電腦必需Hyper-V軟體包才能安裝官網下載社群版
  2. 如果您的系統不滿足這些要求,您可以安裝Docker Toolbox,它使用Oracle Virtual Box而不是Hyper-V。toolbox下載地址

推薦文章DOCKER windows安裝
如果報Vboxmanager.exe Failed to create theVirtualBox object錯誤,則regedit找到登錄檔,

  1. 找到選項HKEY_CLASSES_ROOT\CLSID{00020420-0000-0000-C000-000000000046}InprocServer32 的值,將預設的oleaut32.dll改成C:\Windows\system32\oleaut32.dll
  2. 再找到HKEY_CLASSES_ROOT\CLSID{00020424-0000-0000-C000-000000000046}InprocServer32 的值,將預設的oleaut32.dll也改成C:\Windows\system32\oleaut32.dll
  3. 重啟電腦

注意:

  1. 預設的使用者名稱和密碼是: docker/tcuser
  2. 預設IP:192.168.99.100
    如果報This computer doesn't have VT-X/AMD-v enabled則需要進入電腦的BIOS裡設定支付虛擬機器。

嘗試開戶nginx

docker run -d -p 80:80 --name webserver nginx

windows上dockerTool使用詳解

dockerTool安裝成功,桌面會顯示
這裡寫圖片描述
虛擬機器目錄:C:\Users\Administrator\.docker\machine\machines,展示所以虛擬機器
每個虛擬機器配置檔案:C:\Users\Administrator\.docker\machine\machines\default\config.json

一般我們建議使用SecureCRT工具連線docker命令終端,為了就是操作方便,能複製貼上,但我們不能忽略docker命令終端
我們發現SecureCRT工具連線成功介面如下:
這裡寫圖片描述
我們注意到[email protected]:~$default其實是docker預設為我們建立的虛擬機器名當連線成功時自動連線到預設虛擬機器default上,所以在SecureCRT是沒法使用docker-machine命令的,這個命令只能在docker命令終端(Docker Quickstart Terminal)裡使用。

docker-machine是一個在“本地”或者“雲平臺”上管理 docker-engine 的工具。在Linux上可以用它管理遠端的docker,在mac/window上可以用它管理本地的 docker,它是一個管理工具,有自己的命令。

docker-machine命令(在docker命令終端(Docker Quickstart Terminal)裡使用)
如果不指定 machine 的名稱進行操作,則操作的 machine 預設為名稱為 default 的 machine

幫助資訊

docker-machine  命令 --help

展示所有虛擬機器

docker-machine ls

檢視虛擬機器環境變數

docker-machine env default

結果如下:
這裡寫圖片描述
虛擬機器ip地址:192.168.99.100,開放埠:2376

建立虛擬機器

docker-machine create --driver virtualbox default2

如果支援hyper-v,則命令中--driver virtualbox換成--driver hyperv
指定阿里雲加速器

docker-machine create --driver virtualbox  --engine-registry-mirror https://l8ue6x6v.mirror.aliyuncs.com default2

指定ip地址:

docker-machine create --driver virtualbox --generic-ip-address=192.168.119.105  --engine-registry-mirror https://l8ue6x6v.mirror.aliyuncs.com default2

指定ssh使用者:

docker-machine create --driver --generic-ssh-user mike  virtualbox --generic-ip-address=192.168.119.105  --engine-registry-mirror https://l8ue6x6v.mirror.aliyuncs.com default2

使用虛擬機器

eval $(docker-machine env default2)

檢視虛擬機器底層配置資訊

docker-machine inspect 虛擬機器名

列印配置資訊

docker-machine config 虛擬機器名

檢視活動的Docker主機

docker-machine active 虛擬機器名

檢視虛擬機器ip

docker-machine ip 虛擬機器名

獲得ip地址後,就可以用SecureCRT連線到對應的虛擬機器上了。比如我連線到:192.168.99.101,name:docker,pwd:tcuser,連線到名cy虛擬機器上即"[email protected]:~$"

檢視狀態

docker-machine status 虛擬機器名

ssh登陸

docker-machine ssh 虛擬機器名

相當於SecureCRT工具連線。

##啟動start/停止kill/stop/刪除rm
直接殺死Docker主機程序:docker-machine kill 虛擬機器名
先回收資源,再殺死程序:docker-machine stop 虛擬機器名
重啟:docker-machine restart 虛擬機器名
啟動:docker-machine start 虛擬機器名
刪除:docker-machine rm虛擬機器名

更新docker虛擬機器為最新版

docker-machine upgrade 虛擬機器名

獲取主機的URL

docker-machine url 虛擬機器名

結果為tcp://192.168.99.100:2376

常見錯誤

要在啟用關閉windos功能中開啟Hyper-V

注意,如果Hyper-V平臺下的選項為灰色不可選,說明電腦的CPU虛擬化功能沒有開啟,這時要在開機時進入BIOS下開啟此功能,具體操作參考:

https://zhidao.baidu.com/question/1894752363981711700.html

png

在執行官網demo時,在拉去映象時如果出現

no matching manifest for unknown in the manifest list entries
錯誤時,滑鼠點選docker圖示,進入設定(settings)=> Daemon ,開啟advance,把json 裡面的experimental設定為true,儲存重啟docker即可。

在構建文件中的demo映象時出現

docker demo Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt
錯誤時,修改一下Dockerfile,新增 COPY requirements.txt requirements.txt,COPY app.py app.py。如下

windows加速器

sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速器地址 |g" /var/lib/boot2docker/profile 

例如https://l8ue6x6v1.mirror.aliyuncs.com
或者修改C:\Users\Administrator\.docker\machine\machines\default\config.json(以default為例)的RegistryMirror欄位,修改為"RegistryMirror": ["https://l8ue6x6v.mirror.aliyuncs.com"],再重啟,在/var/lib/boot2docker/profile看見一個–registry-mirror http://xxxxxx.m.daocloud.io了
官方命令

如果安裝的是dockerTool而是Docker for Windows Installer那麼安如下方式:
在這裡插入圖片描述

映象位置

windows下拉取映象,掛載目錄的路徑都是C:\ProgramData\Docker,如下圖:
在這裡插入圖片描述
containers是當前所有的容器,包括沒執行的容器。比如下圖

在這裡插入圖片描述
資料夾名這containerId

使用docker run -v 目錄 命令掛載的內容相對路徑是volumes,如下圖
在這裡插入圖片描述

config是配置

SecureCRT連線到docker虛擬機器

//檢視虛擬機器列表
docker-machine ls
//選擇想連線的docker,然後找到ip地址
docker-machine ip 虛擬機器

然後開啟SecureCRT連線到上面得到的ip,name:docker,pwd:tcuser

linux下dockerCompose安裝

docker-compose 是用來做docker 的多容器控制

##方案一(建議)
官方安裝步驟

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
 chmod +x /usr/local/bin/docker-compose

方案二

  1. 首先檢查linux有沒有安裝python-pip包,終端執行 pip -V
  2. 沒有python-pip包就執行命令 yum -y install epel-release,安裝成功後再次執行yum -y install python-pip
  3. 對安裝好的pip進行升級 pip install --upgrade pip
  4. 執行安裝docer-compose命令pip install docker-compose
  5. 驗證是否安裝成功docker-compose -version

windows下dockerCompose安裝

官方安裝步驟
docker-compose釋出版本下載
實際上windows系統目前為止還不支援直接安裝docker-compose,所以我們在docker虛擬機器上安裝。
用SecureCRT工具連線到default虛擬機器:
##獲得root使用者許可權

sudo -i

安裝docker-compose

curl -L https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

測試

docker-compose version

結果如下:
這裡寫圖片描述

問題一:

如果報You should consider upgrading via the 'pip install --upgrade pip' command.錯誤,則pip需要升級,執行pip install --upgrade pip

問題二:

問題三:

如果報pkg_resources.DistributionNotFound: backports.ssl-match-hostname>=3.5 錯誤,
更新backports.ssl-match-hostname的版本,在終端輸入命令pip install --upgrade backports.ssl_match_hostname

問題四:

若出現如下錯誤

Traceback (most recent call last):
  File "/usr/bin/docker-compose", line 7, in <module>
    from compose.cli.main import main
  File "/usr/lib/python2.7/site-packages/compose/cli/main.py", line 17, in <module>
    import docker
  File "/usr/lib/python2.7/site-packages/docker/__init__.py", line 2, in <module>
    from .api import APIClient
  File "/usr/lib/python2.7/site-packages/docker/api/__init__.py", line 2, in <module>
    from .client import APIClient
  File "/usr/lib/python2.7/site-packages/docker/api/client.py", line 5, in <module>
    import requests
  File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 58, in <module>
    from . import utils
  File "/usr/lib/python2.7/site-packages/requests/utils.py", line 32, in <module>
    from .exceptions import InvalidURL
  File "/usr/lib/python2.7/site-packages/requests/exceptions.py", line 10, in <module>
    from .packages.urllib3.exceptions import HTTPError as BaseHTTPError
  File "/usr/lib/python2.7/site-packages/requests/packages/__init__.py", line 95, in load_module
    raise ImportError("No module named '%s'" % (name,))
ImportError: No module named 'requests.packages.urllib3'

執行命令

pip3 uninstall docker-py
pip3 uninstall docker-compose
pip3 install --upgrade --force-reinstall --no-cache-dir docker-compose

官方英文安裝步驟

學習資源