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.