docker介紹
Docker是Docker.Inc公司開源的一個機遇lxc技術之上構建的Container容器引擎,源代碼託管在GitHub上,基於Go語言並遵從Apache2.0協議開源。
Docker是通過內核虛擬化技術(namespaces及cgroups等)來提供容器服務的資源隔離與安全保障等。由於Docker通過操作系統層的虛擬化實現隔離,所以Docker容器在運行時,不需要類似虛擬機(VM)額外的操作系統開銷,提高資源利用率。
docker與OpenStack對比
類別 | Docker | OpenStack |
---|---|---|
部署難度 | 非常簡單 | 組件多,部署複雜 |
啓動速度 | 秒級 | 分鐘級 |
執行性能 | 和物理系統幾乎一致 | VM會佔用一些資源 |
鏡像體積 | MB級別 | GB級別 |
管理效率 | 管理簡單 | 組件相互依賴,管理複雜 |
隔離性 | 隔離性高 | 徹底隔離 |
可管理性 | 單進程、不建議啓動SSH | 完整的系統管理 |
網絡連接 | 比較弱 | 藉助Neutron可以靈活組件各類網絡架構 |
Docker安裝
安裝前準備
Docker的容器默認是可以直接訪問外網,但是外網訪問不了Docker的容器,所以需要通過端口映射或者橋接到物理網絡的方式來訪問容器的服務
- 修改eth0網卡配置文件
[root@root ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
BRIDGE=br0
- 編寫br0配置文件(默認不存在)
[root@root ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE="Bridge"
BOOTPROTO="none"
DEFROUTE="yes'
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="br0"
DEVICE="br0"
ONBOOT="yes"
IPADDR="10.0.0.200"
PREFIX="24"
GATEWAY="10.0.0.254"
DNS1="1.2.4.8"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
- 重啓網絡
systectl restart network
安裝
yum install -y docker
systemctl enable docker
下載完之後先不要啓動docker,因爲docker默認的鏡像源是在國外,下載的慢也容易被牆,所以要把鏡像源改爲國內的
- 使用阿里的鏡像源
https://cr.console.aliyun.com
[root@root ~]# vim /lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --registry-mirror=https://a14c78qe.mirror.aliyuncs.com
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
- 啓動
[root@root ~]# systemctl daemon-reload
[root@root ~]# systemctl start docker
[root@root ~]# systemctl status docker
持續更新。。。。。