自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Docker(一):Docker入門教程

企業(yè)動(dòng)態(tài)
本文詳細(xì)解釋介紹Docker入門相關(guān)內(nèi)容,后期重點(diǎn)關(guān)注Docker在微服務(wù)體系中的使用。在了解Docker之前我們先考慮幾個(gè)問題:1、Docker是什么?2、為什么要使用Docker,它有什么優(yōu)勢(shì)?帶著這些問題我們來看看下面的內(nèi)容。

如今Docker的使用已經(jīng)非常普遍,特別在一線互聯(lián)網(wǎng)公司。使用Docker技術(shù)可以幫助企業(yè)快速水平擴(kuò)展服務(wù),從而到達(dá)彈性部署業(yè)務(wù)的能力。在云服務(wù)概念興起之后,Docker的使用場(chǎng)景和范圍進(jìn)一步發(fā)展,如今在微服務(wù)架構(gòu)越來越流行的情況下,微服務(wù)+Docker的***組合,更加方便微服務(wù)架構(gòu)運(yùn)維部署落地。

本文詳細(xì)解釋介紹Docker入門相關(guān)內(nèi)容,后期重點(diǎn)關(guān)注Docker在微服務(wù)體系中的使用。在了解Docker之前我們先考慮幾個(gè)問題:1、Docker是什么?2、為什么要使用Docker,它有什么優(yōu)勢(shì)?帶著這些問題我們來看看下面的內(nèi)容。

什么是Docker?

Docker 是***的軟件容器平臺(tái)。開發(fā)人員利用 Docker 可以消除協(xié)作編碼時(shí)“在我的機(jī)器上可正常工作”的問題。運(yùn)維人員利用 Docker 可以在隔離容器中并行運(yùn)行和管理應(yīng)用,獲得更好的計(jì)算密度。企業(yè)利用 Docker 可以構(gòu)建敏捷的軟件交付管道,以更快的速度、更高的安全性和可靠的信譽(yù)為 Linux 和 Windows Server 應(yīng)用發(fā)布新功能。

Docker 屬于 Linux 容器的一種封裝,提供簡(jiǎn)單易用的容器使用接口。它是目前***的 Linux 容器解決方案。Docker 將應(yīng)用程序與該程序的依賴,打包在一個(gè)文件里面。運(yùn)行這個(gè)文件,就會(huì)生成一個(gè)虛擬容器。程序在這個(gè)虛擬容器里運(yùn)行,就好像在真實(shí)的物理機(jī)上運(yùn)行一樣。有了 Docker,就不用擔(dān)心環(huán)境問題。

總體來說,Docker 的接口相當(dāng)簡(jiǎn)單,用戶可以方便地創(chuàng)建和使用容器,把自己的應(yīng)用放入容器。容器還可以進(jìn)行版本管理、復(fù)制、分享、修改,就像管理普通的代碼一樣。

Docker 最初是 dotCloud 公司創(chuàng)始人 Solomon Hykes 在法國(guó)期間發(fā)起的一個(gè)公司內(nèi)部項(xiàng)目,它是基于 dotCloud 公司多年云服務(wù)技術(shù)的一次革新,并于 2013 年 3 月以 Apache 2.0 授權(quán)協(xié)議開源,主要項(xiàng)目代碼在 GitHub 上進(jìn)行維護(hù)。Docker 項(xiàng)目后來還加入了 Linux 基金會(huì),并成立推動(dòng) 開放容器聯(lián)盟(OCI)。

Docker 自開源后受到廣泛的關(guān)注和討論,至今其 GitHub 項(xiàng)目已經(jīng)超過 4 萬 6 千個(gè)星標(biāo)和一萬多個(gè) fork。甚至由于 Docker 項(xiàng)目的火爆,在 2013 年底,dotCloud 公司決定改名為 Docker。Docker 最初是在 Ubuntu 12.04 上開發(fā)實(shí)現(xiàn)的;Red Hat 則從 RHEL 6.5 開始對(duì) Docker 進(jìn)行支持;Google 也在其 PaaS 產(chǎn)品中廣泛應(yīng)用 Docker。

為什么要使用Docker

容器除了運(yùn)行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時(shí)系統(tǒng)的開銷盡量小。傳統(tǒng)虛擬機(jī)方式運(yùn)行 10 個(gè)不同的應(yīng)用就要起 10 個(gè)虛擬機(jī),而Docker 只需要啟動(dòng) 10 個(gè)隔離的應(yīng)用即可。

具體說來,Docker 在如下幾個(gè)方面具有較大的優(yōu)勢(shì)。

1、更快速的交付和部署

對(duì)開發(fā)和運(yùn)維(devop)人員來說,最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運(yùn)行。

開發(fā)者可以使用一個(gè)標(biāo)準(zhǔn)的鏡像來構(gòu)建一套開發(fā)容器,開發(fā)完成之后,運(yùn)維人員可以直接使用這個(gè)容器來部署代碼。 Docker 可以快速創(chuàng)建容器,快速迭代應(yīng)用程序,并讓整個(gè)過程全程可見,使團(tuán)隊(duì)中的其他成員更容易理解應(yīng)用程序是如何創(chuàng)建和工作的。 Docker 容器很輕很快!容器的啟動(dòng)時(shí)間是秒級(jí)的,大量地節(jié)約開發(fā)、測(cè)試、部署的時(shí)間。

2、更高效的虛擬化

Docker 容器的運(yùn)行不需要額外的 hypervisor 支持,它是內(nèi)核級(jí)的虛擬化,因此可以實(shí)現(xiàn)更高的性能和效率。

3、更輕松的遷移和擴(kuò)展

Docker 容器幾乎可以在任意的平臺(tái)上運(yùn)行,包括物理機(jī)、虛擬機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等。 這種兼容性可以讓用戶把一個(gè)應(yīng)用程序從一個(gè)平臺(tái)直接遷移到另外一個(gè)。

4、更簡(jiǎn)單的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發(fā)和更新,從而實(shí)現(xiàn)自動(dòng)化并且高效的管理。

Docker vs VM

從下圖可以看出,VM是一個(gè)運(yùn)行在宿主機(jī)之上的完整的操作系統(tǒng),VM運(yùn)行自身操作系統(tǒng)會(huì)占用較多的CPU、內(nèi)存、硬盤資源。Docker不同于VM,只包含應(yīng)用程序以及依賴庫(kù),基于libcontainer運(yùn)行在宿主機(jī)上,并處于一個(gè)隔離的環(huán)境中,這使得Docker更加輕量高效,啟動(dòng)容器只需幾秒鐘之內(nèi)完成。由于Docker輕量、資源占用少,使得Docker可以輕易的應(yīng)用到構(gòu)建標(biāo)準(zhǔn)化的應(yīng)用中。但Docker目前還不夠完善,比如隔離效果不如VM,共享宿主機(jī)操作系統(tǒng)的一些基礎(chǔ)庫(kù)等;網(wǎng)絡(luò)配置功能相對(duì)簡(jiǎn)單,主要以橋接方式為主;查看日志也不夠方便靈活。

 

Docker 在容器的基礎(chǔ)上,進(jìn)行了進(jìn)一步的封裝,從文件系統(tǒng)、網(wǎng)絡(luò)互聯(lián)到進(jìn)程隔離等等,極大的簡(jiǎn)化了容器的創(chuàng)建和維護(hù)。使得 Docker 技術(shù)比虛擬機(jī)技術(shù)更為輕便、快捷。

作為一種新興的虛擬化方式,Docker 跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢(shì)。Docker 容器的啟動(dòng)可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多;Docker 對(duì)系統(tǒng)資源的利用率很高,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè) Docker 容器。

相關(guān)概念

Docker是CS架構(gòu),主要有兩個(gè)概念:

  • Docker daemon: 運(yùn)行在宿主機(jī)上,Docker守護(hù)進(jìn)程,用戶通過Docker client(Docker命令)與Docker daemon交互
  • Docker client: Docker 命令行工具,是用戶使用Docker的主要方式,Docker client與Docker daemon通信并將結(jié)果返回給用戶,Docker client也可以通過socket或者RESTful api訪問遠(yuǎn)程的Docker daemon

了解了Docker的組成,再來了解一下Docker的三個(gè)主要概念:

  • Docker image:鏡像是只讀的,鏡像中包含有需要運(yùn)行的文件。鏡像用來創(chuàng)建container,一個(gè)鏡像可以運(yùn)行多個(gè)container;鏡像可以通過Dockerfile創(chuàng)建,也可以從Docker hub/registry上下載。
  • Docker container:容器是Docker的運(yùn)行組件,啟動(dòng)一個(gè)鏡像就是一個(gè)容器,容器是一個(gè)隔離環(huán)境,多個(gè)容器之間不會(huì)相互影響,保證容器中的程序運(yùn)行在一個(gè)相對(duì)安全的環(huán)境中。
  • Docker hub/registry: 共享和管理Docker鏡像,用戶可以上傳或者下載上面的鏡像,官方地址為 https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。

鏡像就相當(dāng)于打包好的版本,鏡像啟動(dòng)之后運(yùn)行在容器中,倉(cāng)庫(kù)就是裝存儲(chǔ)鏡像的地方。

Docker安裝

建議在linux環(huán)境下安裝Docker,window環(huán)境搭建比較復(fù)雜且容易出錯(cuò),使用Centos7+yum來安裝Docker環(huán)境很方便。

Docker 軟件包已經(jīng)包括在默認(rèn)的 CentOS-Extras 軟件源里。因此想要安裝 docker,只需要運(yùn)行下面的 yum 命令:

  1. yum install docker 

安裝完成后,使用下面的命令來啟動(dòng) docker 服務(wù),并將其設(shè)置為開機(jī)啟動(dòng):

  1. service docker start 
  2. chkconfig docker on 

LCTT 譯注:此處采用了舊式的 sysv 語(yǔ)法,如采用CentOS 7中支持的新式 systemd 語(yǔ)法,如下:

  1. service docker start 
  2. chkconfig docker on 

測(cè)試

  1. docker version 

輸入上述命令,返回docker的版本相關(guān)信息,證明docker安裝成功。

Hello World

下面,我們通過最簡(jiǎn)單的 image 文件"hello world",感受一下 Docker。

因?yàn)閲?guó)內(nèi)連接 Docker 的官方倉(cāng)庫(kù)很慢,因此我們?cè)谌粘J褂弥袝?huì)使用Docker 中國(guó)加速器。通過 Docker 官方鏡像加速,中國(guó)區(qū)用戶能夠快速訪問***的 Docker 鏡像。該鏡像托管于中國(guó)大陸,本地用戶現(xiàn)在將會(huì)享受到更快的下載速度和更強(qiáng)的穩(wěn)定性,從而能夠更敏捷地開發(fā)和交付 Docker 化應(yīng)用。

Docker 中國(guó)官方鏡像加速可通過 registry.docker-cn.com訪問。該鏡像庫(kù)只包含流行的公有鏡像,私有鏡像仍需要從美國(guó)鏡像庫(kù)中拉取。

修改系統(tǒng)中docker對(duì)應(yīng)的配置文件即可,如下:

  1. vi /etc/docker/daemon.json 
  2. #添加后 
  3.  "registry-mirrors": ["https://registry.docker-cn.com"], 
  4.  "live-restore"true 

運(yùn)行下面的命令,將 image 文件從倉(cāng)庫(kù)抓取到本地。

  1. docker pull library/hello-world 

上面代碼中,docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在倉(cāng)庫(kù)里面的位置,其中l(wèi)ibrary是 image 文件所在的組,hello-world是 image 文件的名字。

抓取成功以后,就可以在本機(jī)看到這個(gè) image 文件了。

  1. docker images 
  2. #顯示結(jié)果 
  3. REPOSITORY TAG IMAGE ID CREATED SIZE 
  4. docker.io/hello-world latest f2a91732366c 3 months ago 1.848 kB 

現(xiàn)在,運(yùn)行這個(gè) image 文件。

  1. docker run hello-world

  2.  

  3. #顯示結(jié)果

  4. Hello from Docker!

  5. This message shows that your installation appears to be working correctly.

  6. ...

輸出這段提示以后,hello world就會(huì)停止運(yùn)行,容器自動(dòng)終止。有些容器不會(huì)自動(dòng)終止,因?yàn)樘峁┑氖欠?wù),比如Mysql鏡像等。

常用命令

除過以上我們使用的Docker命令外,Docker還有一些其它常用的命令

拉取docker鏡像

  1. docker pull image_name 

查看宿主機(jī)上的鏡像,Docker鏡像保存在/var/lib/docker目錄下:

  1. docker images 

刪除鏡像

  1. docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30 

查看當(dāng)前有哪些容器正在運(yùn)行

  1. docker ps 

查看所有容器

  1. docker ps -a 

啟動(dòng)、停止、重啟容器命令:

  1. docker start container_name/container_id 
  2. docker stop container_name/container_id 
  3. docker restart container_name/container_id 

后臺(tái)啟動(dòng)一個(gè)容器后,如果想進(jìn)入到這個(gè)容器,可以使用attach命令:

  1. docker attach container_name/container_id 

刪除容器的命令:

  1. docker rm container_name/container_id 

查看當(dāng)前系統(tǒng)Docker信息

  1. docker info 

從Docker hub上下載某個(gè)鏡像:

  1. docker pull centos:latest 
  2. docker pull centos:latest 

執(zhí)行docker pull centos會(huì)將Centos這個(gè)倉(cāng)庫(kù)下面的所有鏡像下載到本地repository。

【本文為51CTO專欄作者“純潔的微笑”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過微信公眾號(hào)聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2014-12-31 11:25:33

Docker運(yùn)行PythonDocker命令

2022-07-21 11:58:12

Docker

2014-12-31 11:11:52

DockerDocker基本命令

2014-12-31 10:54:44

DockerDocker Remo鏡像命令

2016-09-26 08:09:53

人臉識(shí)別seetaface開源

2010-08-03 13:06:15

Flex Builde

2013-08-29 14:12:52

Storm分布式實(shí)時(shí)計(jì)算

2010-06-12 10:33:33

統(tǒng)一建模語(yǔ)言UML

2009-07-08 15:12:48

Java Servle

2014-05-26 15:35:55

Web組件Web Compone

2014-01-13 11:22:28

storm

2010-05-21 12:50:45

Subversion快

2011-07-21 10:29:18

iPhone 開發(fā)

2010-07-27 15:53:15

2010-08-03 14:37:30

Flex入門教程

2010-06-13 09:45:35

Widget開發(fā)

2012-05-10 08:29:46

XcodeiOSPhoneGap

2013-08-29 14:28:09

StormHadoop

2024-11-12 15:46:37

2010-07-20 16:19:54

Perl
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)