-
Docker学习
Docker简介
Docker是一个开源的应用容器引擎,是一个轻量级容器技术。Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像,运行中的这个镜像称为容器,容器启动是非常快速的。
Docker安装
|
# 1.检查centos内核版本,必须是3.10及以上 |
|
uname -r |
|
# 升级内核(选做) |
|
yum update |
|
# 2.安装docker,输入y确认安装 |
|
yum install docker |
|
# 3.启动docker |
|
systemctl start docker |
|
# 4.开机启动docker |
|
systemctl enable docker |
|
# 5.停止docker |
|
systemctl stop docker |
|
# 6.查看版本 |
|
docker -v |
Docker命令
|
# 镜像命令 |
|
|
|
# 1.搜索(我们经常去https://hub.docker.com上检索镜像的详细信息,如镜像的tag) |
|
docker search 关键字 |
|
|
|
# 2.拉取(:tag是可选的,tag表示标签,多为软件的版本,默认是latest最新版本) |
|
docker pull 镜像名:tag |
|
|
|
# 3.列表(查看所有本地镜像) |
|
docker images |
|
|
|
# 4.删除 |
|
docker rmi image-id |
|
|
|
|
|
# 容器命令 |
|
|
|
# 1.运行 |
|
# -d 后台运行 |
|
# -p 指定端口映射 |
|
# -e 设置参数 |
|
# -v 目录挂载 |
|
# --name 自定义容器名 |
|
# image-name 指定镜像模版 |
|
docker run -d -p 主机端口:容器内部端口 --name container-name image-name |
|
|
|
# 2.列表 |
|
# 查看所有容器 |
|
docker ps -a |
|
# 查看所有运行中的容器 |
|
docker ps |
|
|
|
# 3.启动 |
|
docker start container-id |
|
|
|
# 4.停止 |
|
docker stop container-id |
|
|
|
# 5.删除 |
|
docker rm container-id |
|
|
|
|
|
# 其它命令 |
|
|
|
# 1.查看日志 |
|
# -f 跟踪日志输出 |
|
# -t 显示时间戳 |
|
docker logs container-id/container-name |
|
|
|
# 2.进入容器 |
|
# 进入容器后开启一个新的终端,可以在里面操作 |
|
docker exec -it container-id/container-name /bin/bash |
|
|
|
# 3.退出容器 |
|
exit |
|
|
|
# 4.重启容器 |
|
docker restart container-id/container-name |
|
|
|
# 4.查看版本 |
|
docker -v |
安装MySQL
|
# 拉取指定版本5.7 |
|
# MYSQL_ROOT_PASSWORD=admin表示root的初始密码 |
|
docker pull mysql:5.7 |
|
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mymysql mysql:5.7 |
安装Redis
|
docker pull redis |
|
docker run -itd -p 6379:6379 --name myredis redis |
|
|
|
# 连接redis客户端 |
|
docker exec -it myredis /bin/bash |
|
redis-cli |
安装RabbitMQ
|
docker pull rabbitmq:management |
|
docker run -d --name myrabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:management |
安装ElasticSearch
|
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2 |
|
docker run -d --name myelasticsearch -p 9200:9200 -p 9300:9300 docker.elastic.co/elasticsearch/elasticsearch:6.3.2 |
|
|
|
# 安装ik分词器(可选) |
|
docker exec -it myelasticsearch /bin/bash |
|
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.2/elasticsearch-analysis-ik-6.3.2.zip |
|
|
|
# 配置文件修改(可选,需要修改或查看时执行) |
|
docker exec -it myelasticsearch /bin/bash |
|
vi /usr/share/elasticsearch/config/elasticsearch.yml |
部署SpringBoot项目
有了上面这些环境后,接下来就可以部署我们的SpringBoot项目了,以我的博客项目为例:
在服务器中创建一个blog文件夹;
本地使用idea编译打包项目后得到blog-web-0.0.1-SNAPSHOT.jar,上传至服务器blog文件夹中;
本地创建一个Dockerfile文件,内容如下:
|
FROM java:8 |
|
EXPOSE 8089 |
|
|
|
VOLUME /tmp |
|
|
|
ENV TZ=Asia/Shanghai |
|
RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo "{TZ}" > /etc/timezone |
|
|
|
ADD blog-web-0.0.1-SNAPSHOT.jar /app.jar |
|
RUN bash -c 'touch /app.jar' |
|
ENTRYPOINT ["java","-jar","/app.jar"] |
|
|
|
# 说明: |
|
# FROM java:8 表示基于jdk8环境; |
|
# EXPOSE 8089 表示对外暴露的端口是8086 |
|
# VOLUME /tmp 表示挂载到/tmp目录 |
|
# ADD blog-web-0.0.1-SNAPSHOT.jar /app.jar 表示把jar包复制到镜像服务里面的根目录,并改名为app.jar |
|
# RUN bash -c 'touch /app.jar' 表示执行创建app.jar |
|
# ENTRYPOINT ["java","-jar","/app.jar"] 表示执行启动命令java -jar |
将Dockerfile文件上传至服务器blog文件夹中;
构建镜像并启动容器,在blog文件夹下执行。
|
# 构建镜像,注意后面有个点 |
|
docker build -t blog-web . |
|
|
|
# 启动容器 |
|
docker run -p 8089:8089 --name blog-web -d -e JAVA_OPTS="-Xms1024m -Xmx1024m" blog-web |
|
|
|
# 查看日志 |
|
docker logs -f blog-web |
|
|
|
# 如果想要重新打包构建的话需要停止容器,删除镜像,再重新构建启动就好了 |
这样就完成啦,是不是很简单!
来源:https://www.cnblogs.com/zhanglei-code/p/15423109.html
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比