1.Docker容器概述 區分Docker容器技術和VM虛擬機技術: evernotecid://394EFE90 9CE0 4D65 A8CD DFEC0DC8061E/appyinxiangcom/11359837/ENResource/p1872 Docker容器技術 [Container]: ...
1.Docker容器概述
- 區分Docker容器技術和VM虛擬機技術:
evernotecid://394EFE90-9CE0-4D65-A8CD-DFEC0DC8061E/appyinxiangcom/11359837/ENResource/p1872
Docker容器技術 [Container]:容器虛擬化技術
evernotecid://394EFE90-9CE0-4D65-A8CD-DFEC0DC8061E/appyinxiangcom/11359837/ENResource/p1873
VM虛擬機技術[Virtual Machine]:傳統虛擬化技術
evernotecid://394EFE90-9CE0-4D65-A8CD-DFEC0DC8061E/appyinxiangcom/11359837/ENResource/p1873
主要區別是:- [1] 容器提供了基於進程的隔離,而虛擬機提供了資源的完全隔離。
- [2] 虛擬機可能需要一分鐘來啟動,而容器只需要一秒鐘或更短。
- [3] 容器使用宿主操作系統的內核,而虛擬機使用獨立的內核
- 容器的好處
1.2.0 容器
- Docker容器發行版本:
Docker CE(社區版):免費開源版本-Docker Engine
Docker EE(企業版):商用收費版本-Docker Data Center - Docker容器安裝環境:
公有雲環境:基於阿裡雲以及騰訊雲主機等安裝Docker
私有雲環境:基於自主主機環境安裝Docker - Docker 平臺的基本構成:
evernotecid://394EFE90-9CE0-4D65-A8CD-DFEC0DC8061E/appyinxiangcom/11359837/ENResource/p1874
Docker 平臺基本上由三部分組成: - [1] 客戶端:用戶使用 Docker 提供的工具(CLI 以及 API 等)來構建,上傳鏡像併發布命令來創建和啟動容器Docker
- [2] 主機:從 Docker registry 上下載鏡像並啟動容器Docker
- [3] registry:Docker 鏡像倉庫,用於保存鏡像,並提供鏡像上傳和下載後面的文章會具體分析。
2.Docker容器部署與安裝
Docker容器部署
查看 Centos7 開發環境:cat /etc/centos-release
[root@centos-amber ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@centos-amber ~]#
查看 Centos7 內核版本:uname -a 或者 cat /proc/version
[root@centos-amber ~]# uname -a
Linux centos-amber 3.10.0-957.27.2.el7.x86_64 #1 SMP Mon Jul 29 17:46:05 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@centos-amber ~]#
在增加Docker阿裡雲yum源之前需要執行基礎組件安裝以及卸載歷史版本:
基礎組件安裝:yum -y install gcc & yum -y install gcc-c++
#gcc 環境安裝
yum -y install gcc
yum -y install gcc-c++
卸載歷史版本:yum -y remove docker docker-common docker-selinux docker-engine
[root@centos-amber ~]# yum -y remove docker docker-common docker-selinux docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-common
No Match for argument: docker-selinux
No Match for argument: docker-engine
No Packages marked for removal
[root@centos-amber ~]#
或者 刪除已安裝的Docker
# Uninstall installed docker
[root@centos-amber ~]# sudo yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-selinux \
> docker-engine-selinux \
> docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-selinux
No Match for argument: docker-engine-selinux
No Match for argument: docker-engine
No Packages marked for removal
[root@centos-amber ~]#
Ps: Docker部署要求64位的系統且內核版本至少為3.10
2.0.2 部署Docker添加yum源:yum install epel-release –y && yum list
[root@centos-amber ~]# yum install epel-release –y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Package epel-release-7-11.noarch already installed and latest version
Nothing to do
[root@centos-amber ~]#
[root@centos-amber ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base epel extras updates
Cleaning up list of fastest mirrors
[root@centos-amber ~]# yum list
2.1 Docker容器安裝
配置阿裡雲Docker Yum源
- [1] Set up repository :
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
[root@centos-amber docker]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
.............
[root@centos-amber docker]#
- [2] Use Aliyun Docker
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@centos-amber docker]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@centos-amber docker]#
更新Yum緩存:sudo yum -y makecache fast
[root@centos-amber ~]# sudo yum makecache fast
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
epel | 5.3 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:00
(2/2): docker-ce-stable/x86_64/primary_db | 32 kB 00:00:00
Metadata Cache Created
[root@centos-amber ~]# sudo yum -y makecache fast
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
epel | 5.3 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
Metadata Cache Created
[root@centos-amber ~]#
查看對應版本:yum list docker-ce --showduplicates
[root@centos-amber docker]# yum list docker-ce --showduplicates
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
docker-ce-stable | 3.5 kB 00:00:00
(1/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:00
(2/2): docker-ce-stable/x86_64/primary_db | 32 kB 00:00:00
Available Packages
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.4-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
[root@centos-amber docker]#
2.1.3 安裝Docker最新版本: sudo yum install docker-ce
docker-ce-cli 或者 yum install docker-io –y
[root@centos-amber docker]# sudo yum install docker-ce
..............
Installed:
docker-ce.x86_64 3:19.03.1-3.el7
Dependency Installed:
audit-libs-python.x86_64 0:2.8.4-4.el7 checkpolicy.x86_64 0:2.5-8.el7 container-selinux.noarch 2:2.107-1.el7_6 containerd.io.x86_64 0:1.2.6-3.3.el7 docker-ce-cli.x86_64 1:19.03.1-3.el7
libcgroup.x86_64 0:0.41-20.el7 libsemanage-python.x86_64 0:2.5-14.el7 policycoreutils-python.x86_64 0:2.5-29.el7_6.1 python-IPy.noarch 0:0.75-6.el7 setools-libs.x86_64 0:3.3.8-4.el7
Complete!
[root@centos-amber docker]#
2.1.4 啟動Docker服務:
# Start docker service
systemctl enable docker
systemctl start docker
執行:systemctl enable docker 允許開機啟動
[root@centos-amber docker]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@centos-amber docker]#
執行:systemctl start docker 啟動Docker服務
[root@centos-amber docker]# systemctl start docker
[root@centos-amber docker]#
基本命令:
systemctl enable docker # 允許開機啟動
systemctl start docker #運行Docker守護進程
systemctl stop docker #停止Docker守護進程
systemctl restart docker #重啟Docker守護進程
systemctl status docker #查看Docker的運行狀態
2.1.5 檢驗安裝Docker服務信息:
執行:docker info 查看Docker服務信息
[root@centos-amber docker]# docker info
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 19.03.1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-957.27.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.795GiB
Name: centos-amber
ID: TS7V:P2HE:MICX:JPN7:H5JU:PQX5:JWB3:4YSO:DM7X:RVBV:URME:64DZ
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
[root@centos-amber docker]#
執行:docker version 查看版本號
[root@centos-amber docker]# docker version
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:21:07 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:19:36 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
[root@centos-amber docker]#
3. Docker配置阿裡雲鏡像加速器
Docker 密碼:Docker20190822
阿裡雲官網配置:
sudo mkdir -p /etc/docker sudo
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://j98vrcq8.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
編輯配置文件:vim /etc/docker/daemon.json
[root@centos-amber docker]#vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://j98vrcq8.mirror.aliyuncs.com"]
}
[root@centos-amber docker]# sudo systemctl daemon-reload
[root@centos-amber docker]# sudo systemctl restart docker
[root@centos-amber docker]#
[root@centos-amber docker]# docker info
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 19.03.1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-957.27.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.795GiB
Name: centos-amber
ID: TS7V:P2HE:MICX:JPN7:H5JU:PQX5:JWB3:4YSO:DM7X:RVBV:URME:64DZ
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://j98vrcq8.mirror.aliyuncs.com/
Live Restore Enabled: false
[root@centos-amber docker]#
4.Docker容器基本組件部署與安裝
Compose組件部署與安裝
基本概述:
Docker Compose是一個用來定義和運行複雜應用的Docker工具。
一個使用Docker容器的應用,通常由多個容器組成。
使用Docker Compose不再需要使用shell腳本來啟動容器。
Compose 通過一個配置文件來管理多個Docker容器,在配置文件中,所有的容器通過services來定義。然後使用docker-compose腳本來啟動,停止和重啟應用,和應用中的服務以及所有依賴服務的容器,非常適合組合使用多個容器進行開發的場景
安裝docker-compose的方式:
- [1] 從github上下載docker-compose二進位文件安裝
下載最新版的docker-compose文件 :
sudo curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-uname -s
-uname -m
-o /usr/local/bin/docker-compose
[root@centos-amber ~]# sudo curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 617 0 617 0 0 640 0 --:--:-- --:--:-- --:--:-- 640
3 16.1M 3 645k 0 0 1669 0 2:48:53 0:06:35 2:42:18 0
curl: (56) TCP connection reset by peer
[root@centos-amber ~]#
添加可執行許可權: sudo chmod +x /usr/local/bin/docker-compose
[root@centos-amber ~]# sudo chmod +x /usr/local/bin/docker-compose
[root@centos-amber ~]#
卸載docker-compose執行:sudo rm /usr/local/bin/docker-compose
[root@centos-amber ~]# sudo rm /usr/local/bin/docker-compose
[root@centos-amber ~]#
- [2] 使用pip install命令安裝:
安裝方式:sudo pip install docker-compose
sudo pip install docker-compose
卸載方式:pip uninstall docker-compose
pip uninstall docker-compose
2種方式檢驗安裝結果:docker-compose --version
[root@centos-amber ~]# docker-compose --version
/usr/lib/python2.7/site-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.22) or chardet (2.2.1) doesn't match a supported version!
RequestsDependencyWarning)
docker-compose version 1.24.1, build 4667896
[root@centos-amber ~]#
Machine組件部署與安裝
基本概述:
Docker Machine是一個工具,可讓您在虛擬主機上安裝Docker Engine,並使用docker-machine命令管理主機。
安裝docker-compose的方式:
curl -L https://github.com/docker/machine/releases/download/v0.16.1/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 與宿主機建立網路通信:
ps1 :docker 埠映射錯誤
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql-master (1aac2f09e8d851518f8551308ccbe1e036454d5103bd99fba3f7b3870e3b21b4): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3307 -j DNAT --to-destination 172.17.0.4:3306 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).
解決辦法:
- [1] 執行:pkill docker
- [2] iptables -t nat -F
- [3] ifconfig docker0 down
- [4] brctl delbr docker0
pkill docker && iptables -t nat -F && ifconfig docker0 down && brctl delbr docker0
ps2: linux brctl command not found
[root@centos-meteor ~]# brctl delbr docker0
-bash: brctl: command not found
宿主機安裝: yum install bridge-utils
4.Docker容器部署與安裝總結
docker 配置基於阿裡雲的Yum源:
- [1] 安裝必要的系統工具 :sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- [2] 添加軟體源信息:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- [3] 更新並安裝 Docker-CE: sudo yum makecache fast sudo yum -y install docker-ce
sudo yum makecache fast sudo yum -y install docker-ce
- [4] 開啟Docker服務: systemctl enable docker systemctl start docker
systemctl enable docker systemctl start docker
docker 部署安裝以及基本命令使用:
- [1] Docker部署要求64位的系統且內核版本至少為3.10
- [2] Docker安裝目錄:var/lib/docker 和 /var/lib/docker-engine
- [3] Docker配置目錄:/etc/docker
Docker 部署portainer
docker run -ti -d --name portainer -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
版權聲明:本文為博主原創文章,遵循相關版權協議,如若轉載或者分享請附上原文出處鏈接和鏈接來源。