關(guān)于Docker
1.什么是Docker
??在使用之前锐膜,需要知道Docker是基于Google公司的Go語言實現(xiàn),后來加入Linux基金會铸豁,遵從Apache 2.0協(xié)議慷荔。
??Docker的目標是實現(xiàn)輕量級的操作系統(tǒng)虛擬化解決方案。而與傳統(tǒng)虛擬化不同的是口柳,Docker基于Linux容器技術(shù)苹粟,卻在linux基礎(chǔ)上做了封裝,用戶不需要關(guān)心容器管理跃闹,直接使用就像是在使用一個最基礎(chǔ)版本的虛擬機一樣六水。
??借用下網(wǎng)上傳統(tǒng)虛擬機與Docker的對比圖片。
??傳統(tǒng)虛擬化應用程序中辣卒,不僅包含應用程序和必要的二進制文件庫掷贾,還包含一個完整的操作系統(tǒng)。
??而Docker容器僅包含應用程序和相關(guān)依賴項荣茫,在主機的操作系統(tǒng)用戶空間中作為一個獨立進程運行想帅,與其他容器共享內(nèi)核,從而實現(xiàn)了虛擬機的資源隔離和分配啡莉,具有更高的可移植性和效率提高港准。
2.為什么使用Docker
1.更快速的交付和部署
?開發(fā)者可以使用一個標準的鏡像來構(gòu)建一套開發(fā)容器,開發(fā)完成之后咧欣,運維人員可以直接 使用這個容器來部署代碼浅缸。
2.高效部署和擴容
??Docker 容器幾乎可以在任意的平臺上運行,包括物理機魄咕、虛擬機衩椒、公有云、私有云哮兰、個人電腦毛萌、服務器等。
3.更高的資源利用率
??Docker 對系統(tǒng)資源的利用率很高喝滞,一臺主機上可以同時運行數(shù)千個 Docker 容器阁将。容器除了運行其中應用外,基本不消耗額外的系統(tǒng)資源右遭,使得應用的性能很高做盅,同時系統(tǒng)的開銷盡量小缤削。傳統(tǒng)虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啟動 10 個隔離的應用即可吹榴。
4.更簡單的管理
??使用 Docker僻他,只需要小小的修改,就可以替代以往大量的更新工作腊尚。所有的修改都以增量的方式被分發(fā)和更新吨拗,從而實現(xiàn)自動化并且高效的管理。
3.Docker的工作原理和概念
自己制作鏡像然后上傳倉庫或使用倉庫已有的鏡像文件拉取到容器中部署婿斥。
Docker安裝
??為了方便Docker的說明劝篷,本次例子使用虛擬機安裝CentOS 7來演示。CentOS 7的安裝請等查看下篇文章或自行百度民宿。
1.安裝之前的準備工作
systemctl stop firewalld (關(guān)閉防火墻)
systemctl disable firewalld (禁止防火墻開機啟動)
getenforce (禁止SELINUX啟動娇妓,解決權(quán)限修改不了等問題)
cat /etc/selinux/config
將SELINUX=disabled
按照順序,執(zhí)行如下操作
1活鹰、安裝必要的一些系統(tǒng)工具
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 如果出現(xiàn)以下情況志群,說明當前用戶沒有 root相關(guān)操作權(quán)限
解決思路
sudo groupadd docker   #添加docker用戶組
常用以下三個
sudo gpasswd -a $USER docker  #將登陸用戶加入到docker用戶組中
newgrp docker  #更新用戶組
docker ps  #測試docker命令是否可以使用sudo正常使用
先查看有多少鏡像
docker images
運行docker run hello-world 測試命令着绷,如果出現(xiàn)下方紅框內(nèi)消息,證明安裝成功
3.查看docker基本信息和版本
docker info
構(gòu)建基礎(chǔ)鏡像
1.構(gòu)建Nginx基礎(chǔ)鏡像
docker search nginx
docker pull nginx
在當前窗口運行docker
docker run -it nginx
或在后臺執(zhí)行docker
docker run -d nginx
運行docker ps查看進程
查看元數(shù)據(jù)信息
docker inspect a8664cfc7fb1
查看對外的訪問路徑
curl 172.17.0.2
怎么才能訪問剛才啟用的nginx
我們可以進入容器锌云,看下這個容器是什么樣子
docker exec -it a8 bash (默認在/usr/local/ 下面)
查看nginx在哪個位置
which nginx
/usr/sbin/nginx
我們發(fā)現(xiàn)盡管啟動了nginx荠医,但是在外部還是不能訪問,這是因為docker具有隔離機制桑涎,要不然怎么叫做容器化部署呢
對Nginx進行外網(wǎng)端口映射彬向;
docker run -d -p 8080:80 nginx
2.構(gòu)建Tomcat基礎(chǔ)鏡像
docker search tomcat
docker pull tomcat
打開容器后,默認安裝目錄在 /usr/local/
3.創(chuàng)建自己的專屬鏡像
用Dockerfile來制作鏡像
例如:下載tomcat的鏡像(下面這個地址的鏡像攻冷,連JDK都包含了)
docker pull hub.c.163.com/library/tomcat:latest
編輯 vi Dockerfile
from hub.c.163.com/library/tomcat
MAINTAINER ningdonghai 56936000@qq.com
COPY nywlw /usr/local/tomcat/webapps
創(chuàng)建一個新的鏡像娃胆,并起名字為nywlw
docker build -t nywlw:latest .
查看新的鏡像
運行自己創(chuàng)建的容器
docker run -d -p 8081:8080 nywlw
4.刪除容器實例
1.docker ps -a 尋找已經(jīng)停止(注意是已停止的)運行的實例
2.docker rm 59ec 刪除實例
3.docker ps -a 查看實例已經(jīng)刪除
5.刪除鏡像
docker rmi -f 容器ID或容器名