Centos7安裝Docker


Docker概述

Docke為何出現?

問題:

一款產品,從開發到上線,兩套環境![應用環境,應用配置]

從開發到運維。在開發的電腦可以運行,到運維那出問題!后續版本更新,導致服務不可用等等!對運維來說,考驗十分大。

環境配置是十分麻煩的,每一個機器都要部署環境(集群Redis、ES、Hadoop等等)費時費力。

所以發布一個項目(jar+[環境 Redis、Mysql、jdk、ES]),項目能不能都帶上環境安裝打包!

之前在服務器配置一個環境Redis、MySql、jdk、Es、Hadoop,配置超麻煩了,而且不能夠跨平台。

從Windows,最后發布到Linux!

傳統:原來開發的一個應用打包jar丟過來,其他部署運維來做!

現在:Docker給以上問題,提出了解決方案!開發打包部署上線,一套流程做完!

java --- jar(環境)---打包項目帶上環境(鏡像)---(放到Docker倉庫)---下載發布的鏡像---直接運行

Jre---多個應用(存在端口沖突)---原來的都是交叉的。

Docker核心思想!打包裝箱!每個箱子是互相隔離的。通過隔離機制,可以將服務器利用到極致!

在容器技術出現之前,都是使用虛擬機技術!

在Windows中安裝一個Vmware,通過這個軟件可以虛擬出來一天或者多台電腦!(缺點:笨重!)

虛擬機也是屬於虛擬化技術,Docker容器技術,也是一種虛擬化技術!

vm: linux centos原生鏡像(相當於一個電腦),隔離操作,需要開啟多個虛擬機!容量幾個G,而且啟動要好幾分鍾。

docker: 隔離,鏡像(最核心的環境,比如說centos最核心只要4M就夠了,然后需要什么加什么:+jdk+mysql),十分小巧,運行鏡像即可!只需幾個M、KB即可,秒級啟動。

Docker是基於Go語言開發的!開源項目

官網:https://www.docker.com/

文檔地址:https://docs.docker.com/

倉庫地址:https://hub.docker.com/

虛擬化技術:

  1. 資源占用十分多
  2. 冗余步驟多
  3. 啟動很慢

容器化技術:
不是模擬的一個完整的操作系統(比如安裝一個centos只需要安裝它的一個核心!)

比較Docker和虛擬機技術的不同:

  • 傳統虛擬機,虛擬出一個硬件,運行一個完整的操作系統,然后在這個系統上安裝和運行軟件
  • 容器內得應用直接運行在 宿主機的內核中,容器是沒有自己的內核的,也沒有虛擬硬件,所以就輕便了
  • 每個容器時互相隔離,每個容器都有一個屬於自己的文件系統,互不影響。

DevOps(開發、運維)

應用更快捷的交付和部署
傳統:一堆幫助文檔,安裝程序
Docker:打包鏡像發布測試,一鍵運行

更快捷的升級和擴縮容
項目打包為一個鏡像,擴展 比如服務器A出現問題性能瓶頸了,現在水平擴展負載均衡 在服務器B直接一鍵運行這個鏡像。

更簡單的系統運行
在容器化后,開發、測試環境都是高度一致的。

更高效的計算資源利用
Docker是 內核級別的虛擬化,可以在一個物理機運行很多的容器實例!服務器的性能可以被壓榨到極致。

Docker基本組成

image

鏡像(image):
Docker鏡像就好比是一個模板,可以通過這個模板來創建容器服務,tomcat鏡像>run>tomcat01容器(提供服務器),通過這個鏡像可以創建多個容器(最終服務運行或者項目運行就是在容器中的)

容器(conrainer):
Docker利用容器技術,獨立運行一個或者一個組應用,通過鏡像來創建的。
啟動,停止,刪除,基本命令!
目前就可以把這個容器理解為就是一個簡易的linux系統

倉庫(repository):
倉庫就是存放鏡像的地方!
倉庫分為公有倉庫和私有倉庫!
Docker Hub(默認是國外的)
阿里雲...都有容器服務器(可配置鏡像加速!)

Docker安裝

環境准備

  1. 需要linux基礎
  2. CentOS 7
  3. 使用Xshell連接遠程進行服務器操作

環境查看

#系統內核是 3.10 以上的
[root@localhost ~]# uname -r
3.10.0-229.el7.x86_64

#系統版本
[root@localhost ~]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

安裝

幫助文檔:https://docs.docker.com/engine/install/centos/

#1、卸載舊的版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
#2、需要的安裝包
yum install -y yum-utils
  
#3、設置鏡像的倉庫
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo		#默認是從國外的
    
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo		#推薦使用阿里雲的

#更新yum軟件包索引
yum makecache fast

#4、安裝docker相關的 docker-ce 社區		ee 企業版
yum install docker-ce docker-ce-cli containerd.io

#5、啟動docker
systemctl start docker

#6、使用doeker version 測試是否安裝成功
doeker version

image

測試運行 hello-world

執行命令:docker run hello-world,有如下圖表示已成功安裝

image

PS:Docker run運行流程圖

image-20200523201722050

Docker常用命令

幫助命令

docker version		  #顯示docker的版本信息
docker info			  #顯示docker的系統信息,包括鏡像和容器的數量
docker 命令 --help	 #幫助命令

幫助文檔地址:https://docs.docker.com/engine/reference/

鏡像命令

docker images 查看所有本地的主機上的鏡像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        4 months ago        13.3kB

#解釋
REPOSITORY   鏡像的倉庫源       
TAG          鏡像的標簽       
IMAGE ID     鏡像的id       
CREATED      鏡像的創建時間    
SIZE		 鏡像的大小

[root@localhost ~]# docker images --help
#可選項:
  -a, --all             #列出所有鏡像
  -q, --quiet           #只顯示鏡像的id

docker search搜索鏡像

[root@localhost ~]# docker search --help

Usage:	docker search [OPTIONS] TERM

Search the Docker Hub for images

#可選項:
  -f, --filter filter   Filter output based on conditions provided
  -f=stars=3000		#搜索出來的鏡像就是stars大於3000的



[root@localhost ~]# docker search mysql -f=stars=3000
NAME                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql               MySQL is a widely used, open-source relation…   9529                [OK]                
mariadb             MariaDB is a community-developed fork of MyS…   3458                [OK] 

image-20200523202859494

docker pull 下載鏡像

#下載鏡像語法 docker pull 鏡像名[:tag]

[root@localhost ~]# docker pull mysql
Using default tag: latest		#如果不寫tag,默認就是latest
latest: Pulling from library/mysql
afb6ec6fdc1c: Pull complete 	#分層下載,docker image的核心 聯合文件系統
0bdc5971ba40: Pull complete 
97ae94a2c729: Pull complete 
f777521d340e: Pull complete 
1393ff7fc871: Pull complete 
a499b89994d9: Pull complete 
7ebe8eefbafe: Pull complete 
597069368ef1: Pull complete 
ce39a5501878: Pull complete 
7d545bca14bf: Pull complete 
211e5bb2ae7b: Pull complete 
5914e537c077: Pull complete 
Digest: sha256:a31a277d8d39450220c722c1302a345c84206e7fd4cdb619e7face046e89031d	#簽名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest	#真實地址

#docker pull mysql
#等價於
#docker pull docker.io/library/mysql:latest


#指定版本下載
[root@localhost ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
afb6ec6fdc1c: Already exists 
0bdc5971ba40: Already exists 
97ae94a2c729: Already exists 
f777521d340e: Already exists 
1393ff7fc871: Already exists 
a499b89994d9: Already exists 
7ebe8eefbafe: Already exists 
4eec965ae405: Pull complete 
a531a782d709: Pull complete 
270aeddb45e3: Pull complete 
b25569b61008: Pull complete 
Digest: sha256:d16d9ef7a4ecb29efcd1ba46d5a82bda3c28bd18c0f1e3b86ba54816211e1ac4
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

docker rmi 刪除鏡像

docker rmi -f 鏡像id	#刪除指定鏡像
docker rmi -f 鏡像id 鏡像id 鏡像id 鏡像id 	#刪除多個鏡像
docker rmi -f $(docker images -aq)	#刪除全部的鏡像

容器命令

...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM