Docker——簡單部署及基礎操作


在這裏插入圖片描述

什麼是Docker?

  • 是一種輕量級的“虛擬機”
  • 在linux容器裏運行應用的開源工具

官網:www.docker.com

官方文檔網站:www.docs.docker.com

一、docker概述

1、Docker概念

Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的Linux或Windows機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

  • 鏡像
  • 容器
  • 倉庫

2、Docker設計的目標

  • 提供簡單的應用程序打包工具
  • 開發人員和運維人員邏輯分離
  • 多環境保持一致性

3、docker的應用場景

  • 打包應用程序簡化部署

  • 可脫離底層硬件任意遷移

  • 應用程序打包和發佈

  • 應用程序隔離

  • 持續集成

  • 部署微服務

  • 快速搭建測試環境

  • 提供PaaS產品(平臺即服務)

4、Docker的組成

在這裏插入圖片描述

  • Docker Client:客戶端
  • Docker Daemon:守護進程
  • Docker Images:鏡像
  • Docker Container:容器
  • Docker Registry:鏡像倉庫

客戶端,客戶操作的界面環境——會與守護進程daemon對接——下達指令創建鏡像,可以直接執行,也可以從倉庫中直接拉取到本地然後下載(防火牆原因,所以下載需要用第三方加速器,如阿里雲加速器)

不同的鏡像製作不同的容器,會提供一個端口,通過端口可以訪問應用容器

彼此應用間是隔離的,也就是解耦

具備彈性伸縮

5、docker與虛擬機的區別

在這裏插入圖片描述

vm→物理環境→宿主系統(linux)→虛擬化監控平臺(加載虛擬化資源:硬盤 網卡 內存)→安裝系統(完整的主機)

容器→物理環境→宿主系統(linux)→docker引擎(進程的管理機制)

docker 與宿主系統共享內核資源,如果某個容器資源悲情如,很容易影響到宿主系統,則會影響到其他的應用

面試中的注意點:

VM Container容器
啓動速度 分鐘級 秒級
運行性能 5%左右損失 接近原生
磁盤佔用 GB MB
數量 一般幾十臺 成百上千
隔離性 系統級(更徹底) 進程級別
操作系統 幾乎所有 主要支持linux
封裝程度 完整的操作系統 只打包項目代碼和依賴關係,共享宿主機內核

6、支持平臺

  • Linux(CentOS,Debian,Fedora,Oracle Linux,RHEL,SUSE和Ubuntu)
  • Mac
  • Windows
    在這裏插入圖片描述

CentOS安裝Docker的兩種方式

  • 使用curl 獲得Docker的安裝腳本進行安裝
  • 使用yum倉庫來安裝Docker

二、部署19版Docker

1、環境部署

#關閉防火牆及核心防護

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# systemctl disable firewalld.service 

[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i '7s/enforcing/disabled/' /etc/selinux/config

#安裝依賴包

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

2、設置阿里雲鏡像源

在這裏插入圖片描述

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

在這裏插入圖片描述

3、安裝Docker-CE

[root@localhost ~]# yum install -y docker-ce
[root@localhost ~]# systemctl starat docker.service
[root@localhost ~]# systemctl enable docker.service

這時docker就已經啓動了,但是裏面是全空的。可以查到docker命令的位置,在/usr/bin中可以被系統所識別
在這裏插入圖片描述

4、鏡像加速

到目前爲止,只是將docker引擎開起來了

下載鏡像資源是從官方公有的倉庫,下載會很慢,會卡死,所以需要使用鏡像加速

鏡像加速地址如何獲取?
見:Docker鏡像加速

[root@localhost docker]# tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://7rp8a2t8.mirror.aliyuncs.com"]
}
EOF
[root@localhost docker]# systemctl daemon-reload 
[root@localhost docker]# systemctl restart docker.service 

在這裏插入圖片描述

這時下載鏡像就會很快,不會卡死

5、網絡優化

在下載鏡像資源時會出現克重報錯,很大可能就是沒開啓數據包轉發功能

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@localhost ~]# sysctl -p		//生效

#重啓網卡及docker

[root@localhost ~]# service network restart
[root@localhost ~]# systemctl restart docker.service

目前爲止docker引擎及環境全部部署好了

三、鏡像的操作管理

docker version //查看版本
docker search //搜索鏡像
docker pull //下載鏡像
docker images //查看已有鏡像***
docker inspect 231d //獲取鏡像信息

docker tag //添加新標籤,相當於定義了一個別名

docker rmi //刪除鏡像:rmi i相當於image

docker save -o 文件名 鏡像
docker save -o nginx nginx:latest //存出鏡像命名爲nginx存在當前目錄下

docker load < nginx //鏡像導入,建議使用load(docker --input nginx)

#查看版本信息:docker version
在這裏插入圖片描述

#需要安裝nginx應用,首先要搜索並下載nginx鏡像

語法:docker search 名稱 //搜索鏡像

[root@localhost ~]# docker search nginx			//搜索關於nginx的所有鏡像,遍歷公有倉庫中所有nginx鏡像

在這裏插入圖片描述

#語法:docker pull 名稱 //下載鏡像

[root@localhost ~]# docker pull nginx			//下載nginx鏡像

在這裏插入圖片描述

#語法:docker images //查看已有鏡像

在這裏插入圖片描述
在這裏插入圖片描述
#語法:docker inspect 鏡像ID //獲取鏡像信息

[root@localhost ~]# docker inspect ed21b7a8aee9

在這裏插入圖片描述

#語法:docker tag 原本標籤 更改後標籤 //添加新標籤,相當於定義了一個別名

[root@localhost ~]# docker tag nginx:latest nginx:web	//新定義了一個web標籤

在這裏插入圖片描述

#語法:docker rmi 鏡像名 //刪除鏡像:rmi i相當於image

也可使用:docker rmi 鏡像ID

當前鏡像如果有多條標籤別名,按名稱標籤刪除只是刪除該條標籤的鏡像

如果只有最後一條鏡像,按名稱刪除後則徹底刪除了

[root@localhost ~]# docker rmi nginx:latest 

在這裏插入圖片描述

#語法:docker save -o 定義文件名 鏡像 //導出鏡像並保存
[root@localhost abc]# docker save -o nginx nginx:latest //導出鏡像命名爲nginx保存在當前目錄下
在這裏插入圖片描述
#鏡像導入(不需要使用倉庫,之前已經保存在/abc中,現在可以直接執行導入),建議使用方法一

方法一:語法:docker load < 鏡像名

方法二:語法:docker --input 鏡像名

[root@localhost abc]# docker load < nginx

在這裏插入圖片描述

四、容器的操作管理

1、查看容器運行狀態

語法: docker ps [選項]

-a 列出最近一次啓動的容器

[root@localhost ~]# docker ps -a 		//查看容器狀態

在這裏插入圖片描述

此時並沒有容器

2、創建容器

語法:docker create [選項] 鏡像運行的程序

  • -i 讓容器的標準輸入保持打開
  • -t 讓docker分配一個僞終端
[root@localhost ~]# docker create -it nginx:latest /bin/bash

在這裏插入圖片描述

#現在在看一下,已經有容器了
在這裏插入圖片描述

3、啓動容器

語法:docker start 容器ID

在這裏插入圖片描述
在這裏插入圖片描述

4、run一次性執行

容器運行三部曲:下載鏡像——創建容器——啓動容器

比如下載一個centos7的容器

原本步驟應該是:

docker pull centos:7

docker create -it centos:7 /bin/bash

docker start 容器id

現在使用docker run 命令,一次性執行,執行完成直接關閉,狀態是exited,不會持續佔用系統資源

[root@localhost ~]# docker run centos:7 /usr/bin/bash -c ls

-c 啓動完成後會去執行ls

在這裏插入圖片描述

使用run命令:run會自動去找本地中有沒有需要的鏡像,如果有,則不會再去下載,會直接執行下面的創建啓動等操作,如果沒有,則會去倉庫中下載鏡像,然後繼續執行後面的操作

在這裏插入圖片描述

5、run持續後臺執行

使用dockrt run執行完成後是直接退出的,如果加上一個while死循環,則可以保持執行完成後不退出,繼續保持進程

[root@localhost ~]# docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"

在這裏插入圖片描述

6、終止運行

語法:docker stop 容器ID

[root@localhost ~]# docker stop dd034572ae67

在這裏插入圖片描述

7、進入容器

進入有兩種方式

run:可以在容器未開啓,直接使用run進入

[root@localhost ~]# docker run -it nginx:latest /bin/bash

在這裏插入圖片描述

exec:只有在容器up開啓狀態才能進入

[root@localhost ~]# docker exec -it f169ab57906f /bin/bash

在這裏插入圖片描述

8、退出容器

exit就可以直接退出
在這裏插入圖片描述

9、容器導出

語法:docker export 容器ID > 自定義名稱

[root@localhost ~]# docker export f169ab57906f > nginx_ml

在這裏插入圖片描述

10、容器導入

會生成鏡像,而不會創建容器

語法:cat 容器名稱 | docker import - 定義鏡像名稱

[root@localhost ~]# cat nginx_ml | docker import - nginx:web

在這裏插入圖片描述

11、刪除容器

語法:docker rm 容器ID

在這裏插入圖片描述

12、批量刪除容器

容器在up開啓狀態是無法刪除的

如果想要批量刪除,僅保留up狀態的容器,其餘全部刪除,就可以使用批量刪除,提高效率
docker ps -a | awk ‘{print "docker rm "$1}’ | bash
在這裏插入圖片描述
以上均爲docker的基本操作,後續還會繼續學習併發布

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