docker:打包和别名

发布于:2024-07-19 ⋅ 阅读:(139) ⋅ 点赞:(0)

系列文章目录

docker:环境安装
docker:Web迁移
docker:Haoop集群
docker安装mongodb
docker:打包和别名



前言

上周公司让做一个项目迁移,将项目迁移到docker中,其中涉及到了打包和别名,但是公司的内容不能拿出来了,所以用我自己的项目做一个记录。


一、docker打包

编写dockerfile

# 基础镜像
FROM chaoge615/myflask:latest

# 工作目录
WORKDIR /var/www/

# 安装环境,配置文件
RUN apt update&&apt install git -y&&git clone https://github.com/lcc-666/gaokao.git&&pip install -r ./gaokao/fun/requirements.txt \
    && cp ./gaokao/custom.conf /etc/apache2

# 要暴露的端口
EXPOSE 5002

这个是最近我根据我之前的镜像新做的一个项目,有关数据的部分我隐去了。简单说明一下这个dockerfile。
FROM:指定要修改的基础镜像。
WORKDIR:工作目录,没有会自动创建,后期如果使用相对路径,从这里开始。
RUN:执行SHELL命令,一般用于安装环境,命令必须不用人工干预。当命令较多时,使用&&连接。
例子

# 错误案例
apt install git
# 正确案例
apt install git -y

CMD:此次未使用,也是执行SHELL命令的,如果未编写,默认调用上层镜像的CMD命令。CMD最多写一条,编写多个默认调用最后一个。CMD命令在容器启动后首先执行,一般用于启动服务。
CMD命令要求:必须是前台命令,且不会自动停止,如果命令会自动停止(例如安装),命令结束后,容器也会停止。
EXPOSE:外部访问的端口,也就是启动命令中 -pxx1:xx2 中的xx2.。

命令打包

在dockerfile所在目录执行打包命令。

docker build -t gaokao .

在这里插入图片描述
在这里插入图片描述
查看一下是否有新镜像。
在这里插入图片描述
然后运行镜像并且将镜像加入数据库所在的网络。

docker run --name gaokao -p5002:5002 -d --network gaokao gaokao

之后浏览器访问一下。
在这里插入图片描述
这样就可以使用一条启动命令快速部署自己的服务了。

二、docker别名

我在之前的工作中,遇到这样一个问题,需要将多个域名指向同一个IP,正常情况下只要配置本地hosts文件就可以了,但是在docker中IP会随着应用重启而变化所以我们直接将容器名当作域名使用,docker支持直接使用容器名当域名使用,且会将容器名和容器IP动态绑定,这就需要一个容器拥有多个容器名。

1.官方教程

各种论坛查了半天,写的也是也是乱七八糟,只查到要用alias参数,怎么用搞了半天也没搞明白,最后还是去看官方文档才明白怎么做。

alias
在这里插入图片描述

2.案例测试

官方案例中需要将需要相互访问的容器放到同一个网络中,所以我们先新建一个网络。

docker network create alias

在这里插入图片描述
然后我们新建一个nginx的server容器并将他加入网络。

docker run --name NginxServer -d --network alias nginx

在建造一个服务端用作测试

docker run -d --name NginxCient --network alias  nginx

我们现在进程客户端访问一下服务器。

docker exec -it NginxServer bash

在这里插入图片描述
现在我们为其添加别名,添加别名需要在添加网络时设置,所以我们先将其移除网络。

docker network disconnect alias NginxServer

然后使用alias参数将其加入到网络。

docker network connect --alias name1 --alias name2 alias NginxServer

之后我们再用客户端拉取页面。
在这里插入图片描述
在这里插入图片描述
这样我们就完成了docker容器别名的设置。


总结

以上就是最近遇到的有关别名和打包遇到的问题。


网站公告

今日签到

点亮在社区的每一天
去签到