如何互動式地建立一個Docker容器
大家好,今天我們來學習如何使用一個docker映象互動式地建立一個Docker容器。當我們從映象中啟動一個Docker程式,Docker就會獲取該映象及其父映象,並重復這個過程,直到到達基礎映象。然後聯合檔案系統(UFS)會在其頂層新增一個讀寫層。讀寫層被稱之為容器,它包含了一些關於父映象資訊及一些其他的資訊,如唯一ID,網路配置和資源限制等。容器是有狀態的,其狀態可以從 執行態 切換到 退出態。一個處於 執行態的容器包含了在CPU上面執行的程式樹,於其它在該主機上執行的程式相隔離,而退出態是指檔案系統的狀態,並保留了其退出值。你可以使用它來啟動,停止和重啟一個容器。
Docker技術為IT界帶來了巨大的改變,它使得雲服務可以用來共享應用和工作流程自動化,使得應用可以用元件快速組合,消除了開發、品質保證、產品環境間的摩擦。在這篇文章中,我們將會建立CentOS環境,然後用Apache網路伺服器提供一個網站服務。
這是一個快速且容易的教程,討論我們怎樣使用互動的shell,以互動的方式來建立一個容器。
1. 執行一個Docker例項
Docker首先會嘗試從本地取得並執行所需的映象,如果在本地主機上沒有發現,它就會從Docker公共註冊中心拉取。這裡,我們將會拉取映象並在 Docker 容器中建立一個fedora例項,並連線到它的 tty 上的bash shell。
# docker run -i -t fedora bash
2.安裝Apache網路伺服器
現在,在我們的Fedora基本映象例項準備好後,我們將會開始互動式地安裝Apache網路伺服器,而不是為它建立Dockerfile。為了做到這點,我們需要在終端或者shell執行以下命令。
# yum update
# yum install httpd
退出容器的 tty。
# exit
3.儲存映象
現在,我們要去儲存在Fedora例項裡做的修改。要做到這個,我們首先需要知道例項的容器ID。而為了得到ID,我們又需要執行以下命令(LCTT 譯註:在容器外執行該命令)。
# docker ps -a
然後,我們會儲存這些改變為一個新的映象,請執行以下命令。
# docker commit c16378f943fe fedora-httpd
這裡,修改已經通過使用容器ID儲存起來了,映象名字叫fedora-httpd。為了確認新的映象是否在執行,我們將執行以下命令。
# docker images
4. 新增內容到新的映象
我們自己新的Fedora Apache映象正成功的執行,現在我們想新增一些我們網站的網頁內容到Apache網路伺服器,使得網站能夠開箱即用。為做到這點,我們需要建立一個新的Dockerfile,它會處理從複製網頁內容到啟用80埠的所有操作。要達到這樣的目的,我們需要使用我們最喜歡的文字編輯器建立Dockerfile檔案,像下面演示的一樣。
# nano Dockerfile
現在,我們需要新增以下的命令列到檔案中。
FROM fedora-httpd ADD mysite.tar /tmp/ RUN mv /tmp/mysite/* /var/www/html EXPOSE 80 ENTRYPOINT [ "/usr/sbin/httpd" ] CMD [ "-D", "FOREGROUND" ]
這裡,上述的Dockerfile中,放在mysite.tar裡的網頁內容會自動解壓到/tmp/資料夾裡。然後,整個站點會被移動到Apache的網頁根目錄/var/www/html/,命令expose 80會開啟80埠,這樣網站就能正常訪問了。其次,入口點放在了/usr/sbin/https裡面,保證Apache伺服器能夠執行。
5. 構建並執行一個容器
現在,我們要用剛剛建立的Dockerfile建立我們的容器,以便將我們的網站新增到上面。為做到這,我們需要執行以下命令。
# docker build -rm -t mysite .
建立好我們的新容器後,我們需要要用下面的命令來執行容器。
# docker run -d -P mysite
總結
最後,我們已經成功的以互動式的方式建立了一個Docker容器。在本節方法中,我們是直接通過互動的shell命令建立我們的容器和映象。在建立與配置映象與容器時,這種方法十分簡單且快速。如果你有任何問題,建議和反饋,請在下方的評論框裡寫下來,以便我們可以提升或者更新我們的文章。謝謝!祝生活快樂
相關文章
- Dry:一個命令列互動式 Docker 容器管理器命令列Docker
- 快速輕鬆地建立Kafka的Docker容器KafkaDocker
- docker建立容器後如何使用Docker
- Docker 容器互聯方法Docker
- docker建立lnmp容器DockerLNMP
- 如何在鬆弛中建立互動式按鈕
- 如何在一個Docker容器裡安裝DiscourseDocker
- kafka zookeeper docker容器互聯KafkaDocker
- 建立一個docker imageDocker
- Docker 築夢師系列(一):實現容器互聯Docker
- 【Docker】Docker基礎-埠對映與容器互聯Docker
- Docker 如何動態修改容器埠對映Docker
- 建立儘可能小的 Docker 容器Docker
- 如何在 Docker 容器中架設一個完整的 WordPress 站點Docker
- 如何獲得一個Oracle 23ai資料庫(docker容器)OracleAI資料庫Docker
- js如何動態建立一個table表格JS
- docker快速建立輕量級的可移植的容器(一)Docker
- 細述docker容器建立MariaDB映象Docker
- 微軟開源 Try .NET - 建立互動式.NET文件微軟
- 建立互動式shell指令碼對話方塊指令碼
- 一個社交App是如何構建高伸縮性的互動式系統APP
- 如何在Docker容器啟動時自動執行指令碼Docker指令碼
- JSShell:一個基於python的互動式ShellJSPython
- Spring 容器與 Servlet互動SpringServlet
- Docker容器的自啟動Docker
- 2.3.2 關於使用互動式DBCA建立資料庫資料庫
- 如何更好地建立物件物件
- Docker(十七)-修改Docker容器啟動配置引數Docker
- 細述docker容器中建立SSH服務映象Docker
- [Docker]在Ubuntu容器中建立sudo使用者DockerUbuntu
- Docker(33)- 如何修改 docker 容器的埠對映Docker
- Docker自動補全容器名Docker
- docker中怎麼啟動容器Docker
- 如何修改Docker容器埠對映?Docker
- 如何在Docker容器中使用ArthasDocker
- Docker 101(一) --- 容器Docker
- Docker容器服務搭建(一)Docker
- Docker重啟保持容器自動啟動Docker