1. 程式人生 > 其它 >ContOS 7安裝Docker使用及部署MySQL和Nginx

ContOS 7安裝Docker使用及部署MySQL和Nginx

此文章採取狂神說Java

https://space.bilibili.com/95256449


Docker學習網址:

Docker官網:https://www.docker.com/
Docker中文官網:https://www.dockerchina.cn/
Docker菜鳥教程:https://www.runoob.com/docker/docker-tutorial.html


Docker的優勢:

  1. 更高效的利用系統資源
  2. 更快速的啟動時間
  3. 一致的環境
  4. 持續交付和部署
  5. 更輕鬆的遷移
  6. 更輕鬆的維護和擴充套件

容器和虛擬機器的比較:

與傳統的虛擬機器相比,Docker優勢體現啟動速度快、佔用體積小


Docker伺服器與客戶端

Docker是一個客戶端-伺服器(C/S)架構程式。Docker客戶端只需要向Docker伺服器或者守護程序發出請求,伺服器或者守護程序將完成所有工作並返回結果。Docker提供了一個命令列工具Docker以及一整套RESTful API。你可以在同一個宿主機上執行Docker守護程序和客戶端,也可以從本地的Docker客戶端連線到執行在另一臺宿主機上的遠端Docker守護程序。


Docker映象與容器

映象是構建Docker的基石,使用者基於映象來執行自己的容器。映象也是Docker生命週期中的“構建”部分。映象是基於聯合檔案系統的一種層式結構,由一系列指令一步一步構建出來。例如:

  • 新增一個檔案
  • 執行命令視窗
  • 開啟一個視窗

Docker可以幫助你構建和部署容器,你只需要把自己的應用程式或者服務打包放進容器即可。容器是基於映象啟動起來的,容器中可以執行一個或者多個程序。我們可以認為,進項是Docker生命週期中的構建或者打包階段,而容器則是啟動或者執行階段。容器基於映象啟動,一旦容器啟動完成後,我們就可以登入倒容器中安裝自己需要的軟體或者服務,所以Docker容器就是:

  • 一個映象格式
  • 一些列標準操作
  • 一個執行環境

Docker借鑑了標準集裝箱的概念。標準集裝箱將貨物運往世界各地,Docker將這個模型運用到自己的設計中,唯一不同的是:集裝箱運輸貨物,而Docker運輸軟體。和集裝箱一樣,Docker在執行操作時,並不關心容器中到底裝了什麼,他不管是web伺服器,還是資料庫或者是應用程式伺服器什麼的,所有的容器都按照相同的方式將內容“裝載”進去。


Registry(註冊中心)

Docker用Registry來儲存使用者構建物件。Registry分為公共和私有兩種,Docker公司運營公共的Registry叫做Docker Hub。使用者可在Docker Hub註冊賬號,分享並儲存自己的映象(在Docker Hub下載映象巨慢,可以自己構建私有的Registry)。


安裝Docker

  1. yum包更新到最新
 $ yum update
  1. 安裝Docker,出現輸入的介面都按y
 $ yum install docker
  1. 檢測Docker安裝是否成功並檢視Docker版本
 $ docker -v

Docker的啟動與停止

 # 啟動docker
 $ systemctl start docker
 
 # 檢視docker是否啟動成功
 $ systemctl status docker
 
 # docker 幫助文件
 $ docker help
 
 # 停止docker(容器)
 $ systemctl stop docker
 
 # 開機預設啟動Docker
 $ systemctl enable docker

Docker常用命令

映象相關命令

 # 檢視映象
 $ docker images
  • REPOSITORY:映象
  • TAG:映象標籤
  • IMAGE ID:映象ID
  • CREATED:映象的建立日期(不是獲取該映象的日期)
  • SIZE:映象大小

這些映象都是儲存在Docker宿主機的/var/lib/docker目錄下


搜尋映象
如果你需要從網路中查詢需要的映象

 # docker search  映象名稱
 $ docker search nginx
  • NAME:倉庫名稱
  • DESCRIPTION:映象描述
  • STARS:使用者評價,反應一個映象的受歡迎程度
  • OFFICIAL:是否官方
  • AUTOMATED:自定構建,表示該映象由Docker Hub自動構建流程建立的

拉取映象

 # docker pull  映象名稱
 $ docker pull nginx

刪除映象
按映象ID刪除映象

 # docker rmi 映象ID
 [root@192 ~]# docker images
 REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
 docker.io/nginx     latest              c919045c4c2b        40 hours ago        142 MB
 [root@192 ~]# docker rmi c919045c4c2b
 Untagged: docker.io/nginx:latest
 Untagged:  docker.io/nginx@sha256:1c13bc6de5dfca749c377974146ac05256791ca2fe1979fc8e8278bf0121d285
 Deleted: sha256:c919045c4c2b0b0007c606e763ed2c830c7b1d038ce878a3c0d6f5b81e6ab80b
 Deleted: sha256:397dbc5767fa9031bfbe1523c4f0de80ad7ce8103b8cc2b58e6f36554c7f93eb
 Deleted: sha256:347cfffd04bb8392ba1999a911a3d9b5c2327a8b516a943d17965b41c88e1216
 Deleted: sha256:1b611a5b7c5d88f05e9eedeec09ba67bb81821a18dd21c6a0644a2e5017ac524
 Deleted: sha256:78dd14d2a308dfd875fc3baae9b8b2e1a15c7fbee828cdbdd8e55b18c64c6128
 Deleted: sha256:f5d1b591ffdcdfd05874cf66cb351506c6ef683cb58d2883bde24819b5a4f37d
 Deleted: sha256:1401df2b50d5de5a743b7bac3238ef3b7ce905ae39f54707b0ebb8eda3ab10bc
 [root@192 ~]# docker images
  REPOSITORY          TAG                  IMAGE ID            CREATED              SIZE
 [root@192 ~]# 

刪除所有映象

 $ docker rmi `docker images -q`

容器相關命令

檢視所有容器

 $ docker ps -a

檢視最後一次執行的容器

 $ docker ps -l

檢視停止的容器

 $ docker ps -f status=exited

建立與啟動容器

建立容器常用的引數說明

建立容器命令:

 $ docker run
  • -i:表示執行容器

  • -t:表示容器啟動後進入其命令列。加入這兩個引數後,容器建立就能登入進去。即分配一個偽終端

  • --name:為建立的容器命名

  • -v:表示目錄對映關係(前者是宿主機目錄,後者是對映到宿主機上的目錄),可以使用多個-v 做多個目錄活或檔案對映。注意:最好做目錄對映,在宿主機上做修改,然後共享到容器上

  • -d:在run後面加上-d引數,則會建立一個守護式容器在後臺執行(這樣建立容器後不會自動登入容器,如果只加-i -t 兩個引數,建立後就會自動進去容器)

  • -p:表示埠對映,前者是宿主機埠,後者是容器內的對映埠。可以使用多個-p做多個埠對映

1.互動式方式建立容器

 $ docker run -it --name=容器名稱 映象名稱:標籤/bin/bash

這時我們通過ps命令檢視,發現可以看到啟動的容器,狀態為啟動狀態

退出當前容器

 $ exit

2.守護式建立容器

 $ docker run -di --name=容器名稱 映象名稱:標籤

登入守護容器方式

 $ docker exec -it nginx /bin/bash   #映象名稱或者映象ID

檢視容器內容

 $ ll   #或者ls

啟動容器:

 $ docker start 容器名稱或者容器ID

檢視日誌

docker logs [ID或者名字] 可以檢視容器內部的日誌內容

docker logs ID或者名字

檔案拷貝

如果我們需要將檔案拷貝到容器內可以使用cp命令

$ docker cp 需要拷貝的檔案或目錄 容器名稱:容器目錄

也可以將檔案從容器內拷貝出來

$ docker cp 容器名稱:容器目錄 需要拷貝的檔案或目錄

檢視容器IP地址

我們可以通過以下命令檢視容器執行的各個資料

 $ docker inspect 容器名稱或者容器ID

也可以執行下面的命令直接輸出IP地址

 $ docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱或者ID

刪除容器

刪除映象是rmi,刪出容器是rm

$ docker rm 容器名稱或者ID

映象操作

mysql部署

1.檢視可用MySQL版本

MsSQL映象庫地址:https://hub.docker.com/_/mysql?tab=tags

可以通過Sort by 檢視其他版本的MySQL,預設是罪行版本 mysql:latest

還可以用 docker 命令來檢視其他版本

 $ docker search mysql

2.拉取 MySQL 映象

拉取官方的最新版本的映象

 $ docker pull mysql:latest  #:latest可以省略,官方預設latest

3.檢視本地映象

使用命令來檢視是否已經安裝了 mysql

 $ docker images

4.建立守護方式

 $ docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

5.進入mysql容器

 $ docker exec -it mysql /bin/bash

6.用mysql開啟客戶端

 $ mysql -uroot -proot --default-character-set=utf-8
 # 登入mysql
 $ mysql -u root -p

7.開啟操作

#用show databases開啟
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.10 sec)

8.退出當前映象

 $ exit   #或者Ctrl+D

9.停止當前映象

 $ docker stop 映象名稱或者映象ID

Nginx部署

建立Nginx容器

 $ docker rum -di --name=mysql -p 80:80 nginx

建立nginx的配置目錄

 $ docker cp nginx:etc/nginx  /usr/local/mydata/nginx/

關閉容器

 $ docker stop nginx

刪除容器

 $ docker rm nginx

通過容器掛載,掛在nginx

 $ docker rum -di --name=nigin -p 80:80 -v /usr/local/mydata/conf/:/etc/nginx  nginx