1. 程式人生 > >Docker基礎篇1:簡介及安裝

Docker基礎篇1:簡介及安裝

1、Docker簡介

      Docker是一個開源的應用容器引擎,使用Go語言開發,基於Linux核心的cgroup,namespace,Union FS等技術,對應用程序進行封裝隔離,並且獨立於宿主機與其他程序,這種執行時封裝的狀態稱為容器。Docker理念是將應用及依賴包打包到一個可移植的容器中,可釋出到任意Linux發行版Docker引擎上。使用沙箱機制執行程式,程式之間相互隔離。

1.1、docker體系結構

Containerd:是一個簡單的守護程序,使用runC管理器。向Docker Engine提供介面。
Shim:只負責管理一個容器。
runC:是一個輕量級的工具,只用來執行容器。

 

1.2、內部元件

【Namespaces命令空間】

Namespaces命令空間,Linux核心提供的一種對程序資源隔離的機制,例如:程序、網路、掛載點等資源。

【CGroups控制組】

CGroups控制組,Linux核心提供的一種限制程序資源的機制;例如:CPU/記憶體等資源;

[[email protected]_190_147_centos ywadmin]# ls -l /sys/fs/cgroup
total 0
drwxr-xr-x 2 root root  0 Nov 24 12:15 blkio
lrwxrwxrwx 1 root root 11 Nov 24 12:15 cpu -> cpu,cpuacct
lrwxrwxrwx 1 root root 11 Nov 24 12:15 cpuacct -> cpu,cpuacct
drwxr-xr-x 2 root root  0 Nov 24 12:15 cpu,cpuacct
drwxr-xr-x 2 root root  0 Nov 24 12:15 cpuset
drwxr-xr-x 4 root root  0 Nov 24 12:15 devices
drwxr-xr-x 2 root root  0 Nov 24 12:15 freezer
drwxr-xr-x 2 root root  0 Nov 24 12:15 hugetlb
drwxr-xr-x 2 root root  0 Nov 24 12:15 memory
lrwxrwxrwx 1 root root 16 Nov 24 12:15 net_cls -> net_cls,net_prio
drwxr-xr-x 2 root root  0 Nov 24 12:15 net_cls,net_prio
lrwxrwxrwx 1 root root 16 Nov 24 12:15 net_prio -> net_cls,net_prio
drwxr-xr-x 2 root root  0 Nov 24 12:15 perf_event
drwxr-xr-x 2 root root  0 Nov 24 12:15 pids
drwxr-xr-x 4 root root  0 Nov 24 12:15 systemd

【UnionFS聯合檔案】

UnionFS聯合檔案系統,支援將不同位置的目錄掛到同一虛擬檔案系統,形成一種分層的模型。

2、yum安裝docker

這裡選擇的是centos7.4的系統,通過yum的方式安裝docker;可以參考官網yum安裝dockerhttps://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1

【安裝docker依賴】

[[email protected]_190_147_centos ywadmin]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)
[
[email protected]
_190_147_centos ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

【配置官方源】

[[email protected]_190_147_centos ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[[email protected]_190_147_centos ~]# ll /etc/yum.repos.d/

【安裝docker】

[[email protected]_190_147_centos ~]# yum install docker-ce

【啟動docker】

[[email protected]_190_147_centos ~]# systemctl start docker
[[email protected]_190_147_centos ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 18.09.0 #yum安裝是最新版本
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 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: c4446665cb9c30056f4998ed953e6d4ff22c7c39
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-693.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.796GiB
Name: VM_190_147_centos
ID: 5UPI:LZ6S:UAXZ:MEWK:THMP:BKW7:YEBP:P3RF:SDOX:IMHV:BJ4K:ONQA
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/ #源
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

3、非root安裝執行docker

【非root使用者安裝】

[[email protected] ~]$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
[[email protected] ~]$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[[email protected] ~]$ sudo yum install docker-ce
[[email protected] ~]$ yum list docker-ce --showduplicates | sort -r
[[email protected] ~]$ sudo systemctl start docker
[[email protected]uudwu6dx6oewil61z ~]$ sudo docker version 

【非root使用者執行】

建立組docker,把已有使用者ywadmin加入到docker組中。
[[email protected] ~]# groupadd docker
groupadd: group 'docker' already exists
[[email protected] ~]# usermod -aG docker ywadmin
#-a引數表示把使用者加入到組中,-G表示組docker中新增新名單ywadmin

#設定開機啟動
[[email protected] ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.