一.linux环境准备
1.Vmware
2.MobarXterm
报错:启动mobarXterm时 Network error: Connection timed out
Network error: Connection timed out
Session stopped
- Press <return> to exit tab
- Press R to restart session
- Press S to save terminal output to file
解决:在Vmware中关闭防火墙
关闭并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
查看状态
systemctl status firewalld
参考【】
二.Docker安装
三.MySQL部署
1.安装HeidiSQL
参考【】
2.创建数据库docker
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
//默认为latest版本的mysql
参考
【https://www.bilibili.com/video/BV1HP4118797/?p=4&share_source=copy_web&vd_source=10835d8d64d716d4b383904238bd8741】
3.在HeidiSQL连接
打开左上角的"显示器连接管理器"
点击左下角"新建"
右边填写ip地址 {虚拟机设置以太网时,显示的ip地址}
填写用户,密码 {创建数据库docker代码中设置的}
填写端口 { {创建数据库docker代码中 3306:3306 填写冒号前面的部分}
宿主机端口:容器内端口
宿主机端口要改动,用于数据库连接;各容器内端口默认3306,无需改动
点击打开,保存更改,即可连接数据库
4.镜像下载
Docker Hub网站: http://hub.docker.com
5.其他docker命令
官方文档:http://docs.docker.com
进入官网-> Reference->Commandline reference->查阅命令和作用
下载镜像
docker pull
查看镜像
docker images
删除镜像
docker rmi
创建并运行容器
docker run
停止容器
docker stop
启动容器
docker start
查看容器运行状态
docker ps
删除容器
docker rm
查看容器 : 查看ip地址
docker inspect +容器名
进入容器内部执行一些命令
docker exec
查看运行日志
docker logs
四.Nginx部署
1.ningx镜像容器
1.去DockerHub【hub.docker.com】查看nginx镜像仓库及相关信息
2.拉取Nginx镜像
docker pull nginx
3.查看镜像
docker images
4.创建并允许Nginx容器
docker run -d --name nginx -p 80:80 nginx
5.查看运行中容器
docker ps
//也可以加格式化方式访问,格式会更加清爽
//docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
6.持续查看nginx日志
docker logs -f nginx
{ Ctrl + C 停止}
7.访问网页 地址:http://虚拟机地址
发现nginx已启动
8.进入容器,查看容器内目录
docker exec -it nginx bash
//或者,可以进入MySQL
1直接进入客户端
docker exec -it mysql mysql -uroot -p
2先进入mysql容器 再进入客户端
//docker exec -it
//mysql mysql -uroot -p
//输密码
{ exit 退出}
五.与容器挂载
1.数据卷挂载
数据卷是一个虚拟目录,他把宿主机目录映射到容器目录,方便我们操作容器内文件,或者方便迁移容器产生的数据。
下文以挂载nginx举例
指定数据卷
这个操作包含容器的创建!
# 1.首先创建容器并指定数据卷,注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
//容器目录
# 2.然后查看数据卷
docker volume ls
# 结果
DRIVER VOLUME NAME
local 29524ff09715d3688eae3f99803a2796558dbd00ca584a25a4bbc193ca82459f
local html
# 3.查看数据卷详情
docker volume inspect html
# 结果
[
{
"CreatedAt": "2024-05-17T19:57:08+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/html/_data", //宿主机目录
"Name": "html",
"Options": null,
"Scope": "local"
}
]
# 4.查看/var/lib/docker/volumes/html/_data目录
ll /var/lib/docker/volumes/html/_data
# 可以看到与nginx的html目录内容一样,结果如下:
总用量 8
-rw-r--r--. 1 root root 497 12月 28 2021 50x.html
-rw-r--r--. 1 root root 615 12月 28 2021 index.html
# 5.进入该目录,并随意修改index.html内容
cd /var/lib/docker/volumes/html/_data
vi index.html
# 6.打开页面,查看效果
# 7.进入容器内部,查看/usr/share/nginx/html目录内的文件是否变化
docker exec -it nginx bash
修改文件
1.MobarXterm直接修改
在左导航栏找到地球->找到文件->进入编辑器修改
2.vi指令法
vi index.html
进入文件后
单击s进入编辑模式
单击Esc退出编辑模式
退出编辑模式后输入” :wq “ 保存并退出vi
退出编辑模式后输入” :q “ 退出vi
补充
2.本地目录挂载
下文以挂载mysql举例
指定本地目录
这个操作包含容器的创建!
3.查看挂载信息(补充)
docker inspect +容器名
其中Mounts部分就为挂载信息
六.前端部署
七.后端部署
1.自定义镜像
Dockerfile
基于jdk构建镜像:
Dockerfile要和jar包在同一个文件夹
# 基础镜像!!!注意这个镜像openjdk:11.0-jre-buster是要自己下的
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
构建镜像:
进入Dockerfile文件所在的文件夹执行命令文章来源:https://www.toymoban.com/news/detail-831822.html
# 进入镜像目录
cd /root/demo
# 开始构建
docker build -t docker-demo:1.0 .
//-t 表示给镜像起名字
# 查看镜像列表:
docker images
# 1.创建并运行容器
docker run -d --name dd -p 8090:8090 docker-demo:1.0
# 2.查看容器
dps
2.自定义网络
用来让容器之间相互联系的桥梁,在不同容器中可以互相访问文章来源地址https://www.toymoban.com/news/detail-831822.html
# 1.首先通过命令创建一个网络
docker network create hmall
# 2.然后查看网络
docker network ls
# 3.让dd和mysql都加入该网络,注意,在加入网络时可以通过--alias给容器起别名
# 这样该网络内的其它容器可以用别名互相访问!
# 3.1.mysql容器,指定别名为db,另外每一个容器都有一个别名是容器名
docker network connect hmall mysql --alias db
//通过docker inspect mysql ->networks 来查看容器mysql连接的网络
# 3.2.db容器,也就是我们的java项目
docker network connect hmall dd
# 4.进入dd容器,尝试利用别名访问db
# 4.1.进入容器
docker exec -it dd bash
# 4.2.用db别名访问
ping db
# 结果
PING db (172.18.0.2) 56(84) bytes of data.
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=1 ttl=64 time=0.070 ms
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=2 ttl=64 time=0.056 ms
# 4.3.用容器名访问
ping mysql
# 结果:
PING mysql (172.18.0.2) 56(84) bytes of data.
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=2 ttl=64 time=0.054 ms
到了这里,关于Linux环境下Docker实现项目部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!