Docker入门到精通(项目部署)

这篇具有很好参考价值的文章主要介绍了Docker入门到精通(项目部署)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker部署项目教程,docker,容器,运维

Docker

一. Docker安装

安装参考地址:https://docs.docker.com/engine/install/centos/

  1. 安装仓库
yum install -y yum-utils

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装docker引擎
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 启动docker服务
systemctl start docker
  1. 验证docker运行是否成功
docker run hello-world

二. Docker的镜像与容器

镜像:一个可以被特定的软件或者硬件识别的静态程序。

容器:是一个运行着的程序,它是有容器镜像产生的,一个镜像可以产生很多的容器。

2.1 镜像加速器的配置
  1. 登录阿里云,搜索 “容器镜像服务”
  1. 找到 “镜像工具” => “镜像加速器”,按照文档来操作即可

三. 镜像和容器的命令

3.1 镜像操作
# 查看电脑中所有的镜像
docker images
# 根据镜像id删除镜像,也可以通过名字加标签删除,删除镜像之前要将与之关联的容器删除掉
docker rmi feb5d9fea6a5
# 从镜像仓库获取拉去镜像
docker pull mysql:8
docker pull nginx
3.2 容器的操作
# 查看正在运行着的容器
docker ps 

# 查看所有的容器(正在运行和已经退出的)
docker ps -a
# 杀死一个容器,直接杀死
docker kill b1dec6d5528f

# 关闭一个容器,是比较优雅的方式
docker stop b1dec6d5528f
# 根据容器id删除某个容器
docker rm b1dec6d5528f

# docker ps -qa 查看所有容器的id, $() 这是Linux的命令,会优先执行 $() 中的内容
docker rm $(docker ps -qa)
3.3 docker引擎的工作机制

当启动一个容器的时候,如果docker引擎觉得容器没有事情做的时候,会把容器杀掉,所以在有些时候我们要给容器找点事干,那么docker引擎就不会将容器杀掉。

上图中,启动一个centos7之后,然后容器就觉得容器没有事情做,然后就将容器杀死了。

# 如下的命令,启动一个centos7的容器,然后让其循环打印 hello,目的是让其有事可干,引擎不会杀死该容器
docker run centos:centos7 /bin/bash -c "while true; do echo hello; sleep 2; done"
3.4 进入容器

进入到容器(容器是运行状态)有两种方式:

  1. 启动的时候进入;
  2. 启动之后进入
# 启动容器的时候并进入到容器
docker run -it centos:centos7 /bin/bash
# 进入容器
docker exec -it f5e4dbcbb9c1 /bin/bash
3.5 返回宿主机

返回宿主机有两种方式:

  1. exit: 退出交互的终端
  2. ctrl + p + q: 这是返回到宿主机,并没有退出那个交互的终端。

四. 启动常见容器

容器中软件的端口只存在于容器的内部,不会占用宿主机的端口,如果想要在外部访问到容器中某个软件,那么必须要通过 -p 来指定将宿主机中的端口映射到容器中端口,访问的时候请求先到宿主机,由宿主机根据端口映射,将请求转发到对应的容器中。

4.1 MySQL
# 3306:3306 第一个3306是宿主机的3306端口,第二个3306是容器中的端口;
# -e 指定MySQL的环境配置,MYSQL_ROOT_PASSWORD是固定写法,用来指定 mysql的root的密码用的
# -d 将日志的打印(目的是让Docker引擎觉得它有事干)在后台进程中运行
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8
4.2 启动Nginx
docker run -p 80:80 -d nginx

五. 数据卷

​ 数据卷就是让容器可以直接访问到宿主机的某个目录。可以通过 -v 指定将容器中的某个目录映射到宿主机的某个目录,那么在容器中透过对应的目录,所有操作都是在操作宿主机上对应文件夹下的文件。

# /nginx-html 这个是宿主机上的目录,可以不提前创建,那么在启动容器的过程会自动的创建
# /usr/share/nginx/html 是nginx容器的目录,透过这个目录下看到内容其实是 宿主机上 /nginx-html目录下的内容
docker run -p 80:80 -v /nginx-html:/usr/share/nginx/html -d nginx

六. 项目部署

  1. 启动一个MySQL的容器,将宿主机上3306端口映射到容器中的3306
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8
  1. 将数据库脚本,上传到宿主机的根目录下,然后拷贝到MySQL容器的根目录中
# 将根目录下的 security.sql 拷贝到 mysql 容器中的根目录下
docker cp /security.sql f11903d81392:/
  1. 进入到容器,然后进入到 MySQL执行如下命令,导入脚本
# 进入到mysql 容器
docker exec -it f11903d81392 /bin/bash

# 进入到mysql, 要输入密码
mysql -uroot -p 

# 创建 security数据库,与Java项目中数据库配置保持一致
CREATE DATABASE smartbuilding;

# 使用 security 这个数据库
use security;

# 导入SQL的脚本
source /security.sql;

# 退出数据库
exit;

# 退出容器
exit
  1. 启动一个nginx容器,在宿主机上映射一个名为 nginx-html 的目录的数据卷
docker run -p 80:80 -v /nginx-html:/usr/share/nginx/html -d nginx
  1. Java程序打包,在pom.xml 文件中引入如下的依赖,根据实际情况修改配置。
<dependencies>
	<!-- 其他依赖省略  -->
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>
  1. 打包springboot项目,打开手动执行命令的工具
  1. 执行如下命令,将项目打包
# maven的打包命令,-Dmaven.test.skip=true表示忽略单元测试
mvn package -Dmaven.test.skip=true
  1. 将打好的jar包在本地先运行一下,看是否打包正确;然后上传到服务器
  1. 在服务器中启动springboot项目,启动命令如下所示:
# springboot-security.jar 这个看实际情况做出相应的修改
# &控制台的打印在后台运行;
# nohup 是解决linux远程终端关闭,项目停止运行的问题
nohup java -jar springboot-security.jar  &
  1. 前端Vue项目打包,执行如下命令,会在项目目录下生成一个 dist 目录
# 打包前端项目,会在项目目录下生成一个 dist 目录
npm run build:prod
  1. 将dist目录下的内容上传到 /nginx-html 目录下,该目录是nginx容器的数据卷
  1. 在浏览器中输入地址访问即可

补充

springboot在不重新打包的情况下,更新jar包中的内容的命令如下所示:文章来源地址https://www.toymoban.com/news/detail-783933.html

# u表示要更新的jar
# v输出日志
# f指定归档文件
# 0表示只是把文件替换jar中的文件,而不是打包
# /application.yml 要更新的问题
jar -uvf0 springboot-security.jar /application.yml

> 11. 将dist目录下的内容上传到 `/nginx-html` 目录下,该目录是nginx容器的数据卷

> 12. 在浏览器中输入地址访问即可

### 补充

> springboot在不重新打包的情况下,更新jar包中的内容的命令如下所示:

```shell
# u表示要更新的jar
# v输出日志
# f指定归档文件
# 0表示只是把文件替换jar中的文件,而不是打包
# /application.yml 要更新的问题
jar -uvf0 springboot-security.jar /application.yml

到了这里,关于Docker入门到精通(项目部署)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu安装教程及docker安装容器,前后端部署

    1.0、Linux的常用命令 1.1、虚拟机安装Ubuntu20.0.4 1、 2、 3、 4、 5、 6、 7、 8、待补充 9、默认选择 10、 11、 12、 13、 14、 15、修改完成后,点击上面的完成。 16、 17、语言建议英文 防止中文出现问题-----问题可能会有 18、 19、 20、 21、 22、 23、 24、不能使用root用户创建,改回别

    2024年02月04日
    浏览(37)
  • 解决Docker部署SpringBoot项目时各容器的相互调用

    目录 一、项目问题场景: 二、问题分析: 三、解决各容器互相调用的办法: 1、第一步: 2、第二步: 3、第三步: 一、项目问题场景: 项目打包成jar包后,通过 可以正常连接我本地的docker容器中的其他服务,如mysql,nacos,sentinel,rabbitmq等等 但是当我将这个jar包打包成镜

    2024年02月16日
    浏览(31)
  • Docker容器化部署若依微服务ruoyi-cloud项目

    接下来的内容以 Ubuntu 22.04.1 操作系统为例。 验证版本信息 Note: 在 CentOS7 上使用上述 yum 方式安装的 Docker ,默认自带了Docker Compose Plugin,不过命令是 docker compose 。 docker pull docker run docker images docker ps docker logs docker start docker stop docker restart docker rmi docker rm docker exec docker netwo

    2024年02月04日
    浏览(32)
  • 【SpringBoot】| (保姆级)部署SpringBoot项目到docker容器Ⅱ | JDK11

    作者:狮子也疯狂 专栏:《spring开发》 坚持做好每一步,幸运之神自然会驾凌在你的身上 最近在帮一个小伙伴弄一个毕设,项目写好了,需要部署一下。简单记录一下步骤! 大致过程如下: 本地将SpringBoot应用打包成jar——本地编写好Dockerfile( 或者在服务器上边写,这里

    2023年04月15日
    浏览(32)
  • Docker快速入门和部署项目

    1,Docker是一个,快速构建、运行、管理应用的工具  。 2,前面我们了解过在Linux操作系统的常见的命令以及如何在Linux中部署一个人单体的项目。感受如何呢??? 命令太多了,记不住 软件安装包名字复杂,不知道去哪里找 安装和部署步骤复杂,容易出错 3, 这就是我今天

    2024年04月12日
    浏览(23)
  • 『Docker入门指南』- 详细安装与配置教程,助你起航容器化世界!

    在探索云计算和自动化部署的时代,Docker以其独特的容器化技术站在了风口浪尖。如果你期待着无缝地将你的应用从一个环境迁移到另一个环境,那么Docker无疑是你的得力助手。但首先,我们得学会如何正确地安装和配置Docker。这篇文章将详细指导你完成这一关键步骤。 容器

    2024年02月19日
    浏览(41)
  • 2-Docker-应用-多容器部署Django+Vue项目(nginx+uwsgi+mysql)

    基于Linux CentOS 7系统(虚拟机),使用Docker,多容器部署Django+Vue项目 整体部署用到了:Django+Vue+nginx+mysql+uwsgi 先每一个容器单独部署,最后用Docker compose 语法整合,统一部署 参考文章:https://blog.csdn.net/qq_45445505/article/details/135563784 章标题:Docker介绍 节标题:Docker安装 总结梳

    2024年03月10日
    浏览(85)
  • Centos7系统 Docker 安装和使用教程(超详细附带常用的容器部署代码)

    简介 Docker 是一个开源的容器化平台,可帮助开发者轻松地创建、部署和运行应用程序。 Docker 使开发人员能够在一个独立的容器中打包应用程序及其依赖项,这样他们就可以轻松地将应用程序移植到任何其他环境中。 使用 Docker 的主要优势: 便于部署:由于 Docker 容器可以在

    2024年02月08日
    浏览(40)
  • 四、Dockerfile应用案例教程(将一个或多个jar包部署到docker容器中运行)

    现有环境如下: 1.工作目录下有若干个可执行的jar包:在工作目录下打开命令行进行操作(Windows和Linux版的docker均可,这里以Windows为例) 2.拉取任意一个能运行jar包的jdk镜像:我的是adoptopenjdk/openjdk12 3.已具备jar包所需的基本组件:例如mysql、redis、nacos等 假如我只想将nettys

    2024年02月04日
    浏览(42)
  • 保姆教程 Docker 部署微服务项目

    大家好,我是奇兵。 文章比较长,请耐心看完! 项目上线是每位学编程同学必须掌握的基本技能。之前我已经给大家分享过很多种上线单体项目的方法了,今天再出一期微服务项目的部署教程,用一种最简单的方法,带大家轻松部署微服务项目。 开始之前,先做个小调研啊

    2024年04月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包