java基礎-day66-Docker

1.1 環境不一致

我本地運行沒問題啊:由于環境不一致,導致相同的程序,運行結果卻不一致。

1.2 隔離性

哪個哥們又寫死循環了,怎么這么卡:在多用戶的操作系統下,會因為其他用戶的操作失誤影響到你自己編些的程序。

1.3 彈性伸縮

淘寶在雙11的時候,用戶量暴增:需要很多很多的運維人員去增加部署的服務器,運維成本過高的問題。

1.4 學習成本

學習一門技術,得先安裝啊:學習每一門技術都要先安裝響應的軟件,但是還有他所依賴的各種環境,安裝軟件成本快高過學習成本啦。

二、Docker介紹


2.1 Docker的由來

一幫年輕人創業,創辦了一家公司,2010年的專門做PAAS平臺。但是到了2013年的時候,像亞馬遜,微軟,Google都開始做PAAS平臺。到了2013年,公司資金鏈斷裂,不得不倒閉,于是將公司內的核心技術對外開源,核心技術就是Docker。由于開源了Docker,到了2014年的時候,得到了C輪的融資 4000W,2015年的時候,得到了D輪的融資.9500W。于是公司開始全神貫注的維護Docker。

Docker主要作者-所羅門
image.png
Docker的作者已經離開了維護Docker的團隊
image.png

2.2 Docker的思想

  • 集裝箱:會將所有需要的內容放到不同的集裝箱中,誰需要這些環境就直接拿到這個集裝箱就可以了。

  • 標準化:

    • 運輸的標準化:Docker有一個碼頭,所有上傳的集裝箱都放在了這個碼頭上,當誰需要某一個環境,就直接指派大海去搬運這個集裝箱就可以了。
    • 命令的標準化:Docker提供了一些列的命令,幫助我們去獲取集裝箱等等操作。
    • 提供了REST的API:衍生出了很多的圖形化界面,Rancher。
  • 隔離性:Docker在運行集裝箱內的內容時,會在Linux的內核中,單獨的開辟一片空間,這片空間不會影響到其他程序。

  • 中央倉庫|注冊中心:超級碼頭,上面放的就是集裝箱

  • 鏡像:就是集裝箱

  • 容器:運行起來的鏡像

三、Docker的安裝


3.1 下載Docker依賴的環境

想安裝Docker,需要先將依賴的環境全部下載,就像Maven依賴JDK一樣

參考:https://developer.aliyun.com/article/110806

如果已安裝,可以先刪除

[root@localhost ~]# yum -y remove docker-ce

[root@localhost local]# yum -y install yum-utils device-mapper-persistent-data lvm2

3.2 指定Docker鏡像源

默認下載Docker回去國外服務器下載,速度較慢,我們可以設置為阿里云鏡像源,速度更快

[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.3 安裝Docker

依然采用yum的方式安裝

[root@localhost ~]# yum makecache fast
[root@localhost ~]# yum -y install docker-ce

3.4 啟動Docker并測試

安裝成功后,需要手動啟動,設置為開機自啟,并測試一下Docker

# 啟動Docker服務
[root@localhost ~]# systemctl start docker
# 測試 hello-world
[root@localhost ~]# docker run hello-world

注:關閉防火墻之后docker需要重啟

[root@localhost ~]#service docker restart

四、Docker的中央倉庫【重點


# 需要創建/etc/docker/daemon.json,并添加如下內容
{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "insecure-registries": ["ip:port"]   
}
# 重啟兩個服務
systemctl daemon-reload
systemctl restart docker

五、鏡像的操作【重點


5.1 拉取鏡像

從中央倉庫拉取鏡像到本地

docker pull 鏡像名稱[:tag]

[root@localhost ~]# docker pull daocloud.io/library/tomcat:8.5.15-jre8

5.2 查看本地全部鏡像

查看本地已經安裝過的鏡像信息,包含標識,名稱,版本,更新時間,大小

[root@localhost ~]# docker images

5.3 刪除本地鏡像

鏡像會占用磁盤空間,可以直接手動刪除,表示通過查看獲取

docker rmi 鏡像的標識(需要先刪除該鏡像創建的容器)

[root@localhost ~]# docker rmi b8dfe9ade316

5.4 鏡像的導入導出

如果因為網絡原因可以通過硬盤的方式傳輸鏡像,雖然不規范,但是有效,但是這種方式導出的鏡像名稱和版本都是null,需要手動修改

# 將本地的鏡像導出
docker save -o 導出的路徑 鏡像id

# 導出到當前路徑,鏡像命名為:mytomcat
[root@localhost ~]# docker save -o ./mytomcat b8dfe9ade316

# 加載本地的鏡像文件
docker load -i 鏡像文件

[root@localhost ~]# docker load -i mytomcat

# 修改鏡像名稱
docker tag 鏡像id 新鏡像名稱:版本

[root@localhost ~]# docker tag b8dfe9ade316 tomcat:8.5

六、容器操作【重點


6.1 運行容器

運行容器需要制定具體鏡像,如果鏡像不存在,會直接下載

# 簡單操作
docker run 鏡像的標識|鏡像名稱[:tag]

# 常用的參數
docker run -d -p 宿主機端口:容器端口 --name 容器名稱 鏡像的標識|鏡像名稱[:tag]
# -d:代表后臺運行容器
# -p 宿主機端口:容器端口:為了映射當前Linux的端口和容器的端口
# --name 容器名稱:指定容器的名稱(自定義)

[root@localhost ~]# docker run -d -p 8888:8080 --name mytomcat8.5 b8dfe9ade316

# 測試:瀏覽器訪問 虛擬機ip:8888

6.2 查看正在運行的容器

查看全部正在運行的容器信息

docker ps [-qa]
# -a:查看全部的容器,包括沒有運行
# -q:只查看容器的標識

[root@localhost ~]# docker ps

6.3 查看容器日志

查看容器日志,以查看容器運行的信息

docker logs -f 容器id
# -f:可以滾動查看日志的最后幾行

[root@localhost ~]# docker logs -f 4411f56f1fbb

6.4 進入容器內容部

可以進入容器內部進行操作

docker exec -it 容器id bash

[root@localhost ~]# docker exec -it 4411f56f1fbb bash

# 退出當前容器 exit
root@4411f56f1fbb:/usr/local/tomcat# exit

6.5 復制內容到容器

將宿主機的文件復制到容器內部的指定目錄

docker cp 文件名稱 容器id:容器內部路徑

# 把主機root目錄下的a.txt文件拷貝到容器的temp目錄下(由于tomcat默認路徑在/usr/local/tomcat)
[root@localhost ~]# docker cp /root/a.txt 441:/usr/local/tomcat/temp

# 把容器的temp目錄下的a.txt拷貝到主機root目錄下
[root@localhost ~]# docker cp 441:/usr/local/tomcat/temp/a.txt /root

6.6 重啟&啟動&停止&刪除容器

容器的啟動,停止,刪除等操作,后續經常會使用到

# 重新啟動容器
[root@localhost ~]# docker restart 容器id

# 啟動停止運行的容器
[root@localhost ~]# docker start 容器id

# 停止指定的容器(刪除容器前,需要先停止容器)
[root@localhost ~]# docker stop 容器id

# 停止全部容器
[root@localhost ~]# docker stop $(docker ps -qa)

# 刪除指定容器
[root@localhost ~]# docker rm 容器id

# 刪除全部容器
[root@localhost ~]# docker rm $(docker ps -qa)
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容