1. 程式人生 > 其它 >Java基礎-08(02)總結幫助文件,程式碼塊,繼承

Java基礎-08(02)總結幫助文件,程式碼塊,繼承

Docker

什麼是Docker

Docker 最初是 dotCloud 公司創始⼈ 在法國期間發起的⼀個公司內部項⽬,它是基於 dotCloud 公司多年雲服務技術的⼀次⾰新,並於 ,主要項⽬程式碼在 上進⾏維護。Docker 項⽬後來還加⼊ 了 Linux 基⾦會,併成⽴推動 。 Docker ⾃開源後受到⼴泛的關注和討論,⾄今其 已經超過 5 萬 7 千個星標和⼀萬多個 fork。甚 ⾄由於 Docker 項⽬的⽕爆,在 2013 年底,。Docker 最初是在 Ubuntu 12.04 上開發實現的; Red Hat 則從 RHEL 6.5 開始對 Docker 進⾏⽀持;Google 也在其 PaaS 產品中⼴泛應⽤ Docker。

為什麼要用Docker

作為⼀種新興的虛擬化⽅式,Docker 跟傳統的虛擬化⽅式相⽐具有眾多的優勢。

更⾼效的利⽤系統資源

由於容器不需要進⾏硬體虛擬以及運⾏完整作業系統等額外開銷,Docker 對系統資源的利⽤率更 ⾼。⽆論是應⽤執⾏速度、記憶體損耗或者⽂件儲存速度,都要⽐傳統虛擬機器技術更⾼效。因此,相 ⽐虛擬機器技術,⼀個相同配置的主機,往往可以運⾏更多數量的應⽤。

更快速的啟動時間

傳統的虛擬機器技術啟動應⽤服務往往需要數分鐘,⽽ Docker 容器應⽤,由於直接運⾏於宿主內 核,⽆需啟動完整的作業系統,因此可以做到秒級、甚⾄毫秒級的啟動時間。⼤⼤的節約了開發、 測試、部署的時間。

⼀致的運⾏環境

開發過程中⼀個常⻅的問題是環境⼀致性問題。由於開發環境、測試環境、⽣產環境不⼀致,導致 有些 bug 並未在開發過程中被發現。⽽ Docker 的映象提供了除核心外完整的運⾏時環境,確保 了應⽤運⾏環境⼀致性,從⽽不會再出現 「這段程式碼在我機器上沒問題啊」 這類問題。

持續交付和部署

對開發和運維⼈員來說,最希望的就是⼀次建立或配置,可以在任意地⽅正常運⾏使⽤Docker 可以通過定製應⽤映象來實現持續整合、持續交付、部署。開發⼈員可以通過 來進 ⾏映象構建,並結合 系統進⾏整合測試,⽽運維⼈員則可以直接在⽣產環境中快速部署該映象, 甚⾄結合 系統進⾏⾃動部署。 ⽽且使⽤ 使映象構建透明化,不僅僅開發團隊可以理解應⽤運⾏環境,也⽅便運維團隊理解應⽤ 運⾏所需條件,幫助更好的⽣產環境中部署該映象。

更輕鬆的遷移

由於 Docker 確保了執⾏環境的⼀致性,使得應⽤的遷移更加容易。Docker 可以在很多平臺上運 ⾏,⽆論是物理機、虛擬機器、公有云、私有云,甚⾄是筆記本,其運⾏結果是⼀致的。因此⽤戶可 以很輕易的將在⼀個平臺上運⾏的應⽤,遷移到另⼀個平臺上,⽽不⽤擔⼼運⾏環境的變化導致應 ⽤⽆法正常運⾏的情況。

更輕鬆的維護和擴充套件

Docker 使⽤的分層儲存以及映象的技術,使得應⽤重複部分的復⽤更為容易,也使得應⽤的維護 更新更加簡單,基於基礎映象進⼀步擴充套件映象也變得⾮常簡單。此外,Docker 團隊同各個開源項 ⽬團隊⼀起維護了⼀⼤批⾼質量的 ,既可以直接在⽣產環境使⽤,⼜可以作為基礎進⼀步定製, ⼤⼤的降低了應⽤服務的映象製作成本。

安裝Docker

 ###一鍵安裝
 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
 ###啟動docker並設定自啟
 systemctl daemon-reload && systemctl restart docker && systemctl enable docker

Docker命令

幫助命令

 ### 映象資訊
 docker version
 ### 檢視幫助文件
 docker 命令 --help
 ### docker資訊
 docker info

 

拉取映象

 ### 預設拉取最新的映象
 docker pull nginx
 ### 指定版本下載
 docker pull nginx:1.20.1

檢視映象

 ### 檢視所有映象資訊
 docker images -a
 ### 檢視所有的映象id
 docker images -aq
 [root@Docker ~]# docker images
 REPOSITORY        TAG         IMAGE ID       CREATED             SIZE
 test/static_web   latest      bfd4e845dd3b   8 minutes ago       167MB
 test/apache2      webserver   82fa16703f2f   13 minutes ago      111MB
 test/apache2      latest      399c521dd530   About an hour ago   321MB
 ubuntu            latest      d2e4e1f51132   6 days ago          77.8MB
 devopsil/puppet   latest      31a474a2334e   4 years ago         321MB
​

列表解釋

REPOSITORY 映象的倉庫源

TAG 映象的標籤

IMAGE ID 映象的id

CREATE 映象的建立時間

SIZE 映象的大小

刪除映象

 ### 刪除指定id的映象
 docker rmi 映象id
 ### 刪除指定名稱的映象
 docker rmi nginx:1.20.1
 ### 迭代刪除所有的映象
 docker rm -f IMAGE ID

啟動容器

 [root@Docker ~]# docker run --name gezi -d nginx:latest
 ff3a38fcfc2388ec60adb272cacdd94090fd05ec213be65f26bf3583ec1985d1
 [root@Docker ~]# docker ps
 CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
 ff3a38fcfc23   nginx:latest   "/docker-entrypoint.…"   6 seconds ago   Up 5 seconds   80/tcp    gezi
  • -a stdin: 指定標準輸入輸出內容型別,可選 STDIN/STDOUT/STDERR 三項;

  • -d: 後臺執行容器,並返回容器ID;

  • -i: 以互動模式執行容器,通常與 -t 同時使用;

  • -P: 隨機埠對映,容器內部埠隨機對映到主機的埠

  • -p: 指定埠對映,格式為:主機(宿主)埠:容器埠

  • -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;

  • --name="nginx-lb": 為容器指定一個名稱;

  • --dns 8.8.8.8: 指定容器使用的DNS伺服器,預設和宿主一致;

  • --dns-search example.com: 指定容器DNS搜尋域名,預設和宿主一致;

  • -h "mars": 指定容器的hostname;

  • -e username="ritchie": 設定環境變數;

  • --env-file=[]: 從指定檔案讀入環境變數;

  • --cpuset="0-2" or --cpuset="0,1,2": 繫結容器到指定CPU執行;

  • -m :設定容器使用記憶體最大值;

  • --net="bridge": 指定容器的網路連線型別,支援 bridge/host/none/container: 四種類型;

  • --link=[]: 新增連結到另一個容器;

  • --expose=[]: 開放一個埠或一組埠;

  • --volume , -v: 繫結一個卷

停止容器 

### 啟動已被停止的容器myrunoob
 docker start myrunoob
 ### 停止執行中的容器myrunoob
 docker stop myrunoob
 ### 重啟容器myrunoob
 docker restart myrunoob

進入容器

 [root@Docker ~]# docker exec -it ff3a38fcfc23  /bin/bash
 root@ff3a38fcfc23:/# exit
 exit
  • -d :分離模式: 在後臺執行

  • -i :即使沒有附加也保持STDIN 開啟

  • -t :分配一個偽終端