Linux环境下Docker实现项目部署

一.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

参考【http://t.csdnimg.cn/Q3JII】 

二.Docker安装

 

三.MySQL部署

1.安装HeidiSQL

参考【http://t.csdnimg.cn/OKl3a

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文件所在的文件夹执行命令

# 进入镜像目录
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.自定义网络

用来让容器之间相互联系的桥梁,在不同容器中可以互相访问

# 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
  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值