欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

從0開始了解Docker入門(小結(jié))

 更新時(shí)間:2018年04月18日 15:14:43   作者:rccoder  
本篇文章主要介紹了從0開始了解Docker(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧


Docker 自開源以來受到了各大公司的廣泛關(guān)注,或許現(xiàn)在互聯(lián)網(wǎng)公司的運(yùn)維體系不承載在 Docker(或 Pouch 等)之上都不好意思說自己的互聯(lián)網(wǎng)公司。

本文會(huì)簡單介紹下 Docker 的基礎(chǔ)概念,入門級(jí)使用方式和一些使用 Docker 能大大提升效率的場(chǎng)景。

原理

對(duì) Docker 最簡單并且?guī)в幸欢ㄥe(cuò)誤的認(rèn)知就是 “Docker 是一種性能非常好的虛擬機(jī)”。

正如上面所說,這是有一定錯(cuò)誤的說法。Docker 相比于傳統(tǒng)虛擬機(jī)的技術(shù)來說先進(jìn)了不少,具體表現(xiàn)在 Docker 不是在宿主機(jī)上虛擬出一套硬件后再虛擬出一個(gè)操作系統(tǒng),而是讓 Docker 容器里面的進(jìn)程直接運(yùn)行在宿主機(jī)上(Docker 會(huì)做文件、網(wǎng)絡(luò)等的隔離),這樣一來 Docker 會(huì) “體積更輕、跑的更快、同宿主機(jī)下可創(chuàng)建的個(gè)數(shù)更多”。

Docker 中有三個(gè)核心概念:Image、Container、Repository。

  1. Image: 有領(lǐng)“好人卡”傾向的廣大程序猿一定對(duì) 鏡像 的概念不會(huì)陌生。但和 windows 的那種 iso 鏡像相比,Docker 中的鏡像是分層的,可復(fù)用的,而非簡單的一堆文件迭在一起(類似于一個(gè)壓縮包的源碼和一個(gè) git 倉庫的區(qū)別)。
  2. Container: 容器的存在離不開鏡像的支持,他是鏡像運(yùn)行時(shí)的一個(gè)載體(類似于實(shí)例和類的關(guān)系)。依托 Docker 的虛擬化技術(shù),給容器創(chuàng)建了獨(dú)立的端口、進(jìn)程、文件等“空間”,Container 就是一個(gè)與宿機(jī)隔離 “容器”。容器可宿主機(jī)之間可以進(jìn)行 port、volumes、network 等的通信。
  3. Repository: Docker 的倉庫和 git 的倉庫比較相似,擁有倉庫名、tag。在本地構(gòu)建完鏡像之后,即可通過倉庫進(jìn)行鏡像的分發(fā)。常用的 Docker hub 有 https://hub.docker.com/ 、 https://cr.console.aliyun.com/ 等。

相關(guān)命令

1. 安裝

Docker 的安裝是非常便捷的,在 macOS、ubuntu 等下面都有一鍵式安裝工具或者腳本。更多可以參考 Docker 官方教程。
安裝后 Terminal 中敲下 docker,有使用說明出來的話大多情況下說明已經(jīng)安裝成功了。

2. 尋找基礎(chǔ)鏡像

DockerHub 等網(wǎng)站都提供了眾多鏡像,一般情況下我們都會(huì)從它那找個(gè)鏡像作為基礎(chǔ)鏡像,然后再進(jìn)行我們的后續(xù)操作。

這里我們以 ubuntu 基礎(chǔ)鏡像為例,配置一個(gè) node 環(huán)境。

因?yàn)?“鏈路太長” 的原因,國內(nèi)訪問 Docker Hub 可能會(huì)比較慢,可以使用國內(nèi)眾多廠商提供的鏡像加速器

3. 拉取基礎(chǔ)鏡像

利用 docker pull 命令即可從相關(guān) hub 網(wǎng)站上拉取鏡像到本地。同時(shí)在拉的過程中就能看到是按照多個(gè) “層” 去拉鏡像的。
> docker pull ubuntu:18.04

18.04: Pulling from library/ubuntu
c448d9b1e62f: Pull complete
0277fe36251d: Pull complete
6591defe1cd9: Pull complete
2c321da2a3ae: Pull complete
08d8a7c0ac3c: Pull complete
Digest: sha256:2152a8e6c0d13634c14aef08b6cc74cbc0ad10e4293e53d2118550a52f3064d1
Status: Downloaded newer image for ubuntu:18.04

執(zhí)行 docker images 即可看到本地所有的鏡像

> docker images
REPOSITORY        TAG         IMAGE ID      CREATED       SIZE
ubuntu          18.04        58c12a55082a    44 hours ago    79MB

4. 創(chuàng)建一個(gè) Docker 容器

docker create 命令通過鏡像去創(chuàng)建一個(gè)容器,同時(shí)吐出容器 id。

> docker create --name ubuntuContainer ubuntu:18.04
0da83bc6515ea1df100c32cccaddc070199b72263663437b8fe424aadccf4778

docker start 即可運(yùn)行改容器。

> docker start ubuntuContainer

docker ps 即可查看運(yùn)行中的 container

> docker ps
CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS        NAMES
9298a27262da    ubuntu:18.04    "/bin/bash"     4 minutes ago    Up About a minute            ubuntuContainer

docker exec 即可進(jìn)入該 container。

> docker exec -it 9298
root@9298a27262da:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@9298a27262da:/# exit

docker run 可以一步到位創(chuàng)建并運(yùn)行一個(gè)容器,然后進(jìn)入該容器。

> docker run -it --name runUbuntuContainer ubuntu:18.04 /bin/bash
root@57cdd61d4383:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@57cdd61d4383:/#

# docker ps 可以查到已經(jīng)成功運(yùn)行了 runUbuntuContainer
> docker ps
CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS        NAMES
57cdd61d4383    ubuntu:18.04    "/bin/bash"     9 seconds ago    Up 8 seconds              runUbuntuContainer
9298a27262da    ubuntu:18.04    "/bin/bash"     9 minutes ago    Up 6 minutes              ubuntuContainer

5. 在容器里安裝 Node 環(huán)境

進(jìn)入容器之后一切操作和普通環(huán)境一致,我們安裝個(gè)簡單的 node 環(huán)境

> apt-get update
> apt-get install wget
> wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

# 安裝完之后可能當(dāng)前 session 讀不到 nvm 命令,可以 exit 之后再進(jìn)入中終端環(huán)境
> nvm install 8.0.0
> node -v

6. commit 容器,創(chuàng)建新鏡像

和 Ghost 裝 windows 一樣,很多時(shí)候,我們期望能定制自己的鏡像,在里面安裝一些基礎(chǔ)環(huán)境(比如上文中的 node),然后制作出自己要的基礎(chǔ)鏡像。這個(gè)時(shí)候 docker commit 就派上用場(chǎng)了。

> docker commit --author "rccoder" --message "curl+node" 9298 rccoder/myworkspace:v1
sha256:68e83119eefa0bfdc8e523ab4d16c8cf76770dbb08bad1e32af1c872735e6f71

# 通過 docker images 就能看到新制作的 rccoder/myworkspace 就躺在這里了
>docker images
REPOSITORY        TAG         IMAGE ID      CREATED       SIZE
rccoder/myworkspace   v1       e0d73563fae8    20 seconds ago   196MB

接著,試一下我們新創(chuàng)建的鏡像?

> docker run -it --name newWorkSpace rccoder/myworkspace:v1 /bin/bash
root@9109f6985735:/# node -v
8.0.0

看起來沒問題。

7. push 鏡像到 docker hub

鏡像制作好了,怎么共享出去讓別人使用呢?這里以 push 到docker hub 為例。

第一步是先去 docker hub 注冊(cè)一個(gè)賬號(hào),然后在終端上登錄賬號(hào),進(jìn)行 push。

> docker login
> docker push rccoder/myworkspace:v1
The push refers to repository [docker.io/rccoder/myworkspace]
c0913fec0e19: Pushing [=>                         ] 2.783MB/116.7MB
bb1eed35aacf: Mounted from library/ubuntu
5fc1dce434ba: Mounted from library/ubuntu
c4f90a44515b: Mounted from library/ubuntu
a792400561d8: Mounted from library/ubuntu
6a4e481d02df: Waiting

8. 是時(shí)候使用 Dockerfile 了

用 Docker 進(jìn)行持續(xù)集成?相比在了解 Docker 之前肯定聽過這個(gè)事情,那就意外著需要從某個(gè)地方拷貝代碼,然后執(zhí)行(對(duì),聽上去有點(diǎn)travis-ci 的那種感覺)。

是時(shí)候該 Dockerfile 出場(chǎng)了!

Dockerfile 是一個(gè)由一堆命令+參數(shù)構(gòu)成的腳本,使用 docker build 即可執(zhí)行腳本構(gòu)建鏡像,自動(dòng)的去做一些事(同類似于travis-ci 中的 .travis.yml)。

Dockerfile 的格式統(tǒng)統(tǒng)為:

# Comment
INSTRUCTION arguments

必須以 FROM BASE_IMAGE 開頭指定基礎(chǔ)鏡像。

更詳細(xì)的規(guī)范與說明請(qǐng)參考 Dockerfile reference。這里我們以基于上面的 rccoder/myworkspace:v1 作為基礎(chǔ)鏡像,然后在根目錄創(chuàng)建 a 目錄為例

Dockerfile 如下:

FROM rccoder/myworkspace:v1
RUN mkdir a

然后執(zhí)行:

> docker build -t newfiledocker:v1 .
Sending build context to Docker daemon 3.584kB
Step 1/2 : FROM rccoder/myworkspace:v1
 ---> 68e83119eefa
Step 2/2 : RUN mkdir a
 ---> Running in 1127aff5fbd3
Removing intermediate container 1127aff5fbd3
 ---> 25a8a5418af0
Successfully built 25a8a5418af0
Successfully tagged newfiledocker:v1

# 新建基于 newfiledocker 的容器并在終端中打開,發(fā)現(xiàn)里面已經(jīng)有 a 文件夾了。
> docker docker run -it newfiledocker:v1 /bin/bash
root@e3bd8ca19ffc:/# ls
a bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

借助 Dockerfile 的能力,Docker 留下了無限的可能。

能做什么

說了這么一堆,那實(shí)際生產(chǎn)環(huán)境中 Docker 能做什么呢?常用的可能有下面這些(歡迎在評(píng)論中補(bǔ)充)

1. 多環(huán)境的部署切換

業(yè)務(wù)開發(fā)中往往需要區(qū)分開發(fā)環(huán)境與線上環(huán)境,利用 Docker 能原封不動(dòng)的將開發(fā)環(huán)境中的 代碼與環(huán)境原封不動(dòng)無污染的 遷移到線上環(huán)境,配合一定的自動(dòng)化流程即可實(shí)現(xiàn)自動(dòng)的發(fā)布。

2. 前端云構(gòu)建

因?yàn)?node_modules 的蛋疼問題,同一個(gè)倉庫下不同人開發(fā)往往會(huì)遇到不同的人使用不同的 包版本 且自己根本不知道與別人不一樣,最終導(dǎo)致發(fā)布之后產(chǎn)生線上問題。利用 Docker 可以在云端新建容器,遠(yuǎn)程 無污染、低成本 構(gòu)建代碼,實(shí)現(xiàn) 不同人用的一定是同一個(gè)版本。

3. 復(fù)雜環(huán)境一鍵配置

某些場(chǎng)景下可能會(huì)配一些超級(jí)復(fù)雜的環(huán)境(比如:大一同學(xué)配 Java 環(huán)境),這個(gè)時(shí)候可以利用 Docker 對(duì)環(huán)境配置做封裝,直接生成鏡像,讓大家低成本使用。

4. 持續(xù)集成單元測(cè)試

類似于 travis-ci 這種

5. 同應(yīng)用多版本隔離、文件隔離

比如這個(gè)項(xiàng)目依賴 node6,那個(gè)項(xiàng)目依賴 node 8(只是舉例子,硬盤夠大的話還是建議通過 nodeinstall 解決);同一臺(tái)服務(wù)器上跑了 100 個(gè) wordpress 程序(可以用 Docker 建立隔離開,防止互相污染)。

4. 省錢

嗯,低成本安全超售(大霧)

參考鏈接

Use the Docker command line
Dockerfile reference
Best practices for writing Dockerfiles

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Docker拉鏡像報(bào)錯(cuò)error pulling image configuration: unknown blob

    Docker拉鏡像報(bào)錯(cuò)error pulling image configuration:

    這篇文章主要介紹了Docker拉鏡像報(bào)錯(cuò)error pulling image configuration: unknown blob的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • dockerfile介紹與使用小結(jié)

    dockerfile介紹與使用小結(jié)

    Dockerfile是一個(gè)創(chuàng)建鏡像所有命令的文本文件, 包含了一條條指令和說明, 只需要在Dockerfile上添加或者修改指令, 就可生成 docker 鏡像,本文給大家介紹dockerfile介紹與使用小結(jié),感興趣的朋友一起看看吧
    2023-11-11
  • Docker創(chuàng)建鏡像、怎么修改、上傳鏡像等詳細(xì)介紹

    Docker創(chuàng)建鏡像、怎么修改、上傳鏡像等詳細(xì)介紹

    這篇文章主要介紹了Docker創(chuàng)建鏡像、怎么修改、上傳鏡像等詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • docker-compose java.net.UnknownHostException問題

    docker-compose java.net.UnknownHostException問題

    這篇文章主要介紹了docker-compose java.net.UnknownHostException問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • docker?build與Dockerfile問題

    docker?build與Dockerfile問題

    這篇文章主要介紹了docker?build與Dockerfile問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Centos 7中Docker私有倉庫的搭建方法

    Centos 7中Docker私有倉庫的搭建方法

    本篇文章主要介紹了Centos 7中Docker私有倉庫的搭建方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • Next.js?Docker鏡像私有部署從零實(shí)現(xiàn)

    Next.js?Docker鏡像私有部署從零實(shí)現(xiàn)

    這篇文章主要為大家介紹了Next.js?Docker鏡像私有部署從零實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Dockerfile指令詳解

    Dockerfile指令詳解

    Dockerfile有十幾條命令可用于構(gòu)建鏡像,下文將簡略介紹這些命令。希望小伙伴們能夠喜歡
    2016-10-10
  • docker安裝nginx并配置ssl的方法步驟

    docker安裝nginx并配置ssl的方法步驟

    本文主要介紹了docker安裝nginx并配置ssl的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • docker搭建fastdfs環(huán)境的方法步驟

    docker搭建fastdfs環(huán)境的方法步驟

    在實(shí)際使用中,通過源碼編譯安裝過程非常復(fù)雜,但是通過docker快速構(gòu)建卻非常容易,本文主要介紹了docker搭建fastdfs環(huán)境,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-06-06

最新評(píng)論