菜鳥入門Docker

說明

最近在學習docker時,發現網上很多教程都是很老的教程,導致本人在學習時遇到各種各樣的坑,爲了方便以後查看,現將學習相關筆記記錄在這裏。
本文僅爲記錄學習軌跡,如有侵權,聯繫刪除

一、什麼是Docker

在學習docker時,在網上看到一篇博文講得很好,自己總結一下就是,Docker 將應用程序與該程序的依賴,打包在一個文件裏面,改文件包括了所有打包得應用程序的所有依賴,像數據庫等;直接運行改文件,就可以讓程序跑起來,從而不用再去考慮環境問題。

(1)虛擬機和Linux容器

  • 說到Docker就必須瞭解虛擬機和Linux容器,虛擬機可以實現在一種操作系統裏面運行另一種操作系統,比如在 Windows 系統裏面運行 Linux 系統等,而且不會對實際的電腦產生影響,不想用時將虛擬機相關文件刪掉即可,用戶可以通過虛擬機還原軟件的原始環境,實際上就是解決了配置環境的問題。儘管它有資源佔用多,啓動慢等缺點。

  • Linux容器是爲了解決虛擬機的確缺點而生的,Linux 發展出了另一種虛擬化技術:Linux 容器(Linux Containers,縮寫爲 LXC)。Linux 容器不是模擬一個完整的操作系統,而是對進程進行隔離。或者說,在正常進程的外面套了一個保護層。對於容器裏面的進程來說,它接觸到的各種資源都是虛擬的,從而實現與底層系統的隔離。由於容器是進程級別的,相比虛擬機有很多優勢。像啓動快、資源佔用少等

  • 而Docker 就是屬於 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。就像一開始說的,Docker 將應用程序與該程序的依賴,打包在一個文件裏面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器裏運行,就好像在真實的物理機上運行一樣。有了 Docker,就不用擔心環境問題

二、Docker用途

這裏引用網上某博主的部分內容,Docker 的主要用途,目前有三大類。

(1)提供一次性的環境。比如,本地測試他人的軟件、持續集成的時候提供單元測試和構建的環境。

(2)提供彈性的雲服務。因爲 Docker 容器可以隨開隨關,很適合動態擴容和縮容。

(3)組建微服務架構。通過多個容器,一臺機器可以跑多個服務,因此在本機就可以模擬出微服務架構。

三、Docker安裝

說明:由於Docker需要Linux內核的支持,所以本人在自己的電腦(window10)安裝了VMware虛擬機,在虛擬機裏面安裝了一個ubuntu系統,在這基礎上進行Docker的安裝,安裝參考了菜鳥教程,鏈接:https://www.runoob.com/docker/ubuntu-docker-install.html

(1)設置倉庫

卸載舊版本

$ sudo apt-get remove docker docker-engine docker.io containerd runc

更新 apt 包索引

$ sudo apt-get update

安裝 apt 依賴包,用於通過HTTPS來獲取倉庫

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加 Docker 的官方 GPG 密鑰

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通過搜索指紋的後8個字符,驗證您現在是否擁有帶有指紋的密鑰。

$ sudo apt-key fingerprint 0EBFCD88

使用以下指令設置穩定版倉庫

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

(2)安裝 Docker Engine-Community

更新 apt 包索引

$ sudo apt-get update

安裝最新版本的 Docker Engine-Community 和 containerd

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

(3)驗證安裝成功

輸入命令:docker,出現以下命令即安裝成功
在這裏插入圖片描述

四、Docker啓動與停止

(1)啓動docker

sudo service docker start

(2)停止docker

sudo service docker stop

(3)重啓docker

sudo service docker restart

五、Docker配置

(1)將用戶加入 Docker 用戶組

Docker 需要用戶具有 sudo 權限,爲了避免每次命令都輸入sudo,建議將用戶加入Docker用戶組

  • 添加docker用戶組
    sudo groupadd docker
  • 將當前用戶加入到docker用戶組
    sudo gpasswd -a ${USER} docker
  • 重啓docker服務
    sudo service docker restart
  • 退出當前用戶重登一下

(2)配置daemon.json

本人一開始安裝完Docker後,啓動docker服務,直接拉取 image文件(注意:不是圖片,後面有講到image文件)後直接報錯,顯示超時,因爲默認網址是國外的,需要配置國內鏡像

  • 進入root權限
    su root
    在這裏插入圖片描述
  • 進入docker文件
    查看改文件下只有一個key.json,新建一個daemon.json文件
    查看文件夾命令:ls
    新建文件夾命令:vim daemon.json
    在這裏插入圖片描述
  • 編輯docker.json文件
    輸入以下內容:
    { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] }
    在這裏插入圖片描述
    保存退出,重啓docker服務

六、image 文件

Docker 把應用程序及其依賴,打包在 image 文件裏面。只有通過這個文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根據 image 文件生成容器的實例。同一個 image 文件,可以生成多個同時運行的容器實例。
簡單理解就是,將程序打包在image文件(也叫image倉庫)裏面,運行image文件,生成一個容器生例,容器裏面跑程序(已將mysql之類的依賴都打包在裏面了,不用去配置數據庫等環境)
也就是說,別人的程序打包在image裏面,自己直接拿過來後不用配置環境就可以直接跑(很神奇)

# 列出本機的所有 image 文件。
$ docker image ls

# 刪除 image 文件
$ docker image rm [imageName]

在這裏插入圖片描述
hello-world是自己手動下載的image倉庫

七、安裝Hello-world實例

命令行直接輸入

命令:docker image pull library/hello-world

命令解析:
	docker image pull:抓取 image 文件
	library:image 文件所在的組
	hello-world:image 文件的名字
	注意:後期需要的image文件都可以通過這樣的方式拉取,像mysql數據庫,ubuntu系統等

其中Docker 官方提供的 image 文件,都默認放在library組裏面,因此,上面的命令可以寫成下面這樣。

docker image pull hello-world

運行該實例

命令:docker container run hello-world

命令解析:
	docker container run:自動抓取 image 文件
	注意:如果發現本地沒有指定的 image 文件,就會從倉庫自動抓取

運行結果
在這裏插入圖片描述
注意:輸出這段提示以後,hello world就會停止運行,容器自動終止。對於那些不會自動終止的容器,必須使用docker container kill 命令手動終止。

$ docker container kill [containID]

八、容器文件

image 文件生成的容器實例,本身也是一個文件,稱爲容器文件。也就是說,一旦容器生成,就會同時存在兩個文件: image 文件和容器文件。而且關閉容器並不會刪除容器文件,只是容器停止運行而已。

# 列出本機正在運行的容器
$ docker container ls

# 列出本機所有容器,包括終止運行的容器
$ docker container ls --all

上面命令的輸出結果之中,包括容器的 ID。很多地方都需要提供這個 ID,比如上一節終止容器運行的docker container kill命令。

終止運行的容器文件,依然會佔據硬盤空間,可以使用docker container rm命令刪除。

$ docker container rm [containerID]

運行上面的命令之後,再使用docker container ls --all命令,就會發現被刪除的容器文件已經消失了。

至此,Docker基本入門結束,該博文參考了網上大多Docker教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章