容器技術和Docker的簡單介紹(系統學習Docker01)

寫在前面

後面來補~

先來一張經典的圖:

虛擬機技術 VS 容器技術(docker就是典型代表實現)
在這裏插入圖片描述
可以看出:docker不需要我們提供OS的支持,它已經將OS集成在了自己的Docker Engine中。docker更加小巧。
在這裏插入圖片描述

在這裏插入圖片描述

Docker + Kubernetes(生產中可能是有上千個容器)
k8s:對容器的創建 管理 調度 運維

Docker 基礎篇
第一章:容器技術 與Docker簡介
第二章:Docker 環境的各種搭建方法
第三章:Docker的鏡像和容器
第四章:Docker的網絡
第五章:Docker的持久化和數據共享
第六章:Docker Compose多容器部署

Docker 進階篇
第七章:容器編排Docker Swarm
第八章:Docker初體驗-Docker Cloud 和 Docker 企業版
第九章:容器編排Kubernets
第十章:容器的運維和監控
第十一章:Docker + DevOps實戰項目
在這裏插入圖片描述

1.1 容器技術概述

1.很久很久以前,我們部署一個應用:
需要準備一臺物理服務器;
在Physical server 上安裝操作系統;
(可能還需要安裝App的環境依賴,比如JDK)
在Operating System上再部署我們的Application。
- 部署非常慢
- 成本非常高
- 資源浪費
- 難於遷移和擴展

2.後來就出現了 虛擬化技術 ,
需要準備一臺物理服務器;
在Physical server 上安裝物理機自己的操作系統;
使用Hypervisor技術,分離出一些物理機的資源出來;
再在分離出來的一個個資源中安裝OS,構成一個個虛擬機;
再在虛擬機中安裝應用環境依賴和部署應用。
- 一個物理機可以分離多個虛擬機出來
- 每個App可以運行在一個獨立的VM中

侷限性:
- 每個VM本身就是一個完整的OS,運行本身就會消耗一定資源
一旦VM多了,就會浪費比較大的資源。

通過Container對我們的App進行打包成集裝箱,
這樣就可以車子輪船拉走
運行在哪裏都行。

什麼是容器?
- 對軟件和它的依賴 標準化打包
- 應用之間相互隔離
- 共享一個 OS Kernel
- 可以運行在很多主流的操作系統上
在這裏插入圖片描述

1.2 Docker的架構和底層技術

在這裏插入圖片描述
docker engine
在這裏插入圖片描述
systemctl start docker
啓動docker之後就可以看見dockerd 這個進程

[root@localhost ~]# ps -ef | grep docker
root      1579     1  0 Feb08 ?        00:02:32 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root     13816  6254  0 02:30 pts/5    00:00:00 grep --color=auto docker
[root@localhost ~]# 

Docker 架構
在這裏插入圖片描述
Docker 底層技術支持:

Namespaces : 做隔離pid/net/ipc/mnt/uts
Control Groups : 做資源限制
Union file systems: Container 和 image 的分層

1.3 Docker 魅力初體驗

WordPress 本來安裝是比較麻煩的,但是在這裏就是一個命令的事情~
[root@localhost ~]# cd wordpress/
[root@localhost wordpress]# ls
docker-compose.yml
[root@localhost wordpress]#cat docker-compose.yml

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - ./db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: 123456
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "9999:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

執行: docker-compose up -d

[root@localhost docker-hadoop-spark-hive-master]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                  NAMES
bbc250af997f        wordpress:latest    "docker-entrypoint.s…"   58 seconds ago       Up 55 seconds       0.0.0.0:9999->80/tcp   wordpress_wordpress_1

訪問:http://172.20.10.4:9999/
在這裏插入圖片描述

ok~ 美得很,這樣就可以做個性化的設置了。
最後,你會發現,多了一個db_data 數據文件夾,沒錯就是我們映射出來的數據庫文件夾

[root@localhost ~]# cd wordpress/
[root@localhost wordpress]# ll
total 8
drwxr-xr-x. 6 polkitd root 4096 Feb  9 00:30 db_data
-rw-r--r--. 1 root    root  545 Feb  9 00:29 docker-compose.yml
[root@localhost wordpress]#

這樣你如果想要移植,你就可以把這個db_data也一併拷走就行。


有什麼問題,歡迎留言討論~~

更多文章:系統學習Docker 不迷路:https://blog.csdn.net/liuge36/category_7651616.html

發佈了161 篇原創文章 · 獲贊 31 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章