日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Docker简介以及mysql和redis的部署

發布時間:2025/3/20 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker简介以及mysql和redis的部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.Docker簡介

1.環境配置的難題

軟件開發最大的麻煩事之一,就是環境配置。用戶計算機的環境都不相同,你怎么知道自家的軟件,能在那些機器跑起來?

用戶必須保證兩件事:操作系統的設置,各種庫和組件的安裝。只有它們都正確,軟件才能運行。

如果某些老舊的模塊與當前環境不兼容,那就麻煩了。開發者常常會說:”它在我的機器可以跑了”,言下之意就是,其他機器很可能跑不了。

環境配置如此麻煩,換一臺機器,就要重來一次,曠日費時。很多人想到,能不能從根本上解決問題,軟件可以帶環境安裝?也就是說,安裝的時候,把原始環境一模一樣地復制過來。

2.什么是虛擬化

虛擬化,是指通過虛擬化技術將一臺計算機虛擬化為多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統。

傳統虛擬機:VMware,VisualBox

每臺虛擬機都需要有自己的操作系統,虛擬機一旦被開啟,預分配給它的資源將全部被占用。

虛擬機是完整的操作系統,一些系統級別的操作步驟,往往無法跳過,比如用戶登錄。

Docker的優勢:

1.更快速的交付和部署

例如:開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之后,運維人員可以直接使用這個容器來部署代碼。

Docker啟動時間可以做到秒級甚至毫秒級的啟動時間,大大節約了開發.測試.部署的時間

2.高效的部署和擴容

Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等。

Docker 容器可以隨開隨關,很適合動態擴容和縮容。

3.更高的資源利用率

Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷盡量小。

總結:

特性容器虛擬機
啟動秒級分鐘級
硬盤使用一般為MB一般為GB
性能接近原生弱于原生
系統支持量單機支持上千個容器一般幾十個

3.核心概念

1.鏡像

Docker 鏡像(Image)就是一個只讀的模板。

Docker 鏡像可以看作是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。

例如:一個鏡像可以包含一個完整的操作系統環境,里面僅安裝了 Apache 或用戶需要的其它應用程序。鏡像可以用來創建 Docker 容器,一個鏡像可以創建很多容器。

2.容器

鏡像和容器的關系,就像是java中的類和實例一樣。

Docker 利用容器(Container)來運行應用。容器是從鏡像創建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。可以把容器看做是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。

3.倉庫

倉庫(Repository)是集中存放鏡像文件的場所。有時候會把倉庫和倉庫注冊服務器(Docker Registry)混為一談,并不嚴格區分。實際上,倉庫注冊服務器上往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag)。

倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載。國內的公開倉庫包括 時速云 、網易云 等

Docker官網:

https://hub.docker.com/

二.Docker安裝

1.MacOS安裝

方式一:

如果系統中已安裝Homebrew Cask,可以在終端中運行如下命令直接安裝.

Homebrew是一款Mac OS平臺下的軟件包管理工具,擁有安裝、卸載、更新、查看、搜索等很多實用的功能。

1.安裝Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2.卸載HomeBrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

3.安裝Docker

$ brew cask install docker

方式二:

https://download.docker.com/

在鏈接中下載對應版本的Docker。

2.運行

在應用圖標中找到Docker圖標并點擊運行

運行之后,會在右上角菜單欄看到多了一個小鯨魚的圖標。

啟動終端,可以通過命令檢查安裝后的Docker版本

docker --version

嘗試運行一個nginx服務器:

docker run -d -p 80:80 --name webserver nginx

服務運行后,可以訪問http://localhost

停止服務并刪除:

docker stop webserver docker rm webserver

docker在Linux設置開機自啟

sudo systemctl enable docker

三.Docker鏡像操作

1.Docker鏡像是由文件系統疊加而成。最低端是一個文件引入系統,即bootfs,這很像典型的linux/Unix的引導文件系統。

1.列出鏡像

docker images tag:鏡像標簽 Imageid:鏡像id created:鏡像的創建日期 size:鏡像大小

2.拉取鏡像

docker pull centos:7

3.搜索鏡像

docker search 鏡像名稱 name:倉庫名稱 description:鏡像描述 stars:用戶評價 official:是否官方 automated:自動構建

4.刪除鏡像

docker rmi $IMAGE_ID:刪除指定鏡像docker rmi 'docker images -q':刪除所有鏡像

?

三.Docker容器操作

創建容器命令

docker run-i:表示運行容器 -t:表示容器啟動后進入其命令行。 --name:為創建的容器命名 -v:表示目錄映射關系 -d:創建一個守護式容器在后臺運行 -p:表示端口映射,前者是宿主機端口,后者是容器內的映射端口。可以使用多個-p做多個端口映射

交互式容器

docker run -it --name=mycentos centos:7 /bin/bashbash:放在鏡像后的是命令,這里我們希望有個交互式shell,因此用的是bash

退出當前容器,該容器也隨之停止。

守護式容器

docker run -di --name=mycentos2 centos

登錄守護式容器方式

docker exec -it container_name

查看容器

docker ps -a:查看所有容器 docker ps -l:查看最后一次運行的容器 docker ps:查看正在運行的容器

停止與啟動容器

docker stop $container_name/id

啟動已運行過的容器

docker start $container_name/id

刪除容器

docker rm $container_id/name:刪除指定容器 docker rm 'docker ps -a -q':刪除所有容器

刪除none的鏡像,要先刪除鏡像中的容器。要刪除鏡像中的容器,必須先停止容器。

$ docker images$ docker rmi $(docker images | grep "none" | awk '{print $3}')?

直接刪除帶none的鏡像,直接報錯了。提示先停止容器。

$ docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')?//停止容器$ docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')?//刪除容器$ docker rmi $(docker images | grep "none" | awk '{print $3}')?//刪除鏡像

文件拷貝

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

docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄

也可以將文件從容器內拷貝出來

docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄

四.Mysql部署

拉取mysql鏡像

docker pull mysql

創建mysql容器

docker run -di --name=my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql -p:代表端口映射 -e:代表添加環境變量

詳細啟動命令:

docker run -p 3306:3306 --name my_mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7參數說明: -p 3306:3306:將容器的3306端口映射到主機的3306端口-v /mydata/mysql/log:將日志文件夾掛載到主機-v /mydata/mysql/data:/var/lib/mysql:將data文件夾掛載到主機-v /mydata/mysql/conf:/etc/mysql:將配置文件夾掛載到主機-e MYSQL_ROOT_PASSWORD=root:初始化root用戶的密碼

進入Mysql容器,登錄mysql

docker exec -it my_mysql /bin/bash

登錄Mysql

mysql -u root -p

遠程登錄mysql(可以使用navicat類似的圖形化工具遠程登錄)

我們可以在剛才掛載過的目錄下修改配置文件/mydata/mysql/conf

vi my.cnf[client] default-character-set=utf8[mysql] default-character-set=utf8[mysqld] init_connect=‘SET collation_connection = utf8_unicode_ci’ init_connect=‘SET NAMES utf8’ character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake skip-name-resolve

然后重啟我們的mysql服務

docker restart my_mysql

設置mysql開機自啟

docker update --restart=always 容器id

五.Redis部署

拉取redis鏡像

docker pull redis

啟動redis容器

docker run -di --name=my_redis -p 6379:6379 redis

也可以指定掛載和配置文件來啟動

# 啟動前先創建文件,否則docker可能會把redis.conf當成目錄來處理 mkdir -p /mydata/redis/conf touch /mydata/redis/conf/redis.confdocker run -p 6379:6379 --name my_redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf

客戶端測試

docker exec -it my_redis redis-cli

我們可以進行操作,設置一些key。

但是我們發現并沒有持久化,redis重啟后緩存就都失效了

我們可以修改redis的配置文件redis.conf

# 開啟持久化 appendonly yes

之后我們重啟后數據就不會丟失了

更多的redis配置可以查看官方文檔

總結

以上是生活随笔為你收集整理的Docker简介以及mysql和redis的部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。