当前位置: 首页> 教育> 高考 > 重庆建设工程信息网网_制作自己的网站学校_网页模板免费html_网站排名优化课程

重庆建设工程信息网网_制作自己的网站学校_网页模板免费html_网站排名优化课程

时间:2025/7/11 15:22:16来源:https://blog.csdn.net/weixin_47792780/article/details/142750282 浏览次数:0次
重庆建设工程信息网网_制作自己的网站学校_网页模板免费html_网站排名优化课程

一、Docker已启动容器如何修改端口等启动配置

    docker在创建容器的时候可以自定义指定端口,也可以通过多个-p选项添加多个端口映射,但如果已经创建容器(特别是已经在容器中执行一些命令安装了一些业务中需要的环境),这时想保留容器已有配置和环境的前提下又想修改端口映射就需要使用其它的办法了。

    由于已经对原有镜像进行了修改,如果此时删除容器再修改端口启动镜像容器就需要重新安装已经执行的环境安装工作,挺麻烦,特别是你根本没有记录都执行了一些什么命令来完善环境,此时又需要重新来一遍。此时还有几个其它好用的办法。

1,可以将已经配置好启动的容器打包成新的镜像,方法见:Docker打包容器并跨服务器传输重建加载load镜像Unable to find image :latest问题解决 及 Docker在容器未启动的情况下如何修改容器中文件_unable to find image 'root:latest' locally-CSDN博客 这样在新的镜像上修改端口启动容器即可保留环境,同时也是一个备份环境的方案。

2,修改容器配置文件,以修改端口。这种处理要停止docker服务(systemctl stop docker 不只是停止容器,而是停止docker),然后进入到容器的配置文件中修改,如下(CONTAINER ID为完整的容器id,可以进到目录下查看,其开头部分就是docker ps -a查看到的容器ID),修改hostconfig.json和config.v2.json两个文件如下:

#修改hostconfig.json
vim /var/lib/docker/containers/CONTAINER ID/hostconfig.json"PortBindings": {#容器内IP"8010/tcp": [{"HostIp": "",#容器外IP端口"HostPort": "8010"}]},
#修改config.v2.json
vim /var/lib/docker/containers/CONTAINER ID/config.v2.json
#修改ExposedPorts数据,
"ExposedPorts": {"80/tcp": {},"81/tcp": {}},

然后启动docker和容器即可。

二、Docker容器构建文件Dockerfile中的指令列表

1. COPY:复制指令

格式:COPY [--chown=<user>:<group>] <源路径1>...  <目标路径>
从上下文目录中复制文件或者目录到容器里指定路径,[--chown=<user>:<group>]为可选参数,用户改变复制到容器内文件的拥有者和属组。

ADD:可以把这个指令忘了。一律使用COPY

2. CMD:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:

格式:CMD ["<可执行文件或命令>","<param1>","<param2>",...]
CMD 在docker run 时运行,RUN 是在 docker build。
作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
Dockerfile中只能执行一个CMD,如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

3. ENTRYPOINT:类似于CMD指令,

但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
格式:ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 CMD 指令指定的程序。优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。感觉ENTRYPOINT指令也是不常用的。

4. ENV:设置环境变量,

定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。
格式:ENV <key> <value>或者ENV <key1>=<value1> <key2>=<value2>...
以下示例设置 VERSION = 6.0 , 在后续的指令中可以通过 $VERSION 引用:
ENV VERSION 6.0
RUN curl -SLO "https://hub.docker.com/redis$VERSION.tar.xz"

5. 其它等如下:

ARG:构建参数,与 ENV 作用一至。
格式:ARG <参数名>[=<默认值>]
不过与 ENV的作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,只有docker build的过程中才有效,构建好的镜像内不存在此环境变量。
构建命令 docker build 中可以用 --build-arg <参数名>=<值> 来覆盖。

VOLUME:定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
格式:VOLUME ["<路径1>", "<路径2>"...]
避免重要的数据,因容器重启而丢失,这是非常致命的,同时可以避免容器不断变大,在启动容器 docker run 的时候,我们可以通过 -v 参数修改挂载点。

EXPOSE:仅仅只是声明端口。并不实际起作用,给用户一个提示。
格式:EXPOSE <端口1> [<端口2>...]
帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。

WORKDIR:指定工作目录。
格式:WORKDIR <工作目录路径>
用WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。注意,WORKDIR 指定的工作目录,必须是提前创建好的。docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。

USER:用于指定执行后续命令的用户和用户组
格式:USER <用户名>[:<用户组>]
这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。

HEALTHCHECK:用于指定某个程序或者指令来监控 docker 容器服务的运行状态。
格式:HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令
可使用HEALTHCHECK NONE屏蔽掉其健康检查指令,一般是云服务方对这个有需要,以对基础镜像进行健康检查。

ONBUILD:用于延迟构建命令的执行。
格式:ONBUILD <其它指令>
简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build ,这是执行新镜像的 Dockerfile 构建时候,会执行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。

关键字:重庆建设工程信息网网_制作自己的网站学校_网页模板免费html_网站排名优化课程

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: