docker安裝,卸載和入門


Docker 簡介

背景

開發和運維之間因為環境不同而導致的矛盾 集群環境下每台機器部署相同的應用 DevOps(Development and Operations)

簡介

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

Docker是世界領先的軟件容器平台。開發人員利用 Docker 可以消除協作編碼時“在我的機器上可正常工作”的問題。 運維人員利用 Docker 可以在隔離容器中並行運行和管理應用,獲得更好的計算密度。企業利用 Docker 可以構建敏 捷的軟件交付管道,以更快的速度、更高的安全性和可靠的信譽為 Linux 和 Windows Server 應用發布新功能。

 

 

 Docker優點

簡化程序: Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,便可以實現虛擬化。

Docker改變了虛擬化的方式,使開發者可以直接將自己的成果放入Docker中進行管 理。方便快捷已經是 Docker的最大優勢,過去需要用數天乃至數周的 任務,在Docker容器的處理下,只需要數秒就 能完成。

避免選擇恐懼症: 如果你有選擇恐懼症,還是資深患者。Docker 幫你 打包你的糾結!比如 Docker 鏡像;Docker 鏡像中包含了運行環境和配置,所以 Docker 可以簡化部署多種應用實例工作。比如 Web 應用、后台應用、數據庫 應用、大數據應用比如 Hadoop 集群、消息隊列等等都可以打包成一個鏡像部署。

節省開支: 一方面,雲計算時代到來,使開發者不必為了追求效果而配置高額的硬件,Docker 改變了高性能必然高 價格的思維定勢。Docker 與雲的結合,讓雲空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化 的方式。

Docker 架構

Docker使用C/S架構,Client通過接口與Server進程通信實現容器的構建,運行和發布,如圖:

 

 

 Host(Docker 宿主機)

安裝了Docker程序,並運行了Docker daemon的主機。

Docker daemon(Docker 守護進程):

運行在宿主機上,Docker守護進程,用戶通過Docker client(Docker命令)與Docker daemon交互。 I

mages(鏡像):

將軟件環境打包好的模板,用來創建容器的,一個鏡像可以創建多個容器。

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

鏡像分層結構:

 位於下層的鏡像稱為父鏡像(Parent Image),最底層的稱為基礎鏡像(Base Image)。

最上層為“可讀寫”層,其下的均為“只讀”層。

 

Containers(容器):

Docker的運行組件,啟動一個鏡像就是一個容器,容器與容器之間相互隔離,並且互不影響。

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

 

Docker Client(Docker 客戶端)

Docker命令行工具,用戶是用Docker Client與Docker daemon進行通信並返回結果給用戶。也可以使用其他工具通 過Docker Api 與Docker daemon通信。

Registry(倉庫服務注冊)

經常會和倉庫(Repository)混為一談,實際上Registry上可以有多個倉庫,每個倉庫可以看成是一個用戶,一個用戶 的倉庫放了多個鏡像。倉庫分為了公開倉庫(Public Repository)和私有倉庫(Private Repository),最大的公開倉庫是 官方的Docker Hub,國內也有如阿里雲、時速雲等,可以給國內用戶提供穩定快速的服務。用戶也可以在本地網絡 內創建一個私有倉庫。當用戶創建了自己的鏡像之后就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下次 在另外一台機器上使用這個鏡像時候,只需要從倉庫上 pull 下來就可以了。

Docker 卸載和安裝(Centos7)

Docker 提供了兩個版本:社區版 (CE) 和企業版 (EE)。

操作系統要求 以Centos7為例,且Docker 要求操作系統必須為64位,且centos內核版本為3.1及以上。

 

查看系統內核版本信息:

uname -r

 

 

 查看Linux系統類別與OS版本

 cat /etc/os-release 

 

 

 

卸載

卸載docker依賴

yum remove docker-ce docker-ce-cli containerd.io

刪除資源

rm -rf /var/lib/docker

安裝

CentOS 7 (使用yum進行安裝)

step 1: 安裝必要的一些系統工具

 sudo yum install -y yum-utils device-mapper-persistent-data lvm2

 

 

  Step 2: 添加軟件源信息

 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Step 3: 更新並安裝 Docker-CE

這個命令是將軟件包信息提前在本地緩存一份,用來提高搜索安裝軟件的速度,yum 會把下載的軟件包和header存儲在cache中而不自動刪除。如果覺得占用磁盤空間,可以使用yum clean指令清除緩存。

sudo yum makecache fast

 

 

 

sudo yum -y install docker-ce

 

 

 

 

Step 4: 開啟Docker服務

sudo service docker start

 

 

 使用docker version查看是否按照成功

 docker version

 

 

 配置鏡像加速

這里使用阿里雲的免費鏡像加速服務,也可以使用其他如時速雲、網易雲等

1.注冊登錄開通阿里雲容器鏡像服務

2.查看控制台,招到鏡像加速器並復制自己的加速器地址

3.找到/etc/docker目錄下的daemon.json文件,沒有則直接

vim /etc/docker/daemon.json

4.加入以下配置

 

 

 如圖

 

 

 通知systemd重載此配置文件;

systemctl daemon-reload

重啟docker服務

systemctl restart docker

 

測試

 docker run hello-world

 

 

 查看一下下載的鏡像

docker images

 

 

 docker run 流程圖

 

 

 

底層原理

Docker是怎么工作的?

Docker是一個Client-Server結構的系統,Docker的守護進程運行在主機上。通過Socket從客戶端訪問!

Docker-Server接收到Docker-Client的指令,就會執行這個命令!

為什么Docker比Vm快

1、docker有着比虛擬機更少的抽象層。由於docker不需要Hypervisor實現硬件資源虛擬化,運行在docker容器上的程序直接使用的都是實際物理機的硬件資源。因此在CPU、內存利用率上docker將會在效率上有明顯優勢。
2、docker利用的是宿主機的內核,而不需要Guest OS。

GuestOS: VM(虛擬機)里的的系統(OS);

HostOS:物理機里的系統(OS);

因此,當新建一個 容器時,docker不需要和虛擬機一樣重新加載一個操作系統內核。仍而避免引導、加載操作系統內核返個比較費時費資源的過程,當新建一個虛擬機時,虛擬機軟件需要加載GuestOS,返個新建過程是分鍾級別的。而docker由於直接利用宿主機的操作系統,則省略了這個復雜的過程,因此新建一個docker容器只需要幾秒鍾。

Docker常用操作

容器常用操作

運行:

docker run --name 容器名 -i -t -p 主機端口:容器端口 -d -v 主機目錄:容器目錄:ro 鏡像ID或鏡像名:TAG

# --name 指定容器名,可自定義,不指定自動命名

# -i 以交互模式運行容器

# -t 分配一個偽終端,即命令行,通常-it組合來使用

# -p 指定映射端口,講主機端口映射到容器內的端口

# -d 后台運行容器

# -v 指定掛載主機目錄到容器目錄,默認為rw讀寫模式,ro表示只讀

容器列表:

docker ps -a -q

# docker ps查看正在運行的容器

# -a 查看所有容器(運行中、未運行)

# -q 只查看容器的ID

啟動容器:

docker start 容器ID或容器名

停止容器:

docker stop 容器ID或容器名

刪除容器:

docker rm -f 容器ID或容器名

# -f 表示強制刪除

查看日志:

docker logs 容器ID或容器名

進入正在運行容器:

docker exec -it 容器ID或者容器名 /bin/bash

# 進入正在運行的容器並且開啟交互模式終端

# /bin/bash是固有寫法,作用是因為docker后台必須運行一個進程,否則容器就會退出,在這里表示啟動容器后啟動 bash。

# 也可以用docker exec在運行中的容器執行命令

拷貝文件:

docker cp 主機文件路徑 容器ID或容器名:容器路徑 #主機中文件拷貝到容器中
docker cp 容器ID或容器名:容器路徑 主機文件路徑 #容器中文件拷貝到主機中

獲取容器元信息:

docker inspect 容器ID或容器名

 

 

鏡像常用操作

查找鏡像:

  docker search 關鍵詞 #搜索docker hub網站鏡像的詳細信息

 docker search mysql

 

 

 搜索出鏡像STARS大於3000的 --filter=STARS=3000 #搜索出來的鏡像就是STARS大於3000的

docker search mysql --filter=STARS=3000

 

 

下載鏡像 

docker pull 鏡像名:TAG # Tag表示版本,有些鏡像的版本顯示latest,為最新版本

 docker pull tomcat:8

 

查看鏡像:

# 查看本地所有鏡像

docker images 

 刪除鏡像:

docker rmi -f 鏡像ID或者鏡像名:TAG 

# 刪除指定本地鏡像

# -f 表示強制刪除

docker rmi -f 34d28186c789

 

 

 

docker 安裝 mysql5.7 並實現Navicat連接

1.拉取mysql5.7的鏡像

docker pull mysql:5.7

 

 2.創建2個要掛載的目錄

mkdir -p  /docker/mysql/conf
mkdir -p  /docker/mysql/data

3.啟動mysql

docker run --name mysql5.7 -p 3306:3306 -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

4 命令參數解析:

  • --name:容器名
  • -p:映射宿主主機端口
  • -v:掛載宿主目錄到容器目錄
  • -e:設置環境變量,此處指定root密碼
  • -d:后台運行容器

查看容器是否運行

 docker ps -a

 

 進入該容器

docker exec -it 3c31a459e6d4 /bin/bash

輸入mysql賬號密碼進入mysql

mysql -uroot -p123456

 

 

查看root用戶權限

select host, user,plugin,authentication_string from mysql.user;

給root用戶添加遠程訪問權限(如果需要)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';

 這里的123456為你給新增權限用戶設置的密碼,%代表所有主機,也可以具體到你的主機ip地址

重新加載權限

flush privileges;

使用Navicat連接該數據庫

 

 成功

 


免責聲明!

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



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