Docker入門

Docker簡介

Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

Docker的應用場景

  1. 虛擬機的粒度是“虛擬出的機器”,而 Docker 的粒度則是“被限制的應用”,相比較而言 Docker 的內存佔用更少,更加輕量級。
  2. Docker 可以很好地和微服務結合起來。從概念上來說,一個微服務便是一個提供一整套應用程序的部分功能,Docker便可以在開發、測試和部署過程中一直充當微服務的容器。
  3. 甚至生產環境也可以在 Docker 中部署微服務。 Web 應用的自動化打包和發佈。
  4. 自動化測試和持續集成、發佈。 在服務型環境中部署和調整數據庫或其他的後臺應用。
  5. 從頭編譯或者擴展現有的 OpenShift 或 Cloud Foundry 平臺來搭建自己的環境。

Docker的架構

Docker 鏡像(Images) 是用於創Docker 鏡像建 Docker 容器的模板。
Docker 容器(Container) 容器是獨立運行的一個或一組應用。
Docker 客戶端(Client) Docker 客戶端通過命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 與 Docker 的守護進程通信。

Docker 主機(Host) 一個者物理或虛擬的機器用於執行 Docker 守護進程和容器。
Docker 倉庫(Registry) Docker 倉庫用來保存鏡像,可以理解爲代碼控制中的代碼倉庫。
Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。

Centos7安裝Docker

1、Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當前的內核版本
$ uname -r

2、使用 root 權限登錄 Centos。確保 yum 包更新到最新。
$ yum update

3、卸載舊版本(如果安裝過舊版本的話)
$ yum remove docker docker-common docker-selinux docker-engine

4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
$ yum install -y yum-utils device-mapper-persistent-data lvm2

5、設置yum源
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6,安裝最新版本的Docker
$ yum install docker-ce docker-ce-cli containerd.io

7,啓動Docker並設置開機啓動
$ systemctl start docker
$ systemctl enable docker

8,驗證是否安裝成功docker version
在這裏插入圖片描述
出現了上圖版本號就是成功了

配置阿里雲

默認的遠程倉庫 https://hub.docker.com/下載網速很慢,所以我們配置下阿里雲的鏡像倉庫
1、我們先登錄阿里雲的服務地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
2、找到我們需要配置的地址
在這裏插入圖片描述
3、然後我們執行命令:cd /etc/docker/ 進入文件夾,然後輸入:ll 找到daemon.json文件,沒有的話就新建:vi daemon.json,就會進入下圖,我們只需要把上圖紅框裏面的地址copy到裏面,然後按Esc,然後輸入命令 :wq(:是命令的一部分),就更改完成了
在這裏插入圖片描述
4、重啓daemon
systemctl daemon-reload

5、重啓docker服務
systemctl restart docker

我們就能下載東西了,並且速度會快很多

然後運行 docker run hello-world,首先本地倉庫未能找到該鏡像,然後去遠程倉庫尋找以及下載該鏡像,所以我們再執行這個命令時就能看到hello world了
在這裏插入圖片描述

Docker基本命令

下載鏡像官網:https://hub.docker.com/
我們搜索我們需要下載的鏡像,比如我們的centos,然後回車
在這裏插入圖片描述
在這裏插入圖片描述
下載命令:docker pull 鏡像名稱:[TAG]
不加版本就是默認最新版本

下載好了我們能執行命令:docker images查看我們所有鏡像
在這裏插入圖片描述
REPOSITORY 鏡像的倉庫源
TAG 鏡像的標籤(版本)同一個倉庫有多個TAG的鏡像,多個版本;我們用REPOSITORY:TAG來定義不同的鏡像;
IMAGE ID 鏡像ID,鏡像的唯一標識
CREATE 鏡像創建時間
SIZE 鏡像大小

docker images OPTIONS

OPTIONS 可選參數:
-a 顯示所有鏡像(包括中間層)
-q 只顯示鏡像ID
-qa 可以組合
–digests 顯示鏡像的摘要信息
–no-trunc 顯示完整的鏡像信息

啓動Docker
systemctl start docker

停止Docker
systemctl stop docker

重啓Docker
systemctl restart docker

開機啓動Docker
systemctl enable docker

查看Docker概要信息
docker info

查看Docker幫助文檔
docker --help

查看Docker版本信息
docker version

刪除鏡像
1、docker rmi 鏡像名
有鏡像生成的容器再運行時候,會報錯,刪除失敗,我們需要加 -f 強制刪除
docker rmi -f 鏡像名

2,刪除多個:docker rmi -f 鏡像名稱1:[TAG] 鏡像名稱2:[TAG]
中間空格隔開

3,刪除全部:docker rmi -f $(docker images -qa)

Docker創建並啓動容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

–name=“容器新名字”:爲容器指定一個名稱;
-i:以交互模式運行容器,通常與-t或者-d同時使用;
-t:爲容器重新分配一個僞輸入終端,通常與-i同時使用;
-d: 後臺運行容器,並返回容器ID;
-P: 隨機端口映射,容器內部端口隨機映射到主機的端口
-p: 指定端口映射,格式爲:主機(宿主)端口:容器端口

啓動容器的3種方式
1、啓動普通容器: docker run --name 別名 鏡像ID
2、啓動交互式容器: docker run -it --name 別名 鏡像ID 來運行一個容器,取別名,交互模式運行,以及分配一個僞終端,並且進入僞終端
3、docker run -di --name 別名 鏡像ID

it的啓動方式就是會直接進入你開啓的容器的路徑,而di不會

查詢Docker容器

docker ps [OPTIONS]

OPTIONS說明:
-a :顯示所有的容器,包括未運行的。
-f :根據條件過濾顯示的內容。
–format :指定返回值的模板文件。
-l :顯示最近創建的容器。
-n :列出最近創建的n個容器。
–no-trunc :不截斷輸出。
-q :靜默模式,只顯示容器編號。
-s :顯示總的文件大小。

docker ps 查看正在運行的容器
docker ps -a 查看所有容器
docker ps -n 2 顯示最近創建的2個容器
docker ps -f status=exited 查看停止的容器

Docker退出容器

exit 容器停止退出
ctrl+P+Q 容器不停止退出

Docker進入容器

docker attach 容器ID or 容器名

Docker啓動容器

docker start 容器ID or 容器名

Docker重啓容器

docker restart 容器ID or 容器名

Docker停止容器
docker stop 容器ID or 容器名

Docker刪除容器

docker rm 容器ID
一樣的,如果再啓動中刪除會報錯,需要加-f
刪除所有容器
docker rm -f $(docker ps -qa)

Docker容器日誌

docker logs [OPTIONS] CONTAINER
Options:
–details 顯示更多的信息
-f, --follow 跟蹤實時日誌
–since string 顯示自某個timestamp之後的日誌,或相對時間,如42m(即42分鐘)
–tail string 從日誌末尾顯示多少行日誌, 默認是all
-t, --timestamps 顯示時間戳
–until string 顯示自某個timestamp之前的日誌,或相對時間,如42m(即42分鐘)

最直接的方法
我們可以直接找到他的日誌文件:/var/lib/docker/containers/
然後把這些文件copy下來,再自己看
在這裏插入圖片描述
end…

發佈了142 篇原創文章 · 獲贊 931 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章