Docker學習筆記

  • 基本概念

    Docker: 開源的容器虛擬化平臺,虛擬機能作的Docker都能作,並且速度更快。html

    Docker的核心思想有三點:java

    1. 集裝箱,將一個個程序(應用)看做集裝箱,在網絡間進行搬運,Docker中的集裝箱也就是鏡像
    2. 標準化,將程序所需的環境進行標準化
    3. 隔離,集裝箱直接互相隔離

    在對Docker有一個大概的認識後再來看Docker的內部:mysql

      Docker 鏡像 - Docker imageslinux

      Docker 倉庫 - Docker registeriesweb

      Docker 容器 - Docker containerssql

    鏡像就是一系列的文件,每一層的鏡像都是隻讀的,倉庫是用來保存鏡像的,容器的本質是進程,鏡像能夠理解爲容器的文件系統,一個Docker容包含了全部的某個應用運行所須要的環境。每個 Docker 容器都是從 Docker 鏡像建立的。docker

  • 基本操做

    安裝過程見官網,安裝完成後鍵入命令,docker version,可獲取以下內容:數據庫

    

    安裝完成後,對docker的鏡像進行下載,也就是docker pull image 命令,最後的image是由docker官網提供的鏡像名稱,由於國情的緣由,國內下載 Docker HUB 官方的相關鏡像比較慢,我在ubuntu16系統下,鏡像沒法從官網直接pull ,能夠經過daocloud.io得到本身的加速器。具體操做以下:ubuntu

    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://990a497a.m.daocloud.io  tomcat

    配置Docker Hub Mirror

    sudo echo "DOCKER_OPTS=\"$DOCKER_OPTS --registry-mirror=http://xxx.m.daocloud.io\"" >> /etc/default/docker service docker restart 

    將xxx替換爲在 DaoCloud 上註冊後,專屬生成的Mirror地址連接名。 該腳本能夠將 --registry-mirror 加入到Docker配置文件 /etc/defaults/docker中。  

    Docker Hub Mirror使用不須要任何附件操做,就像這樣下載官方Ubuntu鏡像

    docker pull ubuntu 

    最終問題解決。

    而後就能夠開始練習docker的一些基本操做了,一些基本的操做能夠參考這篇博客http://blog.csdn.net/zjin_hua/article/details/52041757。

    本身製做完成的鏡像能夠上傳至私有倉庫,在這裏我使用了阿里雲的私有倉庫,按照阿里雲的提示步驟將本地鏡像上傳至私有倉庫。

    鏡像上傳成功後結果以下:

    

    

  • web應用容器化

    對docker倉庫,鏡像,容器等有了基礎的認識後,開始在docker中運行本身的web項目,如下實例中的web項目來自於我本身開發的基於SSH框架的java web項目。

  • 首先安裝tomcat鏡像
  • 編輯Dockerfile文件,具體內容以下

    from tomcat                #第一條指令必須是FROM,其後能夠是各類鏡像的操做指令

    MAINTAINER 全部者名字 郵箱         #指定鏡像全部者

    ADD classnet.war /usr/local/tomcat/webapps/    #將web項目添加至tomcat工做目錄下,classnet.war是項目的名稱,須要和dockerfile在同一個目錄下
    CMD ["catalina.sh", "run"]          #在容器啓動時啓動tomcat服務器

  • 輸入指令 docker build -t name:tag .     #爲web的鏡像命名,指定版本號,並在最後說明dockerfile的存放位置
  •  在docker中安裝mysql的鏡像
  • 分別將mysql和web的鏡像啓動爲容器,並指定端口號,另外須要在mysql啓動時,經過-e指令配置環境變量,具體環境變量的值能夠查看鏡像的官方說明,指定數據庫的鏈接密碼和數據庫名稱,與web項目中保持一致。
  • docker ps命令查看容器是否正常啓動

 

  • 輸入localhost:端口號/classnet/index.jsp 正常訪問網站           #另在web項目中須將mysql的鏈接地址改成虛擬機的ip地址,若使用localhost則不能正常訪問

  

  詳細操做可參考這篇博文https://yq.aliyun.com/articles/6894,其中涉及到maven的安裝,在配置maven項目時出現 [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?經查證後發現是jdk版本的問題Linux系統中自帶jdk,版本爲open版,更新爲oracle版後解決問題。可參考https://zhidao.baidu.com/question/332067219210122805.html替換jdk版本。

  另外補充關於學習時常和資料的問題,瞭解官網內容加基礎概念學習用了兩天時間,在docker安裝時,由於我的沒有linux的基礎,又另外學習linux相關內容,花費大約三天時間,在以後練習鏡像與容器相關操做以及web容器化用了三天時間。參考書籍有docker從入門到實踐

相關文章
相關標籤/搜索