docker从安装到部署一个项目

2023-10-27

一.centos安装docker

参考博客:https://blog.csdn.net/m0_47010003/article/details/127775185

1.设置一下下载Docker的镜像源

设置下载的镜像源为国内的阿里云,如果不设置,会默认去Docker的官方下载

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.安装Docker

首先,
下面这个命令是将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度

yum makecache fast

提高安装速度以后,安装docker相关的。(docker-ce 社区版 而ee是企业版)

yum install docker-ce docker-ce-cli containerd.io

3.启动,并设置为开机自动启动,测试

3.1 启动Docker服务

systemctl start docker

3.2 设置开机自动启动

systemctl enable docker

3.3 测试

docker run hello-world

如果出现以下代码,说明运行成功:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qEEX2S28-1678243523307)(C:\Users\bangsun\Desktop\个人\docker\图片1.png)]

二.阿里云镜像加速

1.登录阿里云账号:https://dev.aliyun.com

2.进入控制台

在这里插入图片描述

3.搜索:容器镜像服务

在这里插入图片描述

4.进入到这个界面:

在这里插入图片描述

5.官网教程(按步骤来)

1.sudo mkdir -p /etc/docker 
2.sudo tee /etc/docker/daemon.json <<-'EOF' 
{  
"registry-mirrors": ["https://uo895hbl.mirror.aliyuncs.com"] 
} 
EOF 
3.sudo systemctl daemon-reload 
4.sudo systemctl restart docker

6.验证是否设置成功

1.输入docker info,以下情况即为替换成功

在这里插入图片描述

三.下载运行tomcat

1.可以去官方镜像网站https://hub.docker.com/搜索需要的镜像,这里我们下载tomact8.5的镜像,输入命令docker pull tomcat:8.5 镜像的后面为版本号,也可以为latest(最新),这里不推荐最新,可能会有很多坑

在这里插入图片描述

2.输入docker images 即可查看下载的镜像
在这里插入图片描述

3.运行镜像,输入命令

docker run -d -p 9090:8080 --name tomcat1 tomcat:8.5
-d :就是以后台运行方式运行  也可以 -t :以交互式运行
-p :暴露端口号第一个9090是暴露linux 的端口号,这样外部才能连接linux
	 第二个端口号暴露的是容器的端口号,这样linux才能连接容器这样外部就能通过服务器访问容器了
--name:给容器取名
tomcat:8.5:运行时加上版本,指定是这个服务器

4.输入docker ps查看容器的状态

在这里插入图片描述

5.docker的tomcat镜像里webapps文件夹下没有东西,都被移动到webapps下的dist文件夹内了,这里我们把它移动到webapps文件夹下

输入命令,进入容器

docker exec -it tomcat1 /bin/bash

将文件夹webapps下的dist文件夹下的内容复制到webapps文件夹中

cp -r webapps.dist/* webapps

在这里插入图片描述

6.验证是否成功,打开浏览器,输入服务器的外网ip+设置的tomcat的port

在这里插入图片描述

访问成功,大功告成!

四.部署一个web项目

1.编写Dockerfile,我们需要建立一个dockerfile告诉docker需要做什么

1.1.首先创建一个空的项目目录

mkdir docker-demo

1.2.创建一个Dockerfile

touch Dockerfile

1.3.编写Dockerfile

FROM tomcat:8.5
MAINTAINER fwm 5120@qq.com
COPY ssm_yygh.war /usr/local/tomcat/webapps
FROM 镜像 指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令
MAINTAINER 名字 说明新镜像的维护人信息
COPY 源文件/目录 目标文件/目录 将本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同目录中

2.开始构建镜像

2.1在 Dockerfile 文件的存放目录下,执行构建动作。

以下示例,通过目录下的 Dockerfile 构建一个 docker-demo:v1 (镜像名称:镜像标签)。

docker build -t docker-demo:v1 .        #别忘记最后的点号,表示当前目录

在这里插入图片描述

2.2输入docker images,验证是否成功创建

在这里插入图片描述

3.运行镜像

3.1指定端口运行镜像

docker run -d -p 8085:8085 docker-demo:v1 --name docker-demov1
-d :就是以后台运行方式运行  也可以 -t :以交互式运行
-p :暴露端口号第一个8085是暴露linux 的端口号,这样外部才能连接linux
			 第二个端口号暴露的是容器的端口号,这样linux才能连接容器
	这样外部就能通过服务器访问容器了
--name:给容器取名
docker-demo:运行时加上镜像,指定是这个服务器

3.2输入docker ps,验证是否成功运行

在这里插入图片描述

打开浏览器,输入ip+刚刚指定的端口+项目入口
在这里插入图片描述

可以看到,我们的项目已经部署成功了,只是目前报500错误,因为当前还没有部署mysql

工作太忙~后续继续更新mysql

五.下载运行mysql

1.可以去官方镜像网站https://hub.docker.com/搜索需要的镜像,这里我们下载mysql:5.7的镜像
输入命令docker docker pull mysql:5.7 镜像的后面为版本号,也可以为latest(最新)

#下载mysql,版本号5.7
docker pull mysql:5.7

在这里插入图片描述

2.输入docker images 即可查看下载的镜像

在这里插入图片描述

3.运行镜像,输入命令

docker run -d -p 3306:3306 \
--privileged=true \
-v /docker/mysql/conf/my.cnf:/etc/my.cnf \
-v /docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD='root'  \
--name mysql mysql:5.7


# --privileged=true 打开root的权限
# 表示映射宿主机3316端口到容器内部的3306端口,mysql连接密码为root,配置了容器my.cnf和mysql数据目录在宿主机的链接

4.输入docker ps查看容器的状态

在这里插入图片描述

5.到这里我们就启动好了,用navicat测试一下连接
在这里插入图片描述
6.把项目的数据库放进去,再改一下项目的jdbc连接配置,大功告成!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker从安装到部署一个项目 的相关文章

  • 在 scapy 中通过物理环回发送数据包

    我最近发现了 Scapy 它看起来很棒 我正在尝试查看 NIC 上物理环回模块 存根上的简单流量 但是 Scapy sniff 没有给出任何结果 我正在做的发送数据包是 payload data 10 snf sniff filter ic
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • Docker连接SQL Server容器非零代码:1

    我正在尝试从创建一个 SQL Server 容器docker compose yml但是当我运行它时 它直接停止并出现一些错误 注意 它运行在带有 docker Preview 的 Apple M1 芯片上 docker compose y
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • 如何检查docker中当前/默认的日志驱动程序?

    我正在尝试检查已停止的 docker 容器的日志 但是当我这样做时docker logs
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • 从 Docker 容器发送多播数据包(到多播组)

    我有一个通过 UDP 多播发送消息的应用程序 我一直试图将其放在 docker 下 我在尝试从 Docker 容器发送多播数据包时遇到了很大的阻力 我已经能够通过 net host运行 docker 容器的选项 然而 我想坚持使用桥接配置
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • 应用程序移至 Docker 生产环境时 Flask-WTF CSRF 验证失败

    我刚刚为我一直在开发的 Flask 应用程序设置了生产环境 这个堆栈是 Windows Server 2012 R2 Hyper V VM Running Ubuntu 14 04 Docker 1 5 Running Containers
  • 如何在 Linux 上通过 FTP 递归下载文件夹 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • 经常提交 docker 容器是一个好习惯吗?

    我在里面使用WebSphere Liberty 由于 WebSphere Liberty 需要频繁的 xml 编辑 这对于 Dockerfile 命令来说是不可能的 我必须不时地对容器进行 docker commit 以便其他人可以使用我的
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu

随机推荐