docker的安裝和入門


一、簡單的介紹一下docker是什么(本文主要講的是docker在windows上的應用)

Docker:是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的,可移植的,自給自足的容器。

Docker的核心概念:鏡像、倉庫、容器

Docker鏡像:是一個特殊的文件系統,提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時准備的一些配置參數(如匿名卷、環境變量、用戶等)。

Docker 利用容器Container):來運行應用。容器是從鏡像創建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。

倉庫(Repository):是集中存放鏡像文件的場所

一次docker的操作流程

  • 一般的流程中,clientpull命令從倉庫把image拉到docker host,然后通過run命令指揮imagehost上面弄一個container來跑這個image
  • 當然也可以是相反的流程,client 通過build命令在host上面創建一個自己的image,然后通過push命令把image推到倉庫。之后這個image可以被別的人或者自己pull

 

2、 DOCKER在windows上的安裝

2.檢查電腦環境

2-1.檢查版本,為了運行docker,你的機器必須是windows7或以上的64bit系統。

 

2-2.另外,你的機器必須支持硬件虛擬化技術(Hardware Virtualization Technology)並且已被啟用。對於windows10系統來說,你可以在 任務管理器->性能 中查看到你的電腦是否開啟了虛擬化

 

2-3.怎么開啟虛擬化,因為電腦型號不一樣,所以每台電腦進入BOIS的方式不一樣,重啟電腦,我的電腦是Lenovo的ThinkPad,所以我按的是F1,進入BOIS頁面,找到Security,把Security下面的Virtualization里面的Intel(R) Virtualization Technology的狀態改為Enable

然后再重啟就好了。

3下載dockerToolbox

3-1.  https://get.daocloud.io/toolbox/,下載新版本

3-2 全部next就可以了

安裝完成

 

安轉成功之后桌面會多三個圖標

 

如果安裝完成之后桌面少了一個Oracle VM VirtualBox 的話,找到你的dockertoolbox

安裝目錄下面的installers下面的virtualbox雙擊virtualbox.msi進行安裝。

 

 

雙擊Docker Quickstart Terminal圖標,啟動一個終端第一次運行會比較就,一般會報下載對應的鏡像iso到對C:下的docker路徑的錯誤,把dockertoolbox下的boot2docker.iso復制放到你docker運行下載鏡像的位置,再重新啟動就可以了。

 

啟動成功會出現這樣的界面

 

 

三、docker使用

1、docker的常用命令

一個docker引擎開啟之后是空的,你需要用docker引擎去build或者下載你自己的鏡像然后運行,通過暴漏出來的端口號去訪問。

下面以我的windows為例

1-1、如果你想要去查看一個鏡像的運行效果,你需要先下載一個鏡像,直接運行命令docker pull 鏡像名

 

他會自動去下

下載成功之后,運行docker images查看已經下好的鏡像

 

使用docker run 直接運行鏡像

 

-d 是容器在后天運行

-p 是暴漏出來的端口號

第一個是你要暴漏出來通過地址訪問的端口號,第二個本地主機端口號

指令指南

    • 容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
    • 容器操作運維 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
    • 容器rootfs命令 — docker [commit|cp|diff]
    • 鏡像倉庫 — docker [login|pull|push|search]
    • 本地鏡像管理 — docker [images|rmi|tag|build|history|save|import]
    • 其他命令 — docker [info|version]命令太多根據實際使用情況再請自行百度

 

2、使用dockerfile制作鏡像

2-1、Docker與微服務-使用Maven插件構建Docker鏡像可以參照http://blog.csdn.net/qq_22841811/article/details/67369530

2-2、打開我們的項目,在我們項目的src/main下面新建一個docker文件,在docker文件里面新建Dockerfile文本

FROM java:8  #From是from那個鏡像,最好現在docker里面pull下來,不然構建的時候會在再下一遍

VOLUME /tmp                           #指定掛載點,該指令使容器中的一個目錄具有持久化存儲的功能,該目錄可被容器本身使用,也可以共享給其他容器

ADD microservice-discovery-eureka-0.0.1-SNAPSHOT.jar app.jar  #復制文件

RUN bash -c 'touch /app.jar'      #run是啟動容器后執行的命令

EXPOSE 9000                           #聲明暴露的端口

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]  #entrypoint 和cmd指令的目的一樣,都是指定Docker容器啟動時執行的命令

Dockerfile文件

 

修改pom.xml

<build>

        <plugins>

            <!-- docker的maven插件,官網:https://github.com/spotify/docker-maven-plugin -->

            <plugin>

                <groupId>com.spotify</groupId>

                <artifactId>docker-maven-plugin</artifactId>

                <version>0.4.12</version>

                <configuration>

                    <!-- 注意imageName一定要是符合正則[a-z0-9-_.]的,否則構建不會成功 -->

                    <!-- 詳見:https://github.com/spotify/docker-maven-plugin Invalid repository

                        name ... only [a-z0-9-_.] are allowed -->

                    <!-- 如果要將docker鏡像push到DockerHub上去的話,這邊的路徑要和repo路徑一致 -->

                    <imageName>eacdy/test</imageName>

                    <!-- 指定Dockerfile所在的路徑 -->

                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>

                    <resources>

                        <resource>

                            <targetPath>/</targetPath>

                            <directory>${project.build.directory}</directory>

                            <include>${project.build.finalName}.jar</include>

                        </resource>

                    </resources>

                    <!-- 以下兩行是為了docker push到DockerHub使用的。 -->

                    <serverId>docker-hub</serverId>

                    <registryUrl>https://index.docker.io/v1/</registryUrl>

                </configuration>

            </plugin>

        </plugins>

</build>

 

 這樣build之后的項目會報找不到2375端口的錯誤

需要我們去修改dockerhost的端口

輸入docker-machine env

 

$Env:DOCKER_TLS_VERIFY = "1"

$Env:DOCKER_HOST = "tcp://192.168.99.100:2376"

$Env:DOCKER_CERT_PATH="C:\Users\Administrator\.docker\machine\machines\default(每個人的路徑都不一樣)

 再去修改pom.xml

<plugin>

    <groupId>com.spotify</groupId>

    <artifactId>docker-maven-plugin</artifactId>

    <version>0.4.12</version>

    <configuration>

        <imageName>eacdy/test</imageName>

        <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>

 

        <!-- 解決Connect to localhost:2375的問題的其中一種方式,注意要跟docker-machine env相一致 -->

        <dockerHost>https://192.168.99.100:2376</dockerHost>

        <dockerCertPath>C:\Users\Administrator\.docker\machine\machines\default</dockerCertPath>

        <resources>

            <resource>

                <targetPath>/</targetPath>

                <directory>${project.build.directory}</directory>

                <include>${project.build.finalName}.jar</include>

            </resource>

        </resources>

        <!-- 以下兩行是為了docker push到DockerHub使用的。 -->

        <serverId>docker-hub</serverId>

        <registryUrl>https://index.docker.io/v1/</registryUrl>

    </configuration>

</plugin>

這樣build的項目就不會報錯了

 

 

(作者本人親測有用)

四、總結

    docker從一個概念到了解,感覺功能還是很強大的,把項目打包成一個鏡像,放到容器里去跑通過暴露出來的端口就可以訪問了,非常方便實用。本文粗劣的介紹了docker的安裝和使用,如果有問題可以留言,寫的不好也忘指出,下一篇繼續介紹docker和微服務相關的知識。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM