docker入門體驗(yàn)

博客原文

在探討微服務(wù)的路上,docker的概念也是經(jīng)常出現(xiàn),自己只是粗略的了解docker是個啥,現(xiàn)在是時候認(rèn)真學(xué)習(xí)一下docker了,親自操作一下才能更加深入的理解。

00. docker介紹

docker是開源的一個基于輕量級虛擬化技術(shù)的容器引擎項(xiàng)目。它通過分層鏡像標(biāo)準(zhǔn)化和內(nèi)核虛擬化技術(shù),使得應(yīng)用開發(fā)者和運(yùn)維工程師可以以統(tǒng)一的方式跨平臺發(fā)布應(yīng)用,并且以幾乎沒有額外開銷的情況下提供資源隔離的應(yīng)用運(yùn)行環(huán)境。

docker有三個核心概念:

  • 鏡像
    docker鏡像,是一個只讀的鏡像,位于第1層,它不能被修改或不能保存狀態(tài)。
    一個docker鏡像可以構(gòu)建于另一個docker鏡像之上,這種層疊關(guān)系可以是多層的。第1層的鏡像層我們稱之為基礎(chǔ)鏡像(Base Image),其他層的鏡像(除了最頂層)我們稱之為父層鏡像(Parent Image)。這些鏡像繼承了他們的父層鏡像的所有屬性和設(shè)置,并在Dockerfile中添加了自己的配置。
    鏡像是用來創(chuàng)建Docker容器的。一個鏡像可以包含一個完整的操作系統(tǒng)環(huán)境和用戶需要的其它應(yīng)用程序。在docker hub 里面有大量現(xiàn)成的鏡像提供下載。一個鏡像可以創(chuàng)建多個容器。
  • 容器
    容器是使用docker鏡像創(chuàng)建的。
    它會在所有的鏡像層之上增加一個可寫層。這個可寫層有運(yùn)行在CPU上的進(jìn)程,而且有兩個不同的狀態(tài):運(yùn)行態(tài)(Running)和退出態(tài)(Exited)。這就是Docker容器。當(dāng)我們使用docker run啟動容器,Docker容器就進(jìn)入運(yùn)行態(tài),當(dāng)我們停止Docker容器時,它就進(jìn)入退出態(tài)。
    當(dāng)我們有一個正在運(yùn)行的Docker容器時,從運(yùn)行態(tài)到停止態(tài),我們對它所做的一切變更都會永久地寫到容器的文件系統(tǒng)中。要切記,對容器的變更是寫入到容器的文件系統(tǒng)的,而不是寫入到Docker鏡像中的。
    我們可以用同一個鏡像啟動多個Docker容器,這些容器啟動后都是活動的,彼此還是相互隔離的。我們對其中一個容器所做的變更只會局限于那個容器本身。
  • 倉庫
    倉庫是集中存放鏡像文件的地方。
    每個倉庫中又包含了多個鏡像,每個鏡像有不同的標(biāo)簽(tag)。
    最大的公開倉庫是DockerHub,存放了數(shù)量龐大的鏡像供用戶下載。國內(nèi)的公開倉庫包括DockerPool等,可以提供大陸用戶更穩(wěn)定快速的訪問。當(dāng)然,用戶也可以在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個私有倉庫。

01. docker準(zhǔn)備

準(zhǔn)備一個能夠連接互聯(lián)網(wǎng)的Ubuntu操作系統(tǒng),Ubuntu是安裝docker最好的環(huán)境。docker是在ubuntu的環(huán)境下開發(fā)的,測試也是最充分的環(huán)境。

  • 安裝docker
    這里的安裝docker指的是安裝docker的后臺守護(hù)進(jìn)程,安裝docker的方式有兩種,在線安裝和離線安裝。我使用的是在線安裝的方式,命令如下:
    sudo apt install docker.io

  • 免sudo使用docker命令
    安裝完成docker的守護(hù)進(jìn)程之后,默認(rèn)服務(wù)是啟動。但是此時我們在使用各種docker命令的時候都需要使用sudo權(quán)限,這樣顯然是有些麻煩的,下面一系列命令幫你免sudo使用docker命令:
    sudo groupadd docker
    sudo gpasswd -a ${USER} docker
    sudo service docker restart
    newgrp - docker

  • 配置docker加速器
    由于國內(nèi)用戶訪問docker hub緩慢的問題,下載鏡像速度很慢,需要配置一下加速器,國內(nèi)很多docker平臺都提供了加速器服務(wù),這些服務(wù)一般都是免費(fèi)的。我這里使用的是DaoCloud的加速器服務(wù),配置方法很簡單:
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://475d9f5e.m.daocloud.io
    使用cat /etc/docker/daemon.json查看是否配置成功,輸出如下為成功:
    {"registry-mirrors": ["http://475d9f5e.m.daocloud.io"]}
    更詳細(xì)的配置方法見鏈接

02. docker體驗(yàn)

  1. 查看docker的版本:docker --version
  2. 從倉庫種搜索一個鏡像:docker search tomcat
  3. 挑選一個鏡像下載:docker pull tomcat,這里選的是鏡像名為tomcat的鏡像。
  4. 查看擁有的鏡像:docker images
  5. 刪除一個鏡像:docker rmi <image id>
  6. 創(chuàng)建一個tomcat的docker容器:docker run -p 8080:8080 tomcat,這里的-p參數(shù)是映射主機(jī)端口和容器端口。
  7. 查看正在運(yùn)行的容器:docker ps
  8. 查看所有的容器:docker ps -a
  9. 停止一個正在運(yùn)行的容器:docker stop 容器名(容器id前四位)
  10. 啟動一個已創(chuàng)建的容器:docker start 容器名(容器id前四位)
  11. 重啟一個正在運(yùn)行的容器:docker restart 容器名(容器id前四位)
  12. 刪除一個已創(chuàng)建的容器:docker rm 容器名(容器id前四位)
  13. 一個復(fù)雜點(diǎn)的命令:
    docker run -i -t --name hello_tomcat -p 8081:8080 tomcat /bin/bash,其中-i -t是進(jìn)入到容器的交互式的窗口,--name為容器指定一個名字。

到這里為止,就簡單體驗(yàn)了一把docker容器的基本操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,872評論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,764評論 0 120
  • 最近考試,生活撲面而來的壓力,像一塊石頭壓的我喘不過來氣,我不想言語更不想表達(dá),只想默默的去藤寫:“冷靜與忍...
    張小可日常閱讀 646評論 0 0
  • 前些日子,寒假放假回家有空和我爸坐下來聊了聊,剛開始沒什么特別的,就是拉拉家常,說說自己在學(xué)校過得怎么樣,老爸也是...
    吵架先生閱讀 4,308評論 0 1
  • 沒想到我一年近40的人了,面對這個看了無數(shù)遍的片子,還是會稀里嘩啦。 不同時期真是有不同的痛點(diǎn),以前特別感觸與片頭...
    我就想嗚哩哇啦閱讀 312評論 0 0

友情鏈接更多精彩內(nèi)容