Docker部署--第一次尝试部署

本文详细介绍使用Docker部署Web应用的过程,包括构建镜像、端口映射及跨机访问配置,适合初学者快速掌握Docker部署技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

借鉴参考:

Docker部署:https://www.cnblogs.com/bxssjava/p/9978449.html

Docker端口映射含义:https://blog.youkuaiyun.com/qq_29994609/article/details/51730640

外部网络通过端口映射访问部署在虚拟机里Docker中的Web应用:https://blog.youkuaiyun.com/liwenxia626/article/details/80848377

ps:自己记录一下为了以后docker快速部署。

首先部署项目到docker上,在网上看到有很多种方法,这里选择了jar方式,主要是个人对docker不熟,且懒。

将项目打成jar包:

 

然后准备Dockerfile文件,里面就是一些命令:


FROM java:8
EXPOSE 8090
VOLUME /demo_docker_test-0
ADD demo_docker_test-0.0.1-SNAPSHOT.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]


from:是指以哪一种基础镜像为基础;这里选择Java8

Expose:项目中的端口号

Volume:卷名(当需要持久化时有作用,存储的文件夹)

add:添加文件到镜像中

RUN: 在当前的镜像基础上执行指令,并提交为新景象(不太明白)

entrypoint:容器启动以后要执行命令

 

 

然后将jar包,上传到虚拟机中:

自己建一个文件夹 web/helloworld:

 

将jar包和Dockerfile文件放到web/helloworld文件夹下

 

至此,准备工作做好了。

cd 到 放这两个文件的目录下(我的是:/usr/local/software/web/hellowrold)

然后:

构建镜像:

docker build  -t mydocker(镜像名称:自定义)

配置宿主机器(本机上的虚拟机)与虚拟机(docker)的端口映射:

docker run -d -p 7654:8090 mydocker

7654:虚拟机上的端口;8090:docker容器端口  

这样就可以在本机上,通过:  http://虚拟机IP:7654  访问项目了。

 

然后再配置一下本机和虚拟机之间的端口映射,在局域网的其他电脑   就可以通过IP:端口号访问该项目了。

 

 

至此,就打工完了。

 


 

 

### Docker `--volumes-from` 参数详解 #### 功能描述 `--volumes-from` 参数用于让新创建的容器挂载另一个已存在容器中的卷。这使得多个容器可以共享同一个数据存储位置,方便实现跨容器的数据同步和共享[^1]。 #### 基本语法 ```bash docker run -it --name new_container_name --volumes-from source_container_id image_name command ``` 其中: - `-it`: 交互模式启动容器; - `new_container_name`: 新建容器的名字; - `source_container_id`: 已有容器ID或名称,作为源容器提供要挂载的卷; - `image_name`: 要使用的镜像名; - `command`: 启动后的执行指令。 #### 示例演示 假设有一个名为 `data-container` 的容器已经包含了某些重要文件夹 `/var/lib/mysql` ,现在希望另外两个新的容器也能够访问这个路径下的内容: ```bash # 创建第一个依赖于 data-container 卷的新容器 docker run -d --name db_backup_01 --volumes-from data-container mysql:latest mysqldump ... # 再次创建第二个同样依赖该卷的新容器 docker run -ti --rm --volumes-from data-container centos bash ``` 上述例子展示了如何通过指定 `--volumes-from data-container` 来使其他容器继承来自 `data-container` 中定义好的任何卷设置。 #### 只读权限控制 如果只想让目标容器以只读方式访问某个特定卷,则可以在命令后面加上 `:ro` 标志位: ```bash docker run --volumes-from existing_container:ro ... ``` 这样做的好处是可以防止意外修改原始数据的同时保持必要的资源共享能力[^2]。 #### 解决方案与注意事项 当遇到无法正常工作的情况时,可尝试以下方法排查并解决问题: - **确认源容器状态**:确保被引用的源容器处于运行状态;停止状态下仍能成功加载卷但可能影响性能。 - **检查命名冲突**:避免不同容器间出现相同名字引起混淆错误。 - **清理残留资源**:删除不再需要的老化容器以免干扰最新实例间的通信连接。 - **更新客户端版本**:对于较老版Docker CLI来说部分特性支持有限,建议升级到稳定发行版再试一次操作流程。 #### 替代工具推荐 考虑到复杂场景下手动管理多层嵌套关系容易出错,官方推出了更高级别的组合式应用编排框架——Docker Compose 。它允许用户在一个YAML配置文档里清晰地表达整个应用程序所需的所有组件和服务,并简化了一键部署过程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值