成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Docker - 通往新世界的大門

cncoder / 1652人閱讀

摘要:刪除鏡像表示強行刪除是將鏡像保存成文件加載鏡像結(jié)語是個好東西,以上僅僅是一些常用基本操作,但它就像通往新世界的大門,為大規(guī)模集群化部署提供了可能,以后有空再寫一下容器編排的文章,敬請關(guān)注

引言

相信很多技術(shù)同學在開發(fā)時都會使用虛擬機,配置好一個開發(fā)環(huán)境,以后使用時只需要啟動虛擬機就好了。但虛擬機動輒幾個GB,大一點兒的甚至幾百個GB,而且只要其中任意的虛擬機文件損壞,整個虛擬機就沒辦法啟動了。你可能說應該經(jīng)常備份,這的確是個好主意。但有沒有更好的辦法呢?今天鋼哥就帶著大家了解一下Docker(容器),看看它是否比傳統(tǒng)的虛擬機更適合我們。

什么是容器?

顧名思義,容器就是用來裝東西的。我們平時喝水的杯子就是容器,只不過杯子這個“容器”是用來裝水的,而我們這里的容器裝的是應用程序。

容器有什么特點?

自包含性:它打包了應用程序的所有依賴,可以直接運行;

可移植性:容器可以在幾乎任何地方以相同的方式運行,這就確保了在開發(fā)、測試和生產(chǎn)環(huán)境都可以擁有完全一樣的運行環(huán)境;

相互隔離性:多個容器間默認是相互隔離的,即使運行在同一臺主機上;

輕量級特性:秒級啟動,占用資源少;

容器與虛擬機有什么區(qū)別?

很多同學會覺得,容器能做的事虛擬機也能做啊,到底有什么區(qū)別呢?

虛擬機的缺點

占用資源多;

冗余步驟多;

啟動慢;

容器的優(yōu)點

占用資源少;

提及小;

啟動快;

下面是 Docker 官網(wǎng)截圖(后文會解釋什么是 Docker)

從這張圖我們可以看出,傳統(tǒng)的虛擬機非常重,每一個虛擬機都是一臺獨立的操作系統(tǒng)。而 Docker 則不同,它會重用宿主機已有的系統(tǒng)資源,同時又完美地隔離了不同的容器,所以實現(xiàn)起來非常輕,也便于被標準化。有同學會說,這跟傳統(tǒng)虛擬機也沒什么本質(zhì)差別啊,新的虛擬機罷了。其實不然,正是這種“輕量級”的特性,使其有機會成為新的標準化的應用發(fā)布方式。

上世紀五六十年代出現(xiàn)了集裝箱,看上去也沒什么技術(shù)含量。但正是因為集裝箱是一種標準化的物流方式,從而全球的海陸空運輸、碼頭裝卸等都圍繞著集裝箱形成了整個一個高效的物流體系,最終改變了世界貿(mào)易,促成了全球化。

Google的 Kubernetes(K8)現(xiàn)在已經(jīng)成為即成容器編排標準了,另外主流的容器編排工具還有 Docker Swarm 以及 Marathon/Mesos 。

什么是Docker?

終于回到我們今天的正題了,究竟什么是 Docker ?Docker 是使用 Go 語言開發(fā)的一種 Linux 容器封裝,提供簡單易用的使用接口,是目前最流行的 Linux 容器解決方案。

Docker 的使用場景

創(chuàng)建一致的開發(fā)、測試、生產(chǎn)環(huán)境;

創(chuàng)建資源隔離的運行時環(huán)境;

創(chuàng)建多用戶的平臺即服務(PaaS)的基礎(chǔ)設(shè)施;

創(chuàng)建軟件即服務(SaaS)的應用程序;

高性能、超大規(guī)模宿主機部署;

如何安裝 Docker

Docker 是一個開源的商業(yè)產(chǎn)品,有兩個版本:社區(qū)版(Community Edition,縮寫為 CE)和企業(yè)版(Enterprise Edition,縮寫為 EE)。企業(yè)版包含了一些收費服務,個人開發(fā)者一般用不到。下面的介紹都針對社區(qū)版。

Docker CE 的安裝非常簡單,具體步驟可參考官方文檔。

Mac

Windows

Ubuntu

Debian

CentOS

Fedora

其他 Linux 發(fā)行版

Docker 常用命令 查看 Docker 版本
docker version

拉取 Docker 鏡像

我們可以去 Docker Hub 站點拉取公共的 Docker 鏡像。比如:搜索 nginx ,拉取官方的 nginx 鏡像。

docker pull nginx

查看 Docker 鏡像
docker images

運行 Docker 鏡像
docker run -it -v /Users/kwang/docker:/usr/share/nginx/html/hello -p 80:80 -d nginx:latest
-i以交互模式運行容器,通常與 -t 同時使用;
-t為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
-p本機端口:容器端口 映射;
-d后臺運行,并返回容器ID;
-v可以將本機目錄映射到容器內(nèi)。比如這里我就把我本機的/home/kwang/docker目錄映射到/usr/share/nginx/html/hello/目錄下;

我在/home/kwang/docker/目錄下創(chuàng)建了一個靜態(tài)頁面index.html,內(nèi)容僅僅輸出hello world!。而/usr/share/nginx/html/目錄是容器內(nèi)的 nginx 網(wǎng)頁根目錄,這樣設(shè)置的目的是為了演示目錄映射。

運行成功后,命令行返回一個 Docker 容器的 ID(這個ID是隨機生成的,所以你看到的肯定跟我的不一樣)。

查看運行中的 Docker 容器
docker ps -a

可以看到我們剛才的鏡像已經(jīng)成功啟動起來了,并且本機0.0.0.0:80端口已經(jīng)成功映射到容器里的80端口了,該容器ID的前幾位是7fcac910ad6a

打開本機瀏覽器,輸入:http://localhost:80,可以看到nginx已經(jīng)啟動好了

如果更改瀏覽器地址:http://localhost/hello/,則可以看到我事先準備好的index.html

暫停運行中的 Docker 容器
docker stop 7fcac910ad6a

7fcac910ad6a是要暫停的容器ID,可以看到容器狀態(tài)已經(jīng)變成Exited退出狀態(tài)了。

啟動已暫停的 Docker 容器
docker start 7fcac910ad6a
刪除運行中的 Docker 容器
docker rm -f 7fcac910ad6a
-f參數(shù)是強行刪除。
以命令行模式進入容器

你可以用命令行模式進入到容器內(nèi)部,就好像登錄到一臺新的 Linux 一樣。

docker exec -it 9ca4f91d4027 bash
exec是在運行中的容器中運行一個命令,該命令需要接受兩個參數(shù)。第一個是容器ID(這里是9ca4f91d4027),第二個參數(shù)是要執(zhí)行的命令(這里是bash)。執(zhí)行完畢后,我們就以bash命令行模式進入到了容器內(nèi)部。

當然,你隨時可以用exit命令從容器中退出。
從運行中的 Docker 容器生成 Docker 鏡像
docker commit -m "kenny nginx" -a "kenny" 9ca4f91d4027 kenny/nginx:1.0
-m 是說明信息
-a 是用戶信息
kenny/nginx:1.0 分別是鏡像的用戶名、倉庫名和tag信息

可以看到 Docker 鏡像已成功生成。

基于 Dockerfile 生成 Docker 鏡像

我們可以創(chuàng)建一個名為Dockerfile的文件,編輯內(nèi)容如下:

# 基于哪個Docker鏡像生成新鏡像
FROM nginx:latest

# 構(gòu)建者的基本信息
MAINTAINER kenny.wang

# 在build這個鏡像時執(zhí)行的操作
RUN apt-get update

# 拷貝本地文件到鏡像中
COPY ./index.html /usr/share/nginx/html/

執(zhí)行build命令生成 Docker 鏡像。

docker build -t="kenny/nginx:2.0" .
-t 用來指定用戶信息、tag等
. 是當前目錄,用來尋找 Dockerfile

再次用docker images查看,新的鏡像已成功生成。

刪除 Docker 鏡像
docker rmi -f 83a85d2939a2
-f 表示強行刪除
83a85d2939a2 是 docker image id
將 Docker 鏡像保存成 tar 文件
docker save -o kenny_nginx.tar kenny/nginx:2.0
加載 Docker 鏡像
docker load -i kenny_nginx.tar
結(jié)語

Docker 是個好東西,以上僅僅是一些常用基本操作,但它就像通往新世界的大門,為大規(guī)模集群化部署提供了可能,以后有空再寫一下容器編排的文章,敬請關(guān)注!


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27302.html

相關(guān)文章

  • 邁入Docker、Kubernetes容器世界大門

    說明 ? 本文通過簡單的示例,帶領(lǐng)初學者快速邁入Docker、Kubernetes(K8S)容器世界的大門。假設(shè),你已擁有一個K8S集群,否則,可通過minikube或minishift快速搭建一實驗環(huán)境。 Docker Docker與K8S ? Docker本質(zhì)上是一種虛擬化技術(shù),類似于KVM、XEN、VMWARE,但其更輕量化,且將Docker部署在Linux環(huán)境時,其依賴于L...

    MASAILA 評論0 收藏0

發(fā)表評論

0條評論

cncoder

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<