docker安装mysql redis_Docker安装Mysql和Redis以及构建部署应用镜像
為了方便本地測試項目,為了方便開啟新的環境,為了方便部署,打算本地利用Docker安裝Mysql和Redis。
搭建Springboot項目,編寫Dockerfile,打包構建鏡像。
簡單使用docker-compose啟動服務。
簡述docker-compose和K8S。
環境
系統: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
復制代碼
創建mysql的掛載的目錄
mkdir -p /Users/yclxiao/Program/volume/mysql/data /Users/yclxiao/Program/volume/mysql/conf /Users/yclxiao/Program/volume/mysql/logs
復制代碼
創建cnf文件
cd /Users/yclxiao/Program/volume/mysql/conf
touch my.cnf
復制代碼
創建容器,將數據、日志、配置文件,映射到本機
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:設置參數
啟動容器
docker start mysql
復制代碼
docker run xxx 和 docker start xxx 區別?
docker run:
只有在第一次運行時使用,將鏡像放到容器中,以后再次啟動容器的時候,只需要使用docker start就可以了。
docker run 相當于執行了2個命令:
docker create:將鏡像放入到容器中
docker start:啟動容器,變成運行中的容器
docker start:
啟動已經存在的容器
用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:前面是暴露出去的端口,后面是容器內部的服務端口
-v:將宿主機目錄掛載到容器的/data目錄,使用:
--name:此容器的別名
--appendonly:啟用數據持久化保存
redis-server --appendonly yes:在容器執行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 #創建一個容器但是不啟動它
docker run #創建并啟動一個容器
docker start #啟動一個停止狀態的容器
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 #發送信號給容器,默認SIGKILL
docker exec #進入到容器里執行命令
docker inspect #深入容器內部獲取容器所有信息
編寫Dockerfile
Dockerfile是docker構建鏡像的基礎,也是docker區別于其他容器的重要特征,正是有了Dockerfile,docker的自動化和可移植性才成為可能。
FROM,從一個基礎鏡像構建新的鏡像
FROM openjdk:8-jdk-alpine
復制代碼
MAINTAINER,維護者信息
MAINTAINER yclxiao
復制代碼
ENV,設置環境變量
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"] 執行命令
ENTRYPOINT ["/usr/sbin/nginx"]
復制代碼
CMD ["param1","param2"]
CMD ["start"]
復制代碼
docker創建、啟動container時執行的命令,如果設置了ENTRYPOINT,則CMD將作為參數
示例:利用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插件定義的參數
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目錄下,執行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
復制代碼
執行docker images,可以在本地倉庫看到此鏡像。
查看dockerHub倉庫https://hub.docker.com/,可以看到此鏡像
創建啟動容器:
docker run -p 8080:8080 yclxiao/blog-dbpool-main:0.0.1-SNAPSHOT [-d]
利用Docker-Compose部署
容器多了之后,必然需要一種管理容器的工具,那么docker-compose應運而生,docker-compose是用于定義和運行本機的多個docker容器的工具,負責實現對Docker容器集群的快速編排,可以使用yml文件來配置應用程序需要的所有服務。然后使用命令,從yml文件配置中創建并啟動所有服務。
兩個重要概念:
?服務(service):一個應用的容器,實際可以包括若干運行相同鏡像的容器實例。
?項目(project):由一組關聯的應用容器組成的一個完整的業務單元,在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: # 設置環境變量
#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"
復制代碼然后執行命令,本地已經下載的鏡像創建的容器,不會再下載創建了:
docker-compose build #根據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區別
Docker是容器技術的核心、基礎,Docker Compose是一個基于Docker的單主機容器編排工具(容器管理工具),功能并不像Kubernetes那么豐富,Kubernetes是基于Dcoker的跨主機的容器管理平臺。
關于找一找教程網
本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。
本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。
[Docker安裝Mysql和Redis以及構建部署應用鏡像]http://www.zyiz.net/tech/detail-119530.html
總結
以上是生活随笔為你收集整理的docker安装mysql redis_Docker安装Mysql和Redis以及构建部署应用镜像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两款扒站工具使用说明
- 下一篇: myeclipse开发代码颜色搭配保护视