中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Docker詳解與安裝

云計(jì)算

一、揭開(kāi) Docker 的神秘面紗
Docker 是在Linux容器中運(yùn)行的應(yīng)用的開(kāi)源工具,是一種輕量級(jí)的“虛擬機(jī)”誕生于2013年,短短幾年時(shí)間,已經(jīng)成為了開(kāi)源社區(qū)最火爆的項(xiàng)目。
.
那么為什么Docker會(huì)這么火呢?看看下圖就知道了:

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的互助網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

作為一種輕量級(jí)的虛擬機(jī)方式,Docker 與傳統(tǒng)虛擬機(jī)相比具有顯著的優(yōu)勢(shì)。
Docker 之所以擁有眾多優(yōu)勢(shì),與操作系統(tǒng)虛擬化自身的特點(diǎn)是分不開(kāi)的。傳統(tǒng)虛擬機(jī)需要額外的虛擬機(jī)管理程序和虛擬機(jī)操作系統(tǒng)層,而Docker容器是直接在操作系統(tǒng)層面上實(shí)現(xiàn)的虛擬化。

Docker 的使用場(chǎng)景
現(xiàn)在開(kāi)發(fā)者需要能方便地創(chuàng)建運(yùn)行在云平臺(tái)上的應(yīng)用,必須要脫離底層硬件,同時(shí)還需要任何時(shí)間地點(diǎn)可獲取這些資源,這正是Docker所能提供的。Docker 的容器技術(shù)可以在一臺(tái)主機(jī)上輕松為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器。通過(guò)這中容器打包應(yīng)用程序,意味著簡(jiǎn)化了重新部署、調(diào)試這些瑣碎的重復(fù)工作,極大的提高了工作效率。例如,服務(wù)器從騰訊云遷移到阿里云,如果采用Docker容器技術(shù),遷移只需要在新的服務(wù)器上啟動(dòng)需要的容器即可。
二、Docker 的核心概念:
1.鏡像
Docker的鏡像(mage) 是創(chuàng)建容器的基礎(chǔ),類似虛擬機(jī)的快照.可以理解為是一個(gè) 面向Docker 容器引擎的只讀模板。比如,一個(gè)鏡像可以是一個(gè)完整的 CentOS操作系統(tǒng)環(huán)境,稱為一個(gè)CentOS 鏡像;可以是一個(gè)安裝了mysql的應(yīng)用程序.稱為一個(gè)MySOL鏡像.等等
Doacker提供了簡(jiǎn)單的機(jī)制來(lái)創(chuàng)建和更新現(xiàn)有的鏡像.用戶也可以從網(wǎng)上下載已經(jīng)做好的應(yīng)用鏡像來(lái)直接使用。
2.容器
Docker的容器(Conainer! 是從鏡像創(chuàng)建的運(yùn)行實(shí)例,它可以被啟動(dòng).停止和刪除。所創(chuàng)建的每個(gè)容器都是相互隔離.互不可見(jiàn),可以保證安全性的平臺(tái)??梢园讶萜骺醋饕粋€(gè)簡(jiǎn)易版的Linux環(huán)境,Docker 利用容器來(lái)運(yùn)行和隔離應(yīng)用。
3.倉(cāng)庫(kù)
Docker倉(cāng)庫(kù)(Repository) 是用來(lái)集中保存鏡像的地方,當(dāng)創(chuàng)建了自己的鏡像之后,可以使用push 命令將它上傳到公有倉(cāng)庫(kù)(Pbli) 或者私有倉(cāng)庫(kù)(Private), 這樣一來(lái)當(dāng)下次要 在另外一臺(tái)機(jī)器上使用這個(gè)鏡像時(shí),只需要從倉(cāng)庫(kù)上拉取下來(lái)就可以了。
倉(cāng)庫(kù)注冊(cè)服務(wù)器(Registry) 是存放倉(cāng)庫(kù)的地方,其中包含了多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)集中存放某一類鏡像,并且使用不同的標(biāo)簽(Tag) 來(lái)區(qū)分它們,目前的公共倉(cāng)庫(kù)是Docker Hb,存放了數(shù)量龐大的鏡像供用戶下載使用。
三、安裝Docker
Centos 系統(tǒng)下安裝 Docker 可以有兩種方式:一種是使用 curl 獲得 Docker 的安裝腳本進(jìn)行安裝。另一種是使用 YUM 倉(cāng)庫(kù)來(lái)安裝Docker。
注意:目前Docker只能支持64位操作系統(tǒng)
注意:目前Docker只能支持64位操作系統(tǒng)
注意:目前Docker只能支持64位操作系統(tǒng)
這里我使用的是Docker自己的YUM源進(jìn)行安裝
開(kāi)始安裝:

[root@test /]# yum -y install docker             # 安裝docker
[root@test /]# systemctl start docker              # 啟動(dòng)服務(wù)
[root@test /]# systemctl enable docker           # 設(shè)為開(kāi)機(jī)自啟動(dòng)
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

安裝好的Docker有兩個(gè)程序:Docker服務(wù)端和Docker客戶端。其中Docker服務(wù)進(jìn)程,管理著所有的容器。Docker 客戶端則扮演著Docker服務(wù)端的遠(yuǎn)程控制器,可以用來(lái)控制 Docker 的服務(wù)端進(jìn)程。大部分的情況下,Docker服務(wù)端和客戶端運(yùn)行在一臺(tái)機(jī)器上。

[root@test /]# docker version 
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64
 Go version:      go1.9.4
 Git commit:      8633870/1.13.1
 Built:           Fri Sep 28 19:45:08 2018
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64
 Go version:      go1.9.4
 Git commit:      8633870/1.13.1
 Built:           Fri Sep 28 19:45:08 2018
 OS/Arch:         linux/amd64
 Experimental:    false

Docker 鏡像操作
Docker 運(yùn)行容器前需要本地存在對(duì)應(yīng)的鏡像,如果不存在本地鏡像,Docker 就會(huì)嘗試從默認(rèn)鏡像倉(cāng)庫(kù) https://hub.docker.com 處下載,這是一個(gè)由 Docker 官方維護(hù)的一個(gè)公共倉(cāng)庫(kù)。
1、搜索鏡像:

[root@test /]# docker search dhcp        # 命令格式 docker search 關(guān)鍵字
INDEX       NAME                                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/networkboot/dhcpd                    Suitable for running a DHCP server for you...   43                   [OK]
docker.io   docker.io/joebiellik/dhcpd                     DHCP server running on Alpine Linux             15                   [OK]
docker.io   docker.io/gns3/dhcp                            A DHCP container for GNS3 using dnsmasq         3                    [OK]
...............      // 省略部分內(nèi)容

2、獲取鏡像:
搜索到符合的鏡像,可以使用docker pull 進(jìn)行下載到本地

[root@test /]# docker pull docker.io/networkboot/dhcpd
Using default tag: latest
Trying to pull repository docker.io/networkboot/dhcpd ... 
latest: Pulling from docker.io/networkboot/dhcpd
898c46f3b1a1: Downloading 5.602 MB/32.47 MB
63366dfa0a50: Download complete 
041d4cd74a92: Download complete 
6e1bee0f8701: Download complete 
114483241095: Downloading 3.693 MB/6.702 MB
ef446bdcb1f0: Waiting 

3、查看鏡像信息:

[root@test /]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
docker.io/networkboot/dhcpd   latest              52cbff801df2        8 months ago        105 MB
從回顯的信息中可以讀出:
REPOSITORY:鏡像屬于的倉(cāng)庫(kù)
TAG:鏡像的標(biāo)簽信息,標(biāo)記同一個(gè)倉(cāng)庫(kù)的不同鏡像
IMAGE ID :鏡像的唯一ID號(hào),唯一標(biāo)識(shí)了該鏡像
CREATED:鏡像創(chuàng)建時(shí)間
VIRTUAL SIZE:鏡像大小

用戶可根據(jù)鏡像的唯一標(biāo)識(shí)ID號(hào),獲取鏡像的詳細(xì)信息:

[root@test /]# docker inspect 52cbff801df2
[
    {
        Id: sha256:52cbff801df2c6e2da3866d9f9476f20f190f64a0e886fbdfa79d843befa666a,
        RepoTags: [
            docker.io/networkboot/dhcpd:latest
        ],
...............................  // 省略部分內(nèi)容

鏡像的詳細(xì)信息包含了創(chuàng)建時(shí)間、系統(tǒng)版本、主機(jī)名、域名、用戶、卷、標(biāo)簽、操作系統(tǒng)、設(shè)備ID等各種信息。
為了方便使用,可為本地的鏡像添加新標(biāo)簽:

[root@test /]# docker tag docker.io/networkboot/dhcpd  dhcp:dhcp
[root@test /]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
dhcp                          dhcp                52cbff801df2        8 months ago        105 MB
docker.io/networkboot/dhcpd   latest              52cbff801df2        8 months ago        105 MB

4、刪除鏡像:

命令格式:
docker  rmi  倉(cāng)庫(kù)名稱:標(biāo)簽
或者
docker rmi   鏡像ID號(hào)

當(dāng)使用 docker rmi 命令后面跟上鏡像的 ID 號(hào)時(shí),必須確保該鏡像沒(méi)有被容器正在使用才能進(jìn)行,刪除時(shí)系統(tǒng)會(huì)先刪除所有指向該鏡像的標(biāo)簽,然后刪除該鏡像文件本身。如果該鏡像已經(jīng)被容器使用,正確的做法是先刪除依賴該鏡像的所有容器,再去刪除鏡像。
5、存出和載入鏡像:
存出

[root@test /]# docker save -o /tmp/dhcp docker.io/networkboot/dhcpd
[root@test /]# ll -d /tmp/dhcp 
-rw------- 1 root root 107891712 Nov 25 17:56 /tmp/dhcp

載入

[root@test tmp]# docker load --input dhcp
[root@test tmp]# docker load < dhcp

6、上傳鏡像:
本地存出的鏡像越來(lái)越多,就需要指定一個(gè)專門(mén)存放這些鏡像的地方——倉(cāng)庫(kù),目前比較方便的就是公共倉(cāng)庫(kù),默認(rèn)上傳到 DockerHub 官方倉(cāng)庫(kù),需要注冊(cè)使用公共倉(cāng)庫(kù)的賬號(hào),可以使用docker login 命令來(lái)輸入用戶名、密碼和郵箱來(lái)注冊(cè)和登陸。在上傳鏡像之前還需要對(duì)本地鏡像添加新的標(biāo)簽,然后再使用docker push來(lái)進(jìn)行上傳。
例如: 在公共倉(cāng)庫(kù)上已經(jīng)注冊(cè)了一個(gè)賬號(hào),本例賬號(hào)為test,鏡像標(biāo)簽為docker/dhcp:centos7.3
(1)首先使用賬號(hào)登錄官方倉(cāng)庫(kù):

[root@test /]# docker login 
Login with your Docker ID to push and pull images from Docker Hub. If you don\'t have a Docker ID, head over to https://hub.docker.com to create one.
Username: test                       # 輸入賬號(hào)
Password:                               # 輸入密碼
Login  Succeeded

(2)成功登陸后就可以上傳鏡像:

[root@test /]# docker push docker/dhcp:centos7.3

Docker 容器操作
容器是Docker的另一個(gè)核心概念,簡(jiǎn)單來(lái)說(shuō),容器就是鏡像的一個(gè)運(yùn)行實(shí)例,是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用及它們所必須的運(yùn)行環(huán)境,包括文件系統(tǒng)、系統(tǒng)類庫(kù)、shell環(huán)境等。鏡像是只讀模板,而容器會(huì)給這個(gè)只讀模板一個(gè)額外的可寫(xiě)層。
1、容器的創(chuàng)建與啟動(dòng):
Docker 的創(chuàng)建就是鏡像加載到容器的過(guò)程,Docker 的容器十分輕量級(jí),用戶可以隨時(shí)創(chuàng)建或刪除。新創(chuàng)建的容器默認(rèn)處于停止?fàn)顟B(tài),不運(yùn)行任何程序,需要在其中發(fā)起一個(gè)進(jìn)程來(lái)啟動(dòng)容器,這個(gè)進(jìn)程就是該容器的唯一進(jìn)程,所以當(dāng)該進(jìn)程結(jié)束的時(shí)候,容器也會(huì)完全停止。停止的容器可以重新啟動(dòng)并保留原來(lái)的修改。

[root@test /]# docker create -it docker.io/networkboot/dhcpd /bin/bash           # 創(chuàng)建容器
08ab448cd0be320b24d6878b377bfa6957127c7ffb4c7e050e64340deeee1562
# -i 表示讓容器的輸入保持打開(kāi);-t 表示讓Docker分配一個(gè)偽終端

如果此處創(chuàng)建容器命令報(bào)錯(cuò)“WARNING: IPv4 forwarding is disabled.Networking will notwork." ,就使用vi編輯器打開(kāi)/usr/lib/sysctl.d/00-system.conf文件,在其中添加net.ipv4.ip_ forward=1, 然后使用service network start命令重啟網(wǎng)絡(luò)服務(wù)。

使用docker create 命令創(chuàng)建新容器后會(huì)返回一個(gè)唯一的ID。

[root@test /]# docker ps -a                 # 查看所有容器的運(yùn)行狀態(tài)        -a 可以列出系統(tǒng)最近一次啟動(dòng)的容器
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS               NAMES
08ab448cd0be        docker.io/networkboot/dhcpd   /entrypoint.sh /b...   5 minutes ago       Created                                 keen_payne
命令格式: docker   start   容器的ID/名稱
[root@test /]# docker start 08ab448cd0be                # 可跟容器的ID與名稱
08ab448cd0be
[root@test /]# docker ps -a | grep 08ab448cd0be 
08ab448cd0be        docker.io/networkboot/dhcpd   /entrypoint.sh /b...   8 minutes ago       Up About a minute                       keen_payne
# 容器啟動(dòng)后,可以看到容器狀態(tài)一欄已經(jīng)變成了 UP ,表示容器已經(jīng)處于啟動(dòng)狀態(tài)

2、容器的運(yùn)行與停止:

[root@test /]# docker stop 08ab448cd0be
08ab448cd0be
[root@test /]# docker ps -a 
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                     PORTS               NAMES
08ab448cd0be        docker.io/networkboot/dhcpd   /entrypoint.sh /b...   10 minutes ago      Exited (0) 5 seconds ago                       keen_payne
# 查看容器的運(yùn)行狀態(tài),可以看出容器處于Exited,中止?fàn)顟B(tài)。

3、容器的進(jìn)入:

[root@test /]# docker exec -it 08ab448cd0be /bin/bash
#  -i 表示讓容器的輸入保持打開(kāi);-t 表示讓Docker分配一個(gè)偽終端
root@08ab448cd0be:/# ls                  # 已經(jīng)進(jìn)入到了容器中
bin  boot  dev  entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@08ab448cd0be:/# exit
exit
[root@test /]# 

4、容器的導(dǎo)出與導(dǎo)入:
用戶可以將任何一個(gè) Docker 容器從一臺(tái)機(jī)器遷移到另一臺(tái)機(jī)器。在遷移過(guò)程中,首先需要將已經(jīng)創(chuàng)建好的容器導(dǎo)出為文件,可以使用 docker export 命令實(shí)現(xiàn),無(wú)論這個(gè)容器是處于運(yùn)行還是停止均可導(dǎo)出。導(dǎo)出之后可將導(dǎo)出文件傳輸?shù)狡渌麢C(jī)器,通過(guò)相應(yīng)的導(dǎo)入命令實(shí)現(xiàn)容器的遷移。

命令格式:docker export  容器ID/名稱>文件名
[root@test /]# docker export  08ab448cd0be>centos7dhcp
[root@test /]# ll -d centos7dhcp 
-rw-r--r-- 1 root root 87825920 Nov 25 19:58 centos7dhcp

導(dǎo)出的文件從A機(jī)器復(fù)制到B機(jī)器,之后使用docker import 命令導(dǎo)入,成為鏡像 。

命令格式:cat    文件名 | docker  import   - 生成的鏡像名稱:標(biāo)簽
[root@test /]# cat centos7dhcp | docker import - centos7:dhcp
sha256:e7193f77c973a89dd2d1046f09eb4328798f4ee9dff92ad13514fb7268bc3c27
[root@test /]# docker images | grep centos7
centos7                       dhcp                e7193f77c973        17 seconds ago      84.7 MB

5、容器的刪除:

命令格式:docker  rm   容器ID/名稱
[root@test /]# docker stop 08ab448cd0be
08ab448cd0be
[root@test /]# docker rm 08ab448cd0be
08ab448cd0be
[root@test /]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
# 如果刪除一個(gè)正在運(yùn)行的容器,可以添加 -f 選項(xiàng)強(qiáng)制刪除,但是建議先將容器停止再做刪除操作

Docker 默認(rèn)的存儲(chǔ)目錄在/var/lib/docker ,Docker 的鏡像、容器、日志等內(nèi)容全部存儲(chǔ)在此,可以單獨(dú)使用大容量的的分區(qū)來(lái)存儲(chǔ)這些內(nèi)容,并且一般選擇建立LVM邏輯卷,從而避免 Docker 運(yùn)行過(guò)程中存儲(chǔ)目錄容量不足的問(wèn)題。

標(biāo)題名稱:Docker詳解與安裝
轉(zhuǎn)載注明:http://m.rwnh.cn/article24/cgiice.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、微信小程序響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
安徽省| 和政县| 梨树县| 米易县| 万州区| 浪卡子县| 永兴县| 罗源县| 平江县| 柳州市| 宕昌县| 商水县| 凯里市| 阿坝| 昂仁县| 泗水县| 府谷县| 衡东县| 岳西县| 奉化市| 哈尔滨市| 凤山市| 刚察县| 淮南市| 石林| 陈巴尔虎旗| 库车县| 临洮县| 新晃| 陈巴尔虎旗| 会泽县| 海宁市| 郸城县| 托克托县| 孝昌县| 宁化县| 靖江市| 三门县| 吴江市| 文登市| 翁牛特旗|