亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

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

2024-09-01 13:54:36
字體:
來源:轉載
供稿:網友

Docker 自開源以來受到了各大公司的廣泛關注,或許現在互聯網公司的運維體系不承載在 Docker(或 Pouch 等)之上都不好意思說自己的互聯網公司。

本文會簡單介紹下 Docker 的基礎概念,入門級使用方式和一些使用 Docker 能大大提升效率的場景。

原理

對 Docker 最簡單并且帶有一定錯誤的認知就是 “Docker 是一種性能非常好的虛擬機”。

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

Docker 中有三個核心概念:Image、Container、Repository。

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

相關命令

1. 安裝

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

2. 尋找基礎鏡像

DockerHub 等網站都提供了眾多鏡像,一般情況下我們都會從它那找個鏡像作為基礎鏡像,然后再進行我們的后續操作。

這里我們以 ubuntu 基礎鏡像為例,配置一個 node 環境。

因為 “鏈路太長” 的原因,國內訪問 Docker Hub 可能會比較慢,可以使用國內眾多廠商提供的鏡像加速器

Docker,入門,從0了解Docker

3. 拉取基礎鏡像

利用 docker pull 命令即可從相關 hub 網站上拉取鏡像到本地。同時在拉的過程中就能看到是按照多個 “層” 去拉鏡像的。
> docker pull ubuntu:18.04

18.04: Pulling from library/ubuntuc448d9b1e62f: Pull complete0277fe36251d: Pull complete6591defe1cd9: Pull complete2c321da2a3ae: Pull complete08d8a7c0ac3c: Pull completeDigest: sha256:2152a8e6c0d13634c14aef08b6cc74cbc0ad10e4293e53d2118550a52f3064d1Status: Downloaded newer image for ubuntu:18.04

執行 docker images 即可看到本地所有的鏡像

> docker imagesREPOSITORY        TAG         IMAGE ID      CREATED       SIZEubuntu          18.04        58c12a55082a    44 hours ago    79MB

4. 創建一個 Docker 容器

docker create 命令通過鏡像去創建一個容器,同時吐出容器 id。

> docker create --name ubuntuContainer ubuntu:18.040da83bc6515ea1df100c32cccaddc070199b72263663437b8fe424aadccf4778

用docker start 即可運行改容器。

> docker start ubuntuContainer

用 docker ps 即可查看運行中的 container

> docker psCONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS        NAMES9298a27262da    ubuntu:18.04    "/bin/bash"     4 minutes ago    Up About a minute            ubuntuContainer

用 docker exec 即可進入該 container。

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

用docker run 可以一步到位創建并運行一個容器,然后進入該容器。

> docker run -it --name runUbuntuContainer ubuntu:18.04 /bin/bashroot@57cdd61d4383:/# lsbin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varroot@57cdd61d4383:/## docker ps 可以查到已經成功運行了 runUbuntuContainer> docker psCONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS        NAMES57cdd61d4383    ubuntu:18.04    "/bin/bash"     9 seconds ago    Up 8 seconds              runUbuntuContainer9298a27262da    ubuntu:18.04    "/bin/bash"     9 minutes ago    Up 6 minutes              ubuntuContainer

5. 在容器里安裝 Node 環境

進入容器之后一切操作和普通環境一致,我們安裝個簡單的 node 環境

> apt-get update> apt-get install wget> wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash# 安裝完之后可能當前 session 讀不到 nvm 命令,可以 exit 之后再進入中終端環境> nvm install 8.0.0> node -v

6. commit 容器,創建新鏡像

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

> docker commit --author "rccoder" --message "curl+node" 9298 rccoder/myworkspace:v1sha256:68e83119eefa0bfdc8e523ab4d16c8cf76770dbb08bad1e32af1c872735e6f71# 通過 docker images 就能看到新制作的 rccoder/myworkspace 就躺在這里了>docker imagesREPOSITORY        TAG         IMAGE ID      CREATED       SIZErccoder/myworkspace   v1       e0d73563fae8    20 seconds ago   196MB

接著,試一下我們新創建的鏡像?

> docker run -it --name newWorkSpace rccoder/myworkspace:v1 /bin/bashroot@9109f6985735:/# node -v8.0.0

看起來沒問題。

7. push 鏡像到 docker hub

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

第一步是先去 docker hub 注冊一個賬號,然后在終端上登錄賬號,進行 push。

> docker login> docker push rccoder/myworkspace:v1The push refers to repository [docker.io/rccoder/myworkspace]c0913fec0e19: Pushing [=>                         ] 2.783MB/116.7MBbb1eed35aacf: Mounted from library/ubuntu5fc1dce434ba: Mounted from library/ubuntuc4f90a44515b: Mounted from library/ubuntua792400561d8: Mounted from library/ubuntu6a4e481d02df: Waiting

8. 是時候使用 Dockerfile 了

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

是時候該 Dockerfile 出場了!

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

Dockerfile 的格式統統為:

# CommentINSTRUCTION arguments

必須以 FROM BASE_IMAGE 開頭指定基礎鏡像。

更詳細的規范與說明請參考 Dockerfile reference。這里我們以基于上面的 rccoder/myworkspace:v1 作為基礎鏡像,然后在根目錄創建 a 目錄為例

Dockerfile 如下:

FROM rccoder/myworkspace:v1RUN mkdir a

然后執行:

> docker build -t newfiledocker:v1 .Sending build context to Docker daemon 3.584kBStep 1/2 : FROM rccoder/myworkspace:v1 ---> 68e83119eefaStep 2/2 : RUN mkdir a ---> Running in 1127aff5fbd3Removing intermediate container 1127aff5fbd3 ---> 25a8a5418af0Successfully built 25a8a5418af0Successfully tagged newfiledocker:v1# 新建基于 newfiledocker 的容器并在終端中打開,發現里面已經有 a 文件夾了。> docker docker run -it newfiledocker:v1 /bin/bashroot@e3bd8ca19ffc:/# lsa bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

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

能做什么

說了這么一堆,那實際生產環境中 Docker 能做什么呢?常用的可能有下面這些(歡迎在評論中補充)

1. 多環境的部署切換

業務開發中往往需要區分開發環境與線上環境,利用 Docker 能原封不動的將開發環境中的 代碼與環境原封不動無污染的 遷移到線上環境,配合一定的自動化流程即可實現自動的發布。

2. 前端云構建

因為 node_modules 的蛋疼問題,同一個倉庫下不同人開發往往會遇到不同的人使用不同的 包版本 且自己根本不知道與別人不一樣,最終導致發布之后產生線上問題。利用 Docker 可以在云端新建容器,遠程 無污染、低成本 構建代碼,實現 不同人用的一定是同一個版本。

3. 復雜環境一鍵配置

某些場景下可能會配一些超級復雜的環境(比如:大一同學配 Java 環境),這個時候可以利用 Docker 對環境配置做封裝,直接生成鏡像,讓大家低成本使用。

4. 持續集成單元測試

類似于 travis-ci 這種

5. 同應用多版本隔離、文件隔離

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

4. 省錢

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

參考鏈接

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成年人在线观看| 777午夜精品福利在线观看| 午夜精品www| www.日韩视频| 亚洲精选一区二区| 日韩电视剧免费观看网站| 国产精品美腿一区在线看| 欧美日在线观看| 91九色蝌蚪国产| 国产精品海角社区在线观看| 欧美激情免费看| 97久久精品视频| 亚洲xxxx做受欧美| 欧美理论电影在线观看| 亚洲成人久久久久| 亚洲欧洲免费视频| 亚洲成人激情小说| 亚洲最新av在线网站| 一区二区三区天堂av| 精品国产成人av| 日韩精品在线视频观看| 亚洲欧美制服第一页| 欧美激情精品久久久久久大尺度| 国产精品美女免费视频| 欧美影院在线播放| 欧美国产中文字幕| 亚洲欧美中文字幕在线一区| 国产精品一区二区3区| 中文字幕亚洲无线码在线一区| 日韩欧美国产视频| 久久激情视频久久| 国内精品久久久久久中文字幕| 国产精品美女主播| 性欧美xxxx视频在线观看| 欧美日韩高清在线观看| 日韩欧美亚洲国产一区| 最新亚洲国产精品| 欧美伊久线香蕉线新在线| 久久综合电影一区| 亚洲第一精品自拍| 欧美剧在线观看| 成人综合国产精品| 久久久久久久久综合| 欧美成人合集magnet| 亚洲欧洲自拍偷拍| 亚洲天堂av电影| 久久精品国产亚洲精品| 亚洲精品理论电影| 激情懂色av一区av二区av| 日本精品视频在线| 狠狠操狠狠色综合网| 日本不卡视频在线播放| 中文国产成人精品久久一| 欧美日韩国产中字| 国产精品美女久久久久久免费| 午夜欧美大片免费观看| 久久久伊人日本| 国产主播欧美精品| 久久久精品国产亚洲| 国产丝袜精品第一页| 国产精品亚发布| 国产亚洲一区二区在线| 国产精品日韩欧美综合| 日韩电影中文字幕| 日韩在线观看免费全集电视剧网站| 久久久亚洲网站| 国产欧美一区二区三区在线看| 欧美极品少妇xxxxⅹ免费视频| 国产va免费精品高清在线观看| 国产精品自产拍在线观看中文| 26uuu日韩精品一区二区| 美女999久久久精品视频| 欧美精品xxx| 97在线视频免费观看| 亚洲自拍欧美色图| 日本精品在线视频| 精品亚洲永久免费精品| 日韩欧美中文免费| 国产一区二区丝袜高跟鞋图片| 91香蕉嫩草神马影院在线观看| 欧美在线xxx| 亚洲精品日韩久久久| 国产成人精品免高潮在线观看| 91影视免费在线观看| 欧美成人黄色小视频| 亚洲亚裔videos黑人hd| 最近中文字幕mv在线一区二区三区四区| 国产精品日韩欧美大师| 成人午夜在线影院| 午夜精品久久久久久久男人的天堂| 日韩中文字幕在线免费观看| 国产精品av电影| 免费91麻豆精品国产自产在线观看| 亚洲**2019国产| 国产成人久久久精品一区| 综合国产在线视频| 97精品国产97久久久久久免费| 日本免费一区二区三区视频观看| 在线播放国产一区中文字幕剧情欧美| 久久精品这里热有精品| 在线精品国产成人综合| 国产亚洲精品一区二区| 美女精品久久久| 国产成人亚洲综合青青| 亚洲国产成人在线视频| 久久综合久久88| 日韩精品极品视频| 欧美另类交人妖| 亚洲石原莉奈一区二区在线观看| 日韩欧美中文字幕在线播放| 成人福利网站在线观看11| 奇门遁甲1982国语版免费观看高清| 久久亚洲国产精品| 欧美日韩一区二区免费视频| 国产日产久久高清欧美一区| 久久人人爽人人| 欧美精品在线免费观看| 粉嫩av一区二区三区免费野| 亚洲视频在线免费看| 91在线免费观看网站| 亚洲美女精品成人在线视频| 亚洲精品99999| 久久精品国产电影| 国产精品久久一区主播| 欧美日韩另类在线| 久久精品成人一区二区三区| 国产亚洲成av人片在线观看桃| 亚洲变态欧美另类捆绑| 久久久国产一区二区| 亚洲视频在线播放| 国内成人精品视频| 亚洲精品成a人在线观看| 亚洲电影成人av99爱色| 亚洲精品永久免费| 日韩免费观看视频| 久久躁狠狠躁夜夜爽| 久久免费视频在线观看| 91亚洲精品视频| 亚洲国产欧美久久| 国产欧美一区二区三区在线| 欧美日韩综合视频| 国产精品久久久久久搜索| 国产美女久久精品香蕉69| 成人www视频在线观看| 亚洲free性xxxx护士hd| 成人免费福利在线| 91久久国产婷婷一区二区| 国产一区二区三区精品久久久| 日韩欧美一区二区三区| 欧美日韩国产精品一区二区不卡中文| 国产情人节一区| 狠狠躁天天躁日日躁欧美| 国产精品视频区1| 欧美午夜影院在线视频| 欧美日韩亚洲视频| 中文字幕亚洲无线码在线一区| 国产91精品在线播放| 国产一区二区三区18| 亚洲黄色av网站| 91免费福利视频| 日本在线观看天堂男亚洲| 久久精品国产清自在天天线| 欧美亚洲另类激情另类| 欧美极品在线视频|