Docker基礎

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

在這裏插入圖片描述
持續更新。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章