天天看點

年輕人的第一個 Docker 應用,大大提高生産力!

哈哈,标題我抄了雷總的,不重要哦,重要的是 Docker 真的很年輕,雖然現在才不到 8 歲,但卻是個冉冉升起的巨星,火得一塌糊塗。

這幾年 Docker 實在太火了,Docker 是幹嘛的?做 Java 的怎麼能不知道 Docker?是以,本篇棧長帶大家來做第一個 Docker 應用,你就有個基本認識了。

可能有些人覺得 Docker 和自己沒多大關系,自己寫好代碼就行了,Docker 那是運維用的東西,看完這篇,我想改變你的想法。

一、什麼是 Docker?

Docker 是現在最主流的開源容器,遵循 Apache 2.0 協定,使用 GO 語言進行開發,始于 2013 年,現已加入 Linux 基金會。

Docker 的核心思想是:"Build once, Run anywhere",即:一次建構,處處運作,這裡可以是一個作業系統、一個 Web 應用,或者一個資料庫服務等。

我們可以将 Docker 了解為一個輕量級的沙盒,Docker 容器完全使用沙盒機制,每個容器内都有其獨立運作的環境群組件,容器之間是互相隔離互不影響的,也可以進行容器間的通信。

Docker 支援所有主流的作業系統,如:Linux/Mac/Windows,所有主流的雲服務也支援 Docker,是以,我們可以将應用及依賴、環境資訊等打包到一個 Docker 容器中,可以很輕松的實作應用釋出、遷移等。

Docker 官網:

https://www.docker.com/ Docker 代碼托管: https://github.com/docker

二、安裝 Docker

Docker 有社群版、企業版。社群版是開源免費的,企業版是收費的,當然也會有更牛逼的特性和服務,一般的應用社群版的足夠了。

Docker 的安裝十分簡單,棧長這裡以 Mac 和 Docker 社群版為例作為安裝示範。

打開 Docker 開始頁:

https://www.docker.com/get-started
年輕人的第一個 Docker 應用,大大提高生産力!

下載下傳 Mac 版 Docker 安裝包直接安裝即可。

安裝完後使用

docker -v

指令進行可以檢視 Docker 版本:

$ docker -v
Docker version 19.03.13, build 4484c46d9d、      

使用 

docker version

 還可以看到完整版本資訊:

docker version
Client: Docker Engine - Community
 Cloud integration  0.1.18
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 16:58:31 2020
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:07:04 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683      

看到 Docker 版本資訊表示安裝成功了。

三、啟動 Docker

Mac 版本的 Docker 隻要點選應用圖示進入就自動啟動了,也可以設定開機自動啟動。

Mac 版 Docker 官方就自帶了控制台用戶端,通過 Dashboard 菜單進入。

年輕人的第一個 Docker 應用,大大提高生産力!

通過控制台可以進行容器、鏡像的管理、設定等。

總之 Docker 的安裝和啟動都非常簡單,不同的系統環境都可以輕松完成。

四、第一個 Docker 應用

熟悉 Tomcat 的朋友都知道,Tomcat 安裝後 Webapp 下面會自帶一些 Web 項目。關于 Tomcat 系列教程可以關注公衆号Java技術棧搜尋閱讀。

Docker 也是如此,Docker 安裝完後也會自帶一些鏡像,可以在控制台中看到,也可以使用docker images 指令檢視本地所有 Docker 鏡像。

如下圖所示,切換到 Images:

年輕人的第一個 Docker 應用,大大提高生産力!

Docker 自帶了一個 docker tutorial 鏡像,這是一個學習 Docker 的向導鏡像,本身是一個 Web 應用的鏡像,怎麼把它啟動起來呢?

鏡像隻是一個隻讀的靜态檔案,不能運作,容器才是鏡像的運作執行個體,是以需要新增一個容器來運作。

用戶端運作

最簡單的方法是點選該鏡像右邊的運作按鈕:

年輕人的第一個 Docker 應用,大大提高生産力!

在上面的對話框中填寫容器的必要資訊,如這裡容器的端口和映射本機的端口都是 80,最後點選運作按鈕。

年輕人的第一個 Docker 應用,大大提高生産力!

這裡 Docker 容器中多了一個剛才建立的 docker-tutorial 容器,并且運作在 80 端口。

那麼我們來通路一下這個 Docker 應用,通過該容器右側的打開浏覽器或者輸入 http://localhost/ 進行通路:

年輕人的第一個 Docker 應用,大大提高生産力!

恭喜你,已經運作成功了!

指令行運作

用戶端操作隻是輔助,指令行才是精髓,學習 Docker 我們也要記住常用的指令,其實我們剛才建立容器、運作容器都是通過這條指令一次完成的:

docker run -d -p 80:80 docker/getting-started

這樣就等同于基于鏡像建立容器、再運作該容器。

簡單解釋下各個參數的意思:

年輕人的第一個 Docker 應用,大大提高生産力!

也可以縮簡成:

docker run -dp 80:80 docker/getting-started

是以還是以這個鏡像為例,先在用戶端停掉該容器,然後再用指令來啟動下:

$ docker run -dp 80:80 docker101tutorial
9df38488adcc2a53dad65691854ffc603e1fb3e25954183b83200809805b0d93      

啟動成功會輸出該容器的 ID.

通過

docker ps

指令可以檢視所有正在運作中的容器:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
9df38488adcc        docker101tutorial   "/docker-entrypoint.…"   3 minutes ago       Up 3 minutes        0.0.0.0:80->80/tcp   hopeful_gauss      

可以看到,我們的 docker101tutorial 容器又運作起來了,也可以正常通路。

另外,通過 docker ps -a 指令可以檢視所有容器。

四、結語

本文棧長簡單介紹了下 Docker 的基本概念,Docker 的安裝和啟動,以及第一個 Docker 應用的運作。

有了 Docker 鏡像,我們就能在任何安裝有 Docker 的機器上運作,不用再重複配置環境安裝依賴等,是不是很爽?

Docker 公共倉庫中還有許多官方提供好的鏡像,如:Nginx、MySQL、Redis 等,都可以直接就能拿來用,是以,别再說 Docker 隻是運維用的東西,和 Java 開發沒多大關系,用好它,我們開發效率杠杠的,也能提高我們的技術水準。

好了,第一個年輕人的 Docker 應用就到這裡了,後續棧長還會帶來更多 Docker 實用性的教程,比如 Spring Boot 的部署以及與 IDEA 的內建使用等,關注公衆号Java技術棧第一時間推送。