入門、快速搭建Docker分佈式項目環境
關於Docker
1.什麼是Docker
在使用之前,需要知道Docker是基於Google公司的Go語言實現,後來加入Linux基金會,遵從Apache 2.0協議。
Docker的目標是實現輕量級的操作系統虛擬化解決方案。而與傳統虛擬化不同的是,Docker基於Linux容器技術,卻在linux基礎上做了封裝,用戶不需要關心容器管理,直接使用就像是在使用一個最基礎版本的虛擬機一樣。
借用下網上傳統虛擬機與Docker的對比圖片。
傳統虛擬化應用程序中,不僅包含應用程序和必要的二進制文件庫,還包含一個完整的操作系統。
而Docker容器僅包含應用程序和相關依賴項,在主機的操作系統用戶空間中作為一個獨立進程運行,與其他容器共享內核,從而實現了虛擬機的資源隔離和分配,具有更高的可移植性和效率提高。
2.為什麼使用Docker
1.更快速的交付和部署
開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之後,運維人員可以直接 使用這個容器來部署代碼。
2.高效部署和擴容
Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等。
3.更高的資源利用率
Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷儘量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啟動 10 個隔離的應用即可。
4.更簡單的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化並且高效的管理。
3.Docker的工作原理和概念
自己製作鏡像然後上傳倉庫或使用倉庫已有的鏡像文件拉取到容器中部署。
Docker安裝
為了方便Docker的說明,本次例子使用虛擬機安裝CentOS 7來演示。CentOS 7的安裝請等查看下篇文章或自行百度。
1.安裝之前的準備工作
systemctl stop firewalld (關閉防火牆)
systemctl disable firewalld (禁止防火牆開機啟動)
getenforce (禁止SELINUX啟動,解決權限修改不了等問題)
cat /etc/selinux/config
將SELINUX=disabled
按照順序,執行如下操作
1、安裝必要的一些系統工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加軟件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、更新並安裝Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
安裝準備工作
2.開啟Docker服務
systemctl start docker (啟動docker)
systemctl enable docker (加入開機啟動)
運行docker version 如果出現以下情況,說明當前用戶沒有 root相關操作權限
無root權限
解決思路
sudo groupadd docker #添加docker用戶組
常用以下三個
sudo gpasswd -a $USER docker #將登陸用戶加入到docker用戶組中
newgrp docker #更新用戶組
docker ps #測試docker命令是否可以使用sudo正常使用
先查看有多少鏡像
docker images
運行docker run hello-world 測試命令,如果出現下方紅框內消息,證明安裝成功
3.查看docker基本信息和版本
docker info
構建基礎鏡像
1.構建Nginx基礎鏡像
docker search nginx
查詢nginx鏡像
docker pull nginx
鏡像拉取
在當前窗口運行docker
docker run -it nginx
或在後臺執行docker
docker run -d nginx
運行docker ps查看進程
查看元數據信息
docker inspect a8664cfc7fb1
查看對外的訪問路徑
curl 172.17.0.2
怎麼才能訪問剛才啟用的nginx
nginx頁面內容
我們可以進入容器,看下這個容器是什麼樣子
docker exec -it a8 bash (默認在/usr/local/ 下面)
查看nginx在哪個位置
which nginx
/usr/sbin/nginx
我們發現儘管啟動了nginx,但是在外部還是不能訪問,這是因為docker具有隔離機制,要不然怎麼叫做容器化部署呢
Docker內nginx端口
對Nginx進行外網端口映射;
docker run -d -p 8080:80 nginx
2.構建Tomcat基礎鏡像
docker search tomcat
docker pull tomcat
打開容器後,默認安裝目錄在 /usr/local/
3.創建自己的專屬鏡像
用Dockerfile來製作鏡像
例如:下載tomcat的鏡像(下面這個地址的鏡像,連JDK都包含了)
docker pull hub.c.163.com/library/tomcat:latest
編輯 vi Dockerfile
from hub.c.163.com/library/tomcat
MAINTAINER ningdonghai [email protected]
COPY nywlw /usr/local/tomcat/webapps
創建一個新的鏡像,並起名字為nywlw
docker build -t nywlw:latest .
查看新的鏡像
運行自己創建的容器
docker run -d -p 8081:8080 nywlw
4.刪除容器實例
1.docker ps -a 尋找已經停止(注意是已停止的)運行的實例
2.docker rm 59ec 刪除實例
3.docker ps -a 查看實例已經刪除
5.刪除鏡像
docker rmi -f 容器ID或容器名
最後
每天發佈更多新鮮有含量的技術文章、總有一款適合你。
快關注我、把我打包帶走、每天提醒你學習一手技術。