docker容器原样迁移完整过程(nignx例子)

news2024/11/20 2:39:07

我们在测试服务器上,辛辛苦苦开发,各种配置好了服务,然后想着傻瓜式的迁移部署。接下来的就是干货了

过程描述:
为了体现一个完成性的描述,我们最初拉镜像开始,一直说到迁移后的服务正常运行。

接下来以nginx为例,正文开始

1.拉取镜像

获取镜像文件:
docker pull nginx

2.镜像文件对应

没有本地与容器关键性文件映射的容器,没有灵魂啊 亲
nginx 我们对应什么呢 通常就是 logs文件 html 即Web对应发布文件 etc配置文件
这些文件我们不知道在容器中的样子怎么办,先跑一个容器,进去探查一番

测试 跑一个容器:
docker run -d --name nginx01 -p 80:80  nginx
进入容器:
docker exec -it nginx01 bash
搜索nginx相关:
find / -name nginx
root@d95b2788b9cc:/# find / -name nginx
/etc/default/nginx
/etc/init.d/nginx
/etc/logrotate.d/nginx
/etc/nginx
find: '/proc/1/map_files': Operation not permitted
find: '/proc/24/map_files': Operation not permitted
find: '/proc/25/map_files': Operation not permitted
find: '/proc/26/map_files': Operation not permitted
find: '/proc/27/map_files': Operation not permitted
find: '/proc/28/map_files': Operation not permitted
find: '/proc/36/map_files': Operation not permitted
/usr/lib/nginx
/usr/sbin/nginx
/usr/share/doc/nginx
/usr/share/nginx
/var/cache/nginx
/var/log/nginx

进入这几个目录发现:

/usr/share/nginx目录下的html为映射文件目录

这几个目录中没有发现配置文件的踪影…

再次精准检索:
find / -name nginx.conf
root@d95b2788b9cc:/var/cache/nginx# find / -name nginx.conf
/etc/nginx/nginx.conf
find: '/proc/1/map_files': Operation not permitted
find: '/proc/24/map_files': Operation not permitted
find: '/proc/25/map_files': Operation not permitted
find: '/proc/26/map_files': Operation not permitted
find: '/proc/27/map_files': Operation not permitted
find: '/proc/28/map_files': Operation not permitted
find: '/proc/52/map_files': Operation not permitted

于是找到路配置文件目录。

我们宿主机建立映射文件 体检建立好目录(否则run的时候你想要的文件夹会意外的变成了文件)

/mydata/nginx/html/ 映射文件

对应容器文件夹 /usr/share/nginx/html/

把配置文件拿过来:
docker cp nginx01:/etc/nginx/nginx.conf /mydata/nginx/conf

/mydata/nginx/conf/ nginx.conf配置文件夹

对应容器文件夹/etc/nginx/nginx.conf

删除测试容器:
docker rm nginx01

我的习惯:跟目录mydata作为所有docker容器的映射大本营,建立一个nginx_test作为我们本次案例的根文件夹使用

基于我们收集的信息,run我们的目标容器
docker run 
--name nginx 
-p 8123:80 
-v /mydata/nginx_test/conf/nginx.conf:/etc/nginx/nginx.conf  
-v /mydata/nginx_test/html:/usr/share/nginx/html  
-d  nginx

这一步骤的整合思路就是:

 docker run -p 80:80 --name nginx -d nginx:1.10
将容器内的配置文件拷贝到当前目录:docker container cp nginx:/etc/nginx .  别忘了后面的点
修改文件名称:mv nginx conf 把这个 conf 移动到/mydata/nginx 下
终止原容器:docker stop nginx
执行命令删除原容器:docker rm $ContainerId
创建新的 nginx;执行以下命令
docker run -p 8123:80 --name nginx \
-v /mydata/nginx_test/html:/usr/share/nginx/html \
-v /mydata/nginx_test/logs:/var/log/nginx \
-v /mydata/nginx_test/conf:/etc/nginx \
-d nginx:1.10
 给 nginx 的 html 下面放的所有资源可以直接访问;

注意:我们已经本机与容器对应好的文件,假设有删除或者重命名的需求。举个例子,我在 /mydata/nginx_test 目录下,放了一个project_vue文件夹,这个文件夹有好多项目文件,你想偷懒 rm -rf html删掉原来对应容器的html,mv project_vue ./html更新[project_vue]->[html]。这样你需要重启你的容器才可以完整映射对应,否则访问不到哦!docker restart nginx_test

成功效果如下:
在这里插入图片描述

3.导出容器

至此,你以完成了容器的配置和正常运行了,接下来我们去 /mydata/nignx_test/html下建立一个 index.html
在里面随便写点什么 作为你的记号,验证迁移后的正常

导出容器命令:

docker export <容器名/容器ID>  > xx.tar

执行:

 docker export nginx_test > nginx_test.tar

注意:这样得到的是一个nginx_test.tar是带有你辛苦成果的镜像

4.镜像倒入新机器

docker import nginx_test.tar nginx_test1/nginx_test2:1.10
[root@localhost mydata]# docker import nginx_test.tar nginx_test1/nginx_test2:1.10
sha256:00e56e75740930bcc25e875107845c8b75f11faa50a4b5b2099165ae48e0bbc3

看一眼的镜像成功:

docker images

[root@localhost mydata]# docker ps
CONTAINER ID   IMAGE                                                  COMMAND                  CREATED         STATUS             PORTS                                                                                                                                                 NAMES
45f6f259f6c8   6c3c2a225947                                           "docker-entrypoint.s…"   10 months ago   Up About an hour   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp   rabbitmq

5.运行这个倒入镜像前的操作

在run运行时候需要在命令最后追加上 容器运行时的 command
否则报错:
docker: Error response from daemon: No command specified.
这个命令在哪里?
我们去刚才那台机器上:

docker ps --no-trunc
[root@localhost mydata]# docker ps --no-trunc
CONTAINER ID                                                       IMAGE                                                                     COMMAND                                                                                                                                                                                             CREATED         STATUS             PORTS                                                                                                                                                 NAMES
45f6f259f6c88a631d4719d76cf207c40dc7bf9a7ac58154e0e89e680dc80f42   sha256:6c3c2a225947fba15a76015eb596fd1e768b0fbec7829008e57d54d35cee039c   "docker-entrypoint.sh rabbitmq-server"                                                                                                                                                              10 months ago   Up About an hour   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp   rabbitmq
64527788a0e4c817a00299090ebc8ffdbc8d93dda5410566fa1a1b8343aefc7d   registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g                      "/bin/sh -c '/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart /home/oracle/app/oracle/product/11.2.0/dbhome_2 && tail -f /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log'"   12 months ago   Up About an hour   0.0.0.0:1521->1521/tcp, :::1521->1521/tcp                                                                                                             oracle11
20665fe106fa94d8bd1c7145948a74d6cabf4393b7be9b77be6a77ac684bde10   nginx:1.10                                                                "nginx -g 'daemon off;'"                                                                                                                                                                            17 months ago   Up About an hour   0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp                                                                                                            nginx1.10
7445bc8c9e5e48f1ba914fe6091678fbda0835f00e4fb7a2ad1289aff14036e8   mysql:5.7                                                                 "docker-entrypoint.sh mysqld"                                                                                                                                                                       18 months ago   Up About an hour   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                                                                                  mysql
6a850788e223148369f9bd01c04a8a319ab6eb65143eef331b0d0de94e42a5c3   elasticsearch:7.4.2                                                       "/usr/local/bin/docker-entrypoint.sh eswrapper"                                                                                                                                                     18 months ago   Up About an hour   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp                                                                  elasticsearch
fdf9a188cc6eaa56c661e67b213e01a946b592018789a6238b1e42ccbd6a0b13   nginx                                                                     "/docker-entrypoint.sh nginx -g 'daemon off;'"                                                                                                                                                      18 months ago   Up About an hour   0.0.0.0:8001->80/tcp, :::8001->80/tcp                                                                                                                 nginx
aab1557dd008363f908aff5d0be30ff4ed28ef7534e54d9efac066be4f1dabd0   redis                                                                     "docker-entrypoint.sh redis-server /etc/redis/redis.conf"                                                                                                                                           20 months ago   Up About an hour   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                                                                                             redis

摘除我们想要的command:
nginx -g 'daemon off;'

6.机器映射提前准备好

把机器的 /mydata/nginx_test/ 拷贝到新机器/nydata/nginx_test

运行我们自己的容器命令,注意,自己导出容器时候的版本号要加上哦
否则会报这个错

Unable to find image 'nginx_test1:latest' locally

docker: Error response from daemon: pull access denied for nginx_test1, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.

这得益于docker么,你不写版本号,他就去镜像库找最新的版本,这个镜像是老板您自己div的,根本找不到的嘛

另外,第五部的步骤工作带过来,我们就得道了命令:

docker run -p 8123:80 --name nginx_test \
-v /mydata/nginx_test/html:/usr/share/nginx/html \
-v /mydata/nginx_test/logs:/var/log/nginx \
-v /mydata/nginx_test/conf:/etc/nginx \
-d nginx_test1/nginx_test2:1.10 \
nginx -g 'daemon off;'

然后查看我们的成功:
在这里插入图片描述

至此,大功告成,您学废了么

过程遇到任何其他问题,欢迎留言探讨

此致~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/454767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos7 查看服务器配置信息

1.linux查看版本当前操作系统发行信息 cat /etc/centos-release cat /etc/centos-release 2、查看内核版本uname -a或者cat /proc/version 3、查看CPU参数 1&#xff09;、查看 CPU 物理个数   grep physical id /proc/cpuinfo | sort -u | wc -l 2&#xff09;、查看 CPU …

如何降低小程序开发费用:从项目管理到技术选型

小程序的开发费用是许多企业和初创公司的瓶颈。在本文中&#xff0c;我们将介绍如何通过项目管理和技术选型来降低小程序开发费用&#xff0c;让您的企业更加高效。我们会详细阐述如何在项目管理中制定清晰的项目计划、与开发团队密切合作、采用敏捷开发方法。在技术选型方面&a…

jmeter压测结果分析

jmeter结果查看主要在结果树和聚合报告&#xff0c;实际在做压测过程中不做可视化操作&#xff0c;用命令行执行&#xff0c;再查看测试报告。 python在本地起服务 cmd打开命令框执行语句&#xff1a;python -m http.server 9090&#xff08;端口号&#xff0c;可自定义&…

magento webapi 接口返回 json对象

前言 现在主流的项目开发都是前后端分离&#xff0c;数据通过json对象格式进行传输。但是magento框架&#xff0c;和传统PHP框架相比&#xff0c;区别很大。虽然也支持以RestApi的形式传输数据&#xff0c;但是要么格式并非是传统jsonObject要么就是需要大量的get、set方法。本…

TypeScript学习笔记以及学习中遇到的问题

本笔记是来自翻阅xcatliu的typeScript入门教程文档、TypeScript官方文档的部分摘录、以及观看B站学习视频进行笔记记录与知识点补充、本人实际使用时遇到的问题与解决记录、碎片化接触到相关知识点合并整理而成 仅供本人洪的学习使用 hello TypeScript 一、TypeScript安装 Ty…

【QT】如何检测目录或文件中的内容被修改,可以使用QFileSystemWatcher类进行检测

目录 1. QFileSystemWatcher类的介绍2. QFileSystemWatcher的公共函数2.1 构造函数2.2 析构函数2.3 添加监控的路径2.4 返回正在监控的目录或文件2.5 从文件系统监视程序中删除指定的路径 3. QFileSystemWatcher的信号4. 测试代码4.1 操作步骤4.2 MainWindow.h4.3 MainWindow.c…

Spring之Bean的配置与实例

Spring之Bean的配置与实例 一、Bean的基础配置1. Bean基础配置【重点】配置说明代码演示运行结果 2. Bean别名配置配置说明代码演示打印结果 3. Bean作用范围配置【重点】配置说明代码演示打印结果 二、Bean的实例化1. Bean是如何创建的2. 实例化Bean的三种方式2.1 构造方法方式…

数据库系统-数据库查询实现算法之

文章目录 一、一趟扫描算法1.1 算法概述1.2 算法逻辑&物理实现1.2.1 逻辑层面1.2.2 物理层面1.2.2.1 P11.2.2.2 P21.2.2.3 P31.2.2.4 P4 1.3 迭代器构造查询实现算法1.4 关系操作的一趟扫描算法1.4 基于索引的查询实现算法 二、两趟扫描算法2.1 两趟算法基本思想2.2 多路归…

SaaS是什么?企业为什么要有SaaS系统?

什么是SaaS系统&#xff1f;企业为什么要有SaaS系统&#xff1f; 近几年&#xff0c;SaaS突然变成了一个热门词汇&#xff0c;无论是一些权威报告&#xff0c;还是知乎上知友们热烈的讨论&#xff0c;对于Saas系统可谓是各有各的见解和看法。 今天就综合几位答主的观点&#…

【1163. 按字典序排在最后的子串】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个字符串 s &#xff0c;找出它的所有子串并按字典序排列&#xff0c;返回排在最后的那个子串。 示例 1&#xff1a; 输入&#xff1a;s "abab" 输出&#xff1a;"bab"…

安波福又有大动作,行泊一体中国方案即将量产

“安波福的目标是&#xff0c;2030年营收达到400亿美元规模&#xff0c;这其中有一大部分收入来自于软件。”安波福亚太区总裁杨晓明在接受高工智能汽车提问时表示。 他介绍&#xff0c;2030年软件业务目标是达到60亿美元的规模&#xff0c;而在2022年&#xff0c;安波福实现了…

Nacos身份绕过漏洞复现(QVD-2023-6271)

Nacos身份绕过漏洞复现&#xff08;QVD-2023-6271&#xff09; 公司上级预警QVD-2023-6271&#xff0c;领导安排进行排查。 本着知己知彼的原则&#xff0c;我在本地将该漏洞复现出来。 漏洞原理&#xff1a;Nacos 在默认配置下未对 token.secret.key 进行修改&#xff0c;导…

【好题】好题分享

1001-四舍五入_牛客竞赛语法入门班数组模拟、枚举、贪心习题 (nowcoder.com) 题目描述 四舍五入是个好东西。比如你只考了45分&#xff0c;四舍五入后你是50分再四舍五入你就是满分啦&#xff01;qdgg刚考完拓扑。成绩十分不理想。但老师觉得他每天都很认真的听课很不容易。于是…

ubuntu 22 安装

下载镜像 下载 https://ubuntu.com/download/server 我这里下载了 22 服务器版 使用工具制作U盘镜像 安装完毕后 插入安装的电脑U盘插口 DEL 进入 选择U盘启动 进入后 我这里选择了第一个&#xff0c;没有选择mini版本 之后进入后按推荐一直安装 在选择静态地址的时候 subn…

你还在用Object.equals()方法吗?

当《阿里巴巴Java开发手册》发布后&#xff0c;我也是仔细进行了阅读&#xff0c;想从中找出一些“标准”&#xff0c;让自己的代码质量提高。手册中对 Object 的 equals 方法的使用进行了强制&#xff0c;而且推荐使用 JDK7 中工具类 Objects 的 equals 方法&#xff0c;至此之…

我在 Linux部署皕杰报表遇到的问题及解决方法

Linux是一种自由和开放源码的类 UNIX 操作系统&#xff0c;作为服务器的操作系统广泛应用。Linux由林纳斯托瓦兹在赫尔辛基大学上学时创立&#xff0c;主要受到 Minix 和 Unix 思想的启发。Linux英文解释为 Linux is not Unix。 皕杰报表支持在linux系统中部署&#xff0c;只需…

短视频矩阵优化系统开发步骤:

1. 矩阵号注册&#xff1a;用户可以通过该功能注册矩阵号&#xff0c;填写个人基本信息并上传身份证明材料进行实名认证。 2. 矩阵号登录&#xff1a;用户使用注册成功的账号密码登录矩阵号系统。 3. 矩阵号管理&#xff1a;用户可以通过该功能管理自己的矩阵号&#xff0c;包…

3 亿岗位将被 AI 取代?巴比特深度采访业界后,“失业潮”真相有些出人意料……...

图片来源&#xff1a;由无界 AI工具生成 人工智能技术的发展正迎来奇点&#xff0c;尤其是今年以来 ChatGPT 和 AIGC 的迅猛势头让无数人猝不及防&#xff0c;真真切切地对各行各业现有的工作岗位产生冲击。近日&#xff0c;蓝色光标全面停止创意设计、方案撰写、文案撰写、短期…

Oracle:ORA-00600[4137]问题分析

背景: 在为用户的新机房环境Oracle 19.18版本数据库检查时&#xff0c;发现smon进程后台日志不断出现事务恢复报错Serial Transaction recovery caught exception 30319&#xff0c;进一步检查发现存在事务恢复失败报ORA-00600[4137] 问题: smon进程后台日志不断出现事务恢复报…

【对比】文心一言对飚ChatGPT实操对比体验

前言 &#x1f34a;缘由 百度【文心一言】体验申请通过 本狗中午干饭时&#xff0c;天降短信&#xff0c;告知可以体验文心一言&#xff0c;苦等一个月的实操终于到来。心中这好奇的对比心理油然而生&#xff0c;到底是老美的【ChatGPT】厉害&#xff0c;还是咱度娘的【文心一…