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

歡迎訪問 生活随笔!

生活随笔

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

数据库

docker安装mysql redis_Docker安装Mysql和Redis以及构建部署应用镜像

發(fā)布時間:2023/12/10 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker安装mysql redis_Docker安装Mysql和Redis以及构建部署应用镜像 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為了方便本地測試項目,為了方便開啟新的環(huán)境,為了方便部署,打算本地利用Docker安裝Mysql和Redis。

搭建Springboot項目,編寫Dockerfile,打包構建鏡像。

簡單使用docker-compose啟動服務。

簡述docker-compose和K8S。

環(huán)境

系統(tǒng):mac

Docker Engine:19.03.8

Mysql:5.7,磁盤掛載目錄:/Users/yclxiao/Program/volume/mysql

Redis:5.0.8,磁盤掛載目錄:/Users/yclxiao/Program/volume/redis

安裝Mysql-5.7

拉取官方鏡像

docker pull mysql:5.7

復制代碼

查看鏡像庫

docker images

復制代碼

創(chuàng)建mysql的掛載的目錄

mkdir -p /Users/yclxiao/Program/volume/mysql/data /Users/yclxiao/Program/volume/mysql/conf /Users/yclxiao/Program/volume/mysql/logs

復制代碼

創(chuàng)建cnf文件

cd /Users/yclxiao/Program/volume/mysql/conf

touch my.cnf

復制代碼

創(chuàng)建容器,將數(shù)據(jù)、日志、配置文件,映射到本機

docker run -p 3306:3306 --name mysql -v /Users/yclxiao/Program/volume/mysql/conf:/etc/mysql/conf.d -v /Users/yclxiao/Program/volume/mysql/logs:/logs -v /Users/yclxiao/Program/volume/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootpwd -d mysql:5.7

復制代碼-d:后臺運行容器

-p:將容器的端口映射到本機的端口

-v:將主機目錄掛載到容器的目錄

-e:設置參數(shù)

啟動容器

docker start mysql

復制代碼

docker run xxx 和 docker start xxx 區(qū)別?

docker run:

只有在第一次運行時使用,將鏡像放到容器中,以后再次啟動容器的時候,只需要使用docker start就可以了。

docker run 相當于執(zhí)行了2個命令:

docker create:將鏡像放入到容器中

docker start:啟動容器,變成運行中的容器

docker start:

啟動已經(jīng)存在的容器

用Navicat等工具測試是否能連上

用戶名:root

密碼:rootpwd

安裝Redis-5.0.8

在宿主機掛載目錄下新建redis相關目錄

/Users/yclxiao/Program/volume/redis/conf

/Users/yclxiao/Program/volume/redis/data

在/Users/yclxiao/Program/volume/redis/conf下

touch redis.conf

復制代碼

拉取官方鏡像,查看鏡像

docker pull redis:5.0.8

docker images

復制代碼

啟動容器,redis:5.0.8鏡像名稱

docker run -d --name redis -p 6379:6379 -v /Users/yclxiao/Program/volume/redis/conf/redis.conf:/redis.conf -v /Users/yclxiao/Program/volume/redis/data:/data redis:5.0.8 redis-server --appendonly yes

復制代碼

-d:讓容器運行在后臺

-p:前面是暴露出去的端口,后面是容器內(nèi)部的服務端口

-v:將宿主機目錄掛載到容器的/data目錄,使用:

--name:此容器的別名

--appendonly:啟用數(shù)據(jù)持久化保存

redis-server --appendonly yes:在容器執(zhí)行redis-server啟動命令,并且啟動redis持久化配置

查看正在運行的容器

docker ps

復制代碼

RDM工具連接測試OK

Docker常用命令

docker search #從registry倉庫搜索鏡像

docker pull #從倉庫下載鏡像到本地

docker images #列出所有鏡像

docker tag #為鏡像起一個別名

docker rmi 鏡像名 #刪除某個鏡像

docker rmi $(docker images -q) #刪除所有鏡像

docker push #將一個鏡像push到registry倉庫中

docker build -t . #構建進行,: .不可少

docker create #創(chuàng)建一個容器但是不啟動它

docker run #創(chuàng)建并啟動一個容器

docker start #啟動一個停止狀態(tài)的容器

docker ps -aq #列出所有容器的id

docker ps #列出正在運行的容器

docker ps -a #查看所有進程

docker stop 容器id #停止某個容器

docker rm 容器id #刪除某個容器

docker stop $(docker ps -aq) #停止所有容器

docker rm $(docker ps -aq) #刪除所有容器

docker kill #發(fā)送信號給容器,默認SIGKILL

docker exec #進入到容器里執(zhí)行命令

docker inspect #深入容器內(nèi)部獲取容器所有信息

編寫Dockerfile

Dockerfile是docker構建鏡像的基礎,也是docker區(qū)別于其他容器的重要特征,正是有了Dockerfile,docker的自動化和可移植性才成為可能。

FROM,從一個基礎鏡像構建新的鏡像

FROM openjdk:8-jdk-alpine

復制代碼

MAINTAINER,維護者信息

MAINTAINER yclxiao

復制代碼

ENV,設置環(huán)境變量

ENV TESTVAR 123

復制代碼

RUN,運行shell命令

RUN xxxxxx

復制代碼

ADD,將外部文件拷貝到鏡像里,src可以為url

ADD xxxxx /data/xxxxxx

復制代碼

WORKDIR /path/to/workdir,設置工作目錄

WORKDIR /var/www

復制代碼

USER,設置用戶ID

USER nginx

復制代碼

VULUME,設置volume,設置掛載卷

VOLUME ['/data']

復制代碼

EXPOSE,暴露哪些端口

EXPOSE 8080 8081

復制代碼

ENTRYPOINT ["executable","param1","param2"] 執(zhí)行命令

ENTRYPOINT ["/usr/sbin/nginx"]

復制代碼

CMD ["param1","param2"]

CMD ["start"]

復制代碼

docker創(chuàng)建、啟動container時執(zhí)行的命令,如果設置了ENTRYPOINT,則CMD將作為參數(shù)

示例:利用Dockerfile構建一個java應用的鏡像

FROM openjdk:8-jdk-alpine

ENV TZ=Asia/Shanghai

#如果直接docker build命令打包鏡像(非maven插件的形式),則需要加上這段變量

#ENV JAR_FILE=target/blog-dbpool-main-0.0.1-SNAPSHOT.jar

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

VOLUME /tmp

#pom.xml中dockerfile插件定義的參數(shù)

ARG JAR_FILE

COPY ${JAR_FILE} app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

復制代碼

構建Java工程

搭建帶有Dockerfile文件的Springboot工程,pom配置docker插件,構建鏡像推送鏡像,啟動容器。

配置dockerfile-maven-plugin插件,官方推薦使用dockerfile-maven-plugin,不建議使用docker-maven-plugin:

本地maven的setting,在.m2文件夾里,注意一定要有servers,否則配置不生效

docker.io

yclxiao

xxxxxx

復制代碼

構建鏡像,推送倉庫:

直接在dockerfile目錄下,執(zhí)行docker命令:

docker build -t yclxiao/blog-dbpool-main:0.0.1-SNAPSHOT .

docker push yclxiao/blog-dbpool-main:0.0.1-SNAPSHOT

復制代碼

利用maven插件:

mvn clean package dockerfile:build

mvn clean package dockerfile:push

復制代碼

執(zhí)行docker images,可以在本地倉庫看到此鏡像。

查看dockerHub倉庫https://hub.docker.com/,可以看到此鏡像

創(chuàng)建啟動容器:

docker run -p 8080:8080 yclxiao/blog-dbpool-main:0.0.1-SNAPSHOT [-d]

利用Docker-Compose部署

容器多了之后,必然需要一種管理容器的工具,那么docker-compose應運而生,docker-compose是用于定義和運行本機的多個docker容器的工具,負責實現(xiàn)對Docker容器集群的快速編排,可以使用yml文件來配置應用程序需要的所有服務。然后使用命令,從yml文件配置中創(chuàng)建并啟動所有服務。

兩個重要概念:

?服務(service):一個應用的容器,實際可以包括若干運行相同鏡像的容器實例。

?項目(project):由一組關聯(lián)的應用容器組成的一個完整的業(yè)務單元,在docker-compose.yml文件中定義。

在Dockerfile同級目錄下,編寫docker-compose.yml,示例:

version: '3.7'

# 定義服務

services:

# 指定服務名稱,例如spring-boot服務

app-server:

build:

context: . # 配置需要構建Dockerfile的路徑 相對于docker-compose.yml

dockerfile: Dockerfile

# 指定服務運行的端口

ports:

- "8080:8080" # 將本機8080端口映射到容器8080端口

restart: always

# 需要依賴的服務 率先構建

depends_on:

- db

- redis

#environment: # 設置環(huán)境變量

#SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/airTicket?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false

#SPRING_DATASOURCE_USERNAME: root

#SPRING_DATASOURCE_PASSWORD: 123456

#SPRING_REDIS.HOST: redis

db:

# 指定服務使用的鏡像

image: mysql:5.7

# 指定容器名稱

container_name: mysql5.7

ports:

- "3306:3306"

restart: always

environment:

MYSQL_ROOT_PASSWORD: rootpwd

volumes:

- /Users/yclxiao/Program/volume/mysql/conf:/etc/mysql/conf.d

- /Users/yclxiao/Program/volume/mysql/logs:/logs

- /Users/yclxiao/Program/volume/mysql/data:/var/lib/mysql

redis:

image: redis:5.0.8

# 指定容器名稱

container_name: redis5.0.8

volumes:

- /Users/yclxiao/Program/volume/redis/conf/redis.conf:/redis.conf

- /Users/yclxiao/Program/volume/redis/data:/data

command: ["redis-server", "--protected-mode", "no", "--appendonly", "yes"]

hostname:

redis

ports:

- "6379:6379"

復制代碼然后執(zhí)行命令,本地已經(jīng)下載的鏡像創(chuàng)建的容器,不會再下載創(chuàng)建了:

docker-compose build #根據(jù)docker-compose.yam構建完整鏡像

docker-compose up #直接運行所有服務

docker-compose up -d #后臺運行所有服務

docker-compose stop #停止所有容器

docker-compose ps #列出所有容器信息

復制代碼docker-compose build , docker-compose up之后,輸出日志正常,訪問OK:http://localhost:8080/swagger-ui.html

Docker-Compose和K8S區(qū)別

Docker是容器技術的核心、基礎,Docker Compose是一個基于Docker的單主機容器編排工具(容器管理工具),功能并不像Kubernetes那么豐富,Kubernetes是基于Dcoker的跨主機的容器管理平臺。

關于找一找教程網(wǎng)

本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。

本站提供了軟件編程、網(wǎng)站開發(fā)技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。

[Docker安裝Mysql和Redis以及構建部署應用鏡像]http://www.zyiz.net/tech/detail-119530.html

總結

以上是生活随笔為你收集整理的docker安装mysql redis_Docker安装Mysql和Redis以及构建部署应用镜像的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。