阿里雲CentOS環境之docker安裝,啟動,加速器,docker-compose(十四)
阿里雲CentOS環境之docker安裝,啟動,加速器(十四)
介紹
Docker從1.13版本之後採用時間線的方式作為版本號,分為社群版CE和企業版EE。
社群版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施、容器、外掛等。
Docker 屬於 Linux 容器的一種封裝,提供簡單易用的容器使用介面。它是目前最流行的 Linux 容器解決方案。
Docker 將應用程式與該程式的依賴,打包在一個檔案裡面。執行這個檔案,就會生成一個虛擬容器。程式在這個虛擬容器裡執行,就好像在真實的物理機上執行一樣。有了 Docker,就不用擔心環境問題。
總體來說,Docker 的介面相當簡單,使用者可以方便地建立和使用容器,把自己的應用放入容器。容器還可以進行版本管理、複製、分享、修改,就像管理普通的程式碼一樣。
下面一些概念
有助於理解docker:
- Docker 映象(Images):Docker映象是用於建立 Docker 容器的模板。
- Docker容器(Container):容器是獨立執行的一個或一組應用。
- Docker主機(Host):一個物理或者虛擬的機器用於執行 Docker 守護程序和容器。
- Docker倉庫(Registry):Docker 倉庫用來儲存映象,可以理解為程式碼控制中的程式碼倉庫。
- 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安裝
安裝前準備:
- 電腦必需Hyper-V軟體包才能安裝官網下載社群版
- 如果您的系統不滿足這些要求,您可以安裝Docker Toolbox,它使用Oracle Virtual Box而不是Hyper-V。toolbox下載地址
推薦文章DOCKER windows安裝
如果報Vboxmanager.exe Failed to create theVirtualBox object
錯誤,則regedit
找到登錄檔,
- 找到選項HKEY_CLASSES_ROOT\CLSID{00020420-0000-0000-C000-000000000046}InprocServer32 的值,將預設的oleaut32.dll改成C:\Windows\system32\oleaut32.dll
- 再找到HKEY_CLASSES_ROOT\CLSID{00020424-0000-0000-C000-000000000046}InprocServer32 的值,將預設的oleaut32.dll也改成C:\Windows\system32\oleaut32.dll
- 重啟電腦
注意:
- 預設的使用者名稱和密碼是: docker/tcuser
- 預設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
在執行官網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
方案二
- 首先檢查linux有沒有安裝python-pip包,終端執行 pip -V
- 沒有python-pip包就執行命令
yum -y install epel-release
,安裝成功後再次執行yum -y install python-pip
- 對安裝好的pip進行升級
pip install --upgrade pip
- 執行安裝docer-compose命令
pip install docker-compose
- 驗證是否安裝成功
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