深入浅出 Docker
一、什么Docker
- 從作用的角度:
- 從實現的角度(與虛擬機相比):
? ?2. 容器和虛擬機之間的主要區別在于虛擬化層的位置和操作系統資源的使用方式。?
[對于java開發,要想實現程序的打包和遷徙,我們現有的模式是在一個服務器上安裝統一一個jdk,運行多個tomcat,每個tomcat里面一個java應用,大家也知道tomcat不用安裝,當我們項目要遷徙的時候也只需要把整個tomcat打包然后在另一臺服務器上解壓就ok了,也很簡單]?
每臺虛擬機都能夠獲得唯一的操作系統和負載(應用程序),每個容器化應用都會共享相同的操作系統(單個主機操作系統)
相比于虛擬機,容器擁有更高的資源使用效率,因為它并不需要為每個應用分配單獨的操作系統——實例規模更小、創建和遷移速度也更快。云提供商十分熱衷于容器技術,因為在相同的硬件設備當中,可以部署數量更多的容器實例 。
二、基于docker的wordpress博客搭建 ? 小例子
- 一、?項目介紹
1、簡介
docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
本項目使用Docker搭建了一個WordPress應用,基礎架構包含一個Nginx服務器來路由/代理請求、WordPress應用服務器 來部署應用以及MySQL數據庫來提供存儲。
本項目的搭建環境使用騰訊云平臺的云服務器,系統版本為ubuntu 64位。
2、架構
構建一個簡單的基礎框架,其上運行一個WordPress的自包含實 例,WordPress是被全世界很多公司和作家使用的流行博客工具。這個基礎架構包含一個Nginx服務器來路由/代理請求,WordPress應用服 務器來部署應用以及MySQL數據庫來提供存儲。最終的架構類似于:?
- 二、?實施過程
1、安裝虛擬機和ubuntu系統
?下載VMware Workstation Pro安裝,新建虛擬機并安裝ubuntu系統。
?進入terminal并獲得root權限。
?
2、安裝docker環境
使用百度的命令進行軟件安裝。
?
3、查看docker信息
通過docker info 命令可以查看當前docker的運行信息。
(提示:Cannot connect to the Docker daemon. Is the docker daemon running on this host?
可以使用serivce docker start來啟動docker服務。)
4、配置docker加速器
由于docker自帶的鏡像源在國外,下載鏡像的速度不理想。所以可以使用國內的鏡像源進行加速,如daocloud的倉庫。
?curl?-sSL?https://get.daocloud.io/daotools/set_mirror.sh?|?sh?-s?http://acef54a4.m.daocloud.io?
5、創建數據庫容器
容器名為wordpress-db, 同時設置數據庫密碼。
docker?run?--name?wordpress-db?-e?MYSQL_ROOT_PASSWORD=mysecretpassword?-d?mysql
?
參數的含義如下:
-name表示分配給新容器的名字(或者標簽)
-e設置容器的環境變量,指定MySQL實例的密碼,已有配置文檔可以在MySQL Docker Hub中找到。
-d指定Docker在后臺運行容器。
?
6、創建wordpress容器
?
docker run --name wordpress-app --link wordpress-db:mysql -d wordpress
-link wordpress-db:mysql這個參數告訴Docker創建網絡連接到wordpress-db容器(之前創建出來的),使得兩個容器間能夠網絡通信。
查看容器的狀態
docker ps
?
進入wordpress中使用ping命令,確認wordpress已經連接上數據庫。
docker exec -i -t wordpress-app bash
ping mysql
?
7、安裝配置nginx容器
使用nginx作為web訪問的代理,配置文件。
cd /usr/local?????//進入該目錄
mkdir wordpress-nginx????//定義名為wordpress-nginx子目錄
cd /usr/local/wordpress-nginx???.//進入該目錄
vi default.conf??????????//定義名為default.conf文件
?
#Default.conf 這是nginx的配置文件
server {
listen ??????80;
server_name ?localhost;
error_log /var/log/nginx/error.log warn;
location / {
????proxy_pass http://wordpress-app:80/;
????proxy_redirect http://server_name http://wordpress-app:80/;
????proxy_set_header ??Host ??????????????$host;
????proxy_set_header ??X-Forwarded-For ???$proxy_add_x_forwarded_for;
????proxy_set_header ??X-Forwarded-Proto ?http;
}
error_page ??500 502 503 504 ?/50x.html;
location = /50x.html {
????root ??/usr/share/nginx/html;
?}
}
?
使用Dockerfile來安裝nginx
vi Dockerfile
# this is Dockerfile Infomation
FROM nginx
COPY default.conf /etc/nginx/conf.d/default.conf
?接著
?
安裝nginx并啟動
docker build -t wordpress-nginx .
docker run -d --name=wordpress-nginx --link=wordpress-app:wordpress-app -p 80:80 wordpress-nginx
指定了參數-p 80:80,這是告訴Docker暴露容器的80端口,這樣可以從Docker的宿主機器外部訪問該容器。
docker?ps
我們指定了參數-p 80:80,這是告訴Docker暴露容器的80端口,這樣可以從Docker的宿主機器外部訪問該容器。?
?
8、web瀏覽器訪問并安裝
- 三、?項目總結
?通過本次項目實踐,對Linux中Docker技術有了初步的認知,實施過程中出現了一系列問題包括虛擬機操作系統安裝失敗,用vi命令新建文件時命令不會使用,按照阿里云安裝文檔安裝docker加速器時失敗等等等,不過通過上網搜索資料,詢問同學等方式解決了,特別感謝林輝同學的指導。
整個環境的搭建用了兩天左右的時間,對我們嚴謹科研態度和團隊協作能力的培養有了很大幫助,另外對于虛擬機、linux系統、docker技術實現應用隔離與資源獨立的優點等知識點都有了初步認識,對后續的深入學習具有很大的幫助。
?
參考網址:http://www.open-open.com/lib/view/open1423537959420.html轉載于:https://www.cnblogs.com/simpleDi/p/6024901.html
總結
以上是生活随笔為你收集整理的深入浅出 Docker的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux 性能优化】利用perf和C
- 下一篇: Linux笔记(更新中)