激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機(jī)|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識(shí)|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - 服務(wù)器知識(shí) - 什么是docker Docker入門教程第一篇

什么是docker Docker入門教程第一篇

2020-09-30 23:33服務(wù)器技術(shù)網(wǎng) 服務(wù)器知識(shí)

什么是docker?這篇文章主要為大家分享了Docker簡(jiǎn)介與入門教程第一篇,感興趣的小伙伴們可以參考一下

Docker是個(gè)新生的事物,概念類似虛擬化。網(wǎng)上關(guān)于Docker入門的東西已經(jīng)很多了。不過本文探討了Docker的特點(diǎn)、特性、原理,還介紹了具有中國(guó)特色的安裝測(cè)試過程,另外還談到了Docker的社區(qū)生態(tài)和Dockerfile,并使用Dockerfile構(gòu)建一個(gè)nginx環(huán)境。

緣起

在幾個(gè)月前聽說Docker,但是一直沒有時(shí)間去研究,前一段時(shí)間趁著azure免費(fèi)試用,趕緊實(shí)驗(yàn)一下,但是卡在了ubuntu基礎(chǔ)鏡像的下載上(由于國(guó)內(nèi)網(wǎng)絡(luò)的特殊原因),所以也就擱淺了,這里把經(jīng)驗(yàn)和體會(huì)分享一下。

Docker簡(jiǎn)介

我覺得簡(jiǎn)單來說,Docker就是一個(gè)應(yīng)用程序執(zhí)行容器,類似虛擬機(jī)的概念。但是與虛擬化技術(shù)的不同點(diǎn)在于下面幾點(diǎn):

1.虛擬化技術(shù)依賴物理CPU和內(nèi)存,是硬件級(jí)別的;而docker構(gòu)建在操作系統(tǒng)上,利用操作系統(tǒng)的containerization技術(shù),所以docker甚至可以在虛擬機(jī)上運(yùn)行。
2.虛擬化系統(tǒng)一般都是指操作系統(tǒng)鏡像,比較復(fù)雜,稱為“系統(tǒng)”;而docker開源而且輕量,稱為“容器”,單個(gè)容器適合部署少量應(yīng)用,比如部署一個(gè)redis、一個(gè)memcached。
3.傳統(tǒng)的虛擬化技術(shù)使用快照來保存狀態(tài);而docker在保存狀態(tài)上不僅更為輕便和低成本,而且引入了類似源代碼管理機(jī)制,將容器的快照歷史版本一一記錄,切換成本很低。
4.傳統(tǒng)的虛擬化技術(shù)在構(gòu)建系統(tǒng)的時(shí)候較為復(fù)雜,需要大量的人力;而docker可以通過Dockfile來構(gòu)建整個(gè)容器,重啟和構(gòu)建速度很快。更重要的是Dockfile可以手動(dòng)編寫,這樣應(yīng)用程序開發(fā)人員可以通過發(fā)布Dockfile來指導(dǎo)系統(tǒng)環(huán)境和依賴,這樣對(duì)于持續(xù)交付十分有利。
5.Dockerfile可以基于已經(jīng)構(gòu)建好的容器鏡像,創(chuàng)建新容器。Dockerfile可以通過社區(qū)分享和下載,有利于該技術(shù)的推廣。

Docker的主要特性如下(摘自Docker:具備一致性的自動(dòng)化軟件部署):

文件系統(tǒng)隔離:每個(gè)進(jìn)程容器運(yùn)行在完全獨(dú)立的根文件系統(tǒng)里。
資源隔離:可以使用cgroup為每個(gè)進(jìn)程容器分配不同的系統(tǒng)資源,例如CPU和內(nèi)存。
網(wǎng)絡(luò)隔離:每個(gè)進(jìn)程容器運(yùn)行在自己的網(wǎng)絡(luò)命名空間里,擁有自己的虛擬接口和IP地址。
寫時(shí)復(fù)制:采用寫時(shí)復(fù)制方式創(chuàng)建根文件系統(tǒng),這讓部署變得極其快捷,并且節(jié)省內(nèi)存和硬盤空間。
日志記錄:Docker將會(huì)收集和記錄每個(gè)進(jìn)程容器的標(biāo)準(zhǔn)流(stdout/stderr/stdin),用于實(shí)時(shí)檢索或批量檢索。
變更管理:容器文件系統(tǒng)的變更可以提交到新的映像中,并可重復(fù)使用以創(chuàng)建更多的容器。無需使用模板或手動(dòng)配置。
交互式Shell:Docker可以分配一個(gè)虛擬終端并關(guān)聯(lián)到任何容器的標(biāo)準(zhǔn)輸入上,例如運(yùn)行一個(gè)一次性交互shell。
目前Docker正處在開發(fā)階段,官方不建議用于生產(chǎn)環(huán)境。另外,Docker是基于Ubuntu開發(fā)的,所以官方推薦將其安裝在Ubuntu的操作系統(tǒng)上,目前只能安裝在linux系統(tǒng)上。

Docker的使用入門

Docker官方的安裝指導(dǎo)挺詳細(xì)的。但是由于國(guó)內(nèi)的特殊情況,我這里基于這個(gè)安裝指導(dǎo),給出適用于國(guó)內(nèi)開發(fā)者的入門過程。基于Ubuntu Precise 12.04 (LTS) (64-bit),推薦這個(gè)版本,其他版本參考官方安裝手冊(cè)。

1、Docker的安裝
首先,Docker官方聲稱最好是運(yùn)行在Linux內(nèi)核3.8以上,所以要先進(jìn)行內(nèi)核升級(jí)

?
1
2
3
4
5
6
# install the backported kernel
sudo apt-get update
sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
 
# reboot
sudo reboot

添加Docker倉庫的key:

 

復(fù)制代碼 代碼如下:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9


添加鏡像,這里直接用俄羅斯的Yandex

 

?
1
2
sudo sh -c "echo deb http://mirror.yandex.ru/mirrors/docker/ docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update

安裝Docker

sudo apt-get install lxc-docker

一般上面的步驟不會(huì)有任何問題。

2、Docker鏡像下載

Docker運(yùn)行至少需要一個(gè)ubuntu的基礎(chǔ)鏡像,這個(gè)鏡像會(huì)在你初次嘗試執(zhí)行時(shí)自動(dòng)下載,不過從國(guó)內(nèi)直接用基本上就別想了,需要使用代理。這里用Docker中文社區(qū)提供的代理。出處1,出處2。

修改/etc/default/docker文件,取消注釋http_proxy的部分:

# If you need Docker to use an HTTP proxy, it can also be specified here.
export http_proxy=http://192.241.209.203:8384/ 
經(jīng)過筆者測(cè)試,上面這個(gè)代理也不是很穩(wěn)定,可能用的人比較多吧。

可用的代理地址(持續(xù)關(guān)注中)

http://192.241.209.203:8384

然后,你就可以執(zhí)行下面的命令,測(cè)試執(zhí)行了,由于代理不是很穩(wěn)定,可能需要多嘗試幾次(淡定):

sudo docker run -i -t ubuntu /bin/bash

下面這個(gè)截圖是我成功pull完成,并測(cè)試hello world成功(大概嘗試了3-4次):

什么是docker Docker入門教程第一篇

Docker的社區(qū)和生態(tài)

倉庫和鏡像

評(píng)估一項(xiàng)開源技術(shù)很大程度上需要關(guān)注它的社區(qū)和生態(tài)。Docker的生態(tài)是通過推送和拉取特定的“鏡像(image)包”來展開的。你可以從docker index上搜索需要的鏡像。也可以通過下面的命令搜索:

sudo docker search

鏡像可以看作是包含有某些軟件的容器系統(tǒng),比如ubuntu就是一個(gè)官方的基礎(chǔ)鏡像,很多鏡像都是基于這個(gè)鏡像“衍生”,該鏡像包含基本的ubuntu系統(tǒng)。再比如,hipache是一個(gè)官方的鏡像容器,運(yùn)行后可以支持http和websocket的代理服務(wù),而這個(gè)鏡像本身又基于ubuntu。

通過pull來拉取鏡像,將鏡像下載到本地,比如

sudo docker pull hipache

通過images查看現(xiàn)在有哪些鏡像:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo docker images
 
REPOSITORY   TAG     IMAGE ID   CREATED    VIRTUAL SIZE
ubuntu    13.10    9f676bd305a4  6 weeks ago   178 MB
ubuntu    saucy    9f676bd305a4  6 weeks ago   178 MB
ubuntu    13.04    eb601b8965b8  6 weeks ago   166.5 MB
ubuntu    raring    eb601b8965b8  6 weeks ago   166.5 MB
ubuntu    12.10    5ac751e8d623  6 weeks ago   161 MB
ubuntu    quantal    5ac751e8d623  6 weeks ago   161 MB
ubuntu    10.04    9cc9ea5ea540  6 weeks ago   180.8 MB
ubuntu    lucid    9cc9ea5ea540  6 weeks ago   180.8 MB
ubuntu    12.04    9cd978db300e  6 weeks ago   204.4 MB
ubuntu    latest    9cd978db300e  6 weeks ago   204.4 MB
ubuntu    precise    9cd978db300e  6 weeks ago   204.4 MB

上面的都是鏡像,都從屬于ubuntu倉庫(一般倉庫名應(yīng)該是username/repository格式,如果是直接以repository作為倉庫名的,是指官方發(fā)布的倉庫)。我們拉取ubuntu的時(shí)候,實(shí)際上是把倉庫里的鏡像都拉下來了。每個(gè)鏡像都有一個(gè)唯一的IMAGE ID,和一個(gè)易于記憶的TAG,可以通過IMAGE ID的前幾位或者repository:TAG來標(biāo)識(shí)一個(gè)鏡像。

Dockerfile和通過Dockerfile來構(gòu)建Nginx容器
除了pull,鏡像也可以通過"編譯"得到,這里的"編譯"是指一種構(gòu)建行為,通過手動(dòng)編寫或者從github獲取Dockerfile來構(gòu)建一個(gè)鏡像。可以把Dockerfile看成是一個(gè)腳本,這個(gè)腳本會(huì)在容器每次啟動(dòng)時(shí)執(zhí)行。一般在Dockerfile里面需要編寫基礎(chǔ)軟件的安裝腳本和配置腳本。下面這個(gè)Dockerfile是個(gè)例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#
# Ubuntu Dockerfile
#
#
 
# Pull base image.
FROM ubuntu:12.10
 
# Update OS.
RUN echo "deb http://archive.ubuntu.com/ubuntu quantal main universe multiverse" > /etc/apt/sources.list
RUN apt-get update
RUN apt-get upgrade -y
 
# Install basic packages.
RUN apt-get install -y software-properties-common
RUN apt-get install -y curl git htop unzip vim wget
 
# Add files.
ADD root/.bashrc /root/.bashrc
ADD root/.gitconfig /root/.gitconfig
ADD root/scripts /root/scripts
 
# Set working directory.
ENV HOME /root
WORKDIR /root

FROM指令表示這次構(gòu)建需要基于ubuntu倉庫的12.10這個(gè)TAG的鏡像,如果本地不存在這個(gè)鏡像的話,會(huì)自動(dòng)下載鏡像。鏡像實(shí)際上就是編譯好的結(jié)果。向上面這個(gè)Dockerfile,在原始ubuntu的基礎(chǔ)上安裝了很多常用的軟件。

docker官方有Dockerfile的教程:https://www.docker.com/what-docker

實(shí)踐

首先確保你已經(jīng)完成上面的安裝步驟,并拉取到基礎(chǔ)鏡像ubuntu:12.10。

現(xiàn)在我們用上面的Dockerfile來構(gòu)建這個(gè)倉庫(上面的Dockerfile實(shí)際上是github dockerfile項(xiàng)目的基本倉庫dockerfile/ubuntu,所下面的命令直接從github下載Dockerfile來構(gòu)建)

 

復(fù)制代碼 代碼如下:
sudo docker build -t="dockerfile/ubuntu" github.com/dockerfile/ubuntu

 

 

下面是最后構(gòu)建成功時(shí)的輸出:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
...
Processing triggers for ureadahead ...
 ---> 0a4392cf8e2d
Step 6 : ADD root/.bashrc /root/.bashrc
 ---> b0e86f348c09
Step 7 : ADD root/.gitconfig /root/.gitconfig
 ---> e2a9c001d457
Step 8 : ADD root/scripts /root/scripts
 ---> 678febabdbdc
Step 9 : ENV HOME /root
 ---> Running in c4afef311cf1
 ---> eaa3ae3277a8
Step 10 : WORKDIR /root
 ---> Running in d50c273c75b8
 ---> c9ecf5bc3227
Successfully built c9ecf5bc3227
Removing intermediate container 1a3d1f794c49
Removing intermediate container 9f72df8abb63
Removing intermediate container 5694d1e3e77e
Removing intermediate container 6a184821f89c
Removing intermediate container 8195bd05fc36
Removing intermediate container d50c273c75b8
Removing intermediate container 70de07353ecf
Removing intermediate container 73e3f6204613
Removing intermediate container 5dd948415981
Removing intermediate container c4afef311cf1

此時(shí)會(huì)多出一個(gè)倉庫:

?
1
2
3
4
sudo docker images
REPOSITORY   TAG     IMAGE ID   CREATED    VIRTUAL SIZE
dockerfile/ubuntu latest    c9ecf5bc3227  About a minute ago 294.2 MB
...

現(xiàn)在我們可以來構(gòu)建dockerfile/nginx了(當(dāng)然,從一開始你就可以直接pull這個(gè)鏡像)

sudo docker build -t="dockerfile/nginx" github.com/dockerfile/nginx

完成后,會(huì)看到編譯好的鏡像:

?
1
2
3
4
5
sudo docker images
REPOSITORY   TAG     IMAGE ID   CREATED    VIRTUAL SIZE
dockerfile/nginx latest    68508350c656  About a minute ago 308.3 MB
dockerfile/ubuntu latest    c9ecf5bc3227  16 minutes ago  294.2 MB
...

現(xiàn)在是時(shí)候看到真正的效果了!用下面這個(gè)命令運(yùn)行容器:

sudo docker run -d -p 80:80 dockerfile/nginx

這個(gè)命令會(huì)以daemon的方式運(yùn)行容器,通過下面命令查看正在運(yùn)行的容器:

?
1
2
3
sudo docker ps
CONTAINER ID  IMAGE      COMMAND    CREATED    STATUS    PORTS    NAMES
98c474a7dd6a  dockerfile/nginx:latest nginx    6 seconds ago  Up 6 seconds  0.0.0.0:80->80/tcp trusting_hawking

訪問你主機(jī)的80端口,可以看到nginx的歡迎頁面了!這時(shí),我們來看看本機(jī)的進(jìn)程sudo ps -ef:

?
1
2
3
4
5
6
root  1428 952 0 15:19 ?  00:00:00 nginx: master process nginx
root  1429 417 0 15:19 ?  00:00:00 /sbin/udevd --daemon
www-data 1441 1428 0 15:19 ?  00:00:00 nginx: worker process
www-data 1442 1428 0 15:19 ?  00:00:00 nginx: worker process
www-data 1443 1428 0 15:19 ?  00:00:00 nginx: worker process
www-data 1444 1428 0 15:19 ?  00:00:00 nginx: worker process

似乎有些接近事物的本質(zhì)了!nginx的進(jìn)程實(shí)際上是在本機(jī)上的,這意味著,容器中程序的執(zhí)行仍然是使用本機(jī)操作系統(tǒng)的,容器并不自己構(gòu)建操作系統(tǒng),而是以某種隔離的方式依賴本機(jī)操作系統(tǒng)工作。這就是Docker和虛擬機(jī)的本質(zhì)區(qū)別。

你可以像下面這樣,將本機(jī)的目錄映射給這個(gè)"nginx容器"。<sites-enabled-dir>目錄下應(yīng)該有nginx的配置文件片段

 

復(fù)制代碼 代碼如下:
docker run -d -p 80:80 -v <sites-enabled-dir>:/etc/nginx/sites-enabled -v <log-dir>:/var/log/nginx dockerfile/nginx

 

PS:這步筆者沒有成功,日志路徑是可以map的,但是sites-enable-dir中的配置始終不行。繼續(xù)診斷中。
鏡像的共享與Dockfile的分發(fā)
可以共享你的鏡像和用來構(gòu)建的Dockfile分享給社區(qū):

Docker index是官方的鏡像目錄,可以從里面得到大量的預(yù)編譯好的鏡像
Dockerfile Project一個(gè)托管Dockerfile的倉庫集合

原理
總的來說Docker的核心技術(shù)如下:

命名空間
AUFS(advanced multi layered unification filesystem)
cgroup

由于本人才疏學(xué)淺,有興趣的朋友可以擴(kuò)展閱讀一下,一定會(huì)對(duì)Docker有更深刻的認(rèn)識(shí)的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 狠狠干五月 | h视频免费在线观看 | 国产午夜精品在线 | 特黄一区二区三区 | 免费的毛片 | 亚洲人成中文字幕在线观看 | 亚洲成人福利电影 | 日韩精品一二三 | 成人福利在线免费观看 | 日本久久精品视频 | 日本精品久久久久 | 成年毛片| 亚洲一级电影在线观看 | 日韩中字幕 | 亚洲一区二区三区日本久久九 | 最近免费观看高清韩国日本大全 | 久精品久久 | 国产精品中文在线 | 国产精品www | 三级国产三级在线 | 国产免费高清 | 最新视频一区二区 | 日日操日日操 | 久久久久一本一区二区青青蜜月 | 久久久婷婷 | 亚洲国产成人久久一区www妖精 | 国产一级毛片高清视频 | 国产精品久久久久久久久久三级 | 91 在线观看| 一级毛片电影网 | 国产精品毛片无码 | 亚洲精品久久久久久久久久 | 国内精品久久久久久久久久 | 91精品久久久久久久久 | 九九综合九九 | 免费a级作爱片免费观看欧洲 | 欧美成人精品欧美一级 | 成人做爰www免费看 成人午夜视频免费看 | 成人在线免费观看网址 | 欧美亚洲国产一区二区三区 | 99精品视频在线观看免费 |