<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>docker &#8211; from0to1</title>
	<atom:link href="https://www.from0to1.top/tag/docker/feed" rel="self" type="application/rss+xml" />
	<link>https://www.from0to1.top</link>
	<description>一个研究技术、分享经验的博客</description>
	<lastBuildDate>Sun, 01 Oct 2023 17:10:06 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
	<item>
		<title>docker备份服务器数据</title>
		<link>https://www.from0to1.top/126.html</link>
					<comments>https://www.from0to1.top/126.html#respond</comments>
		
		<dc:creator><![CDATA[captain]]></dc:creator>
		<pubDate>Fri, 04 Aug 2023 05:12:55 +0000</pubDate>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[docker]]></category>
		<guid isPermaLink="false">https://from0to1.top/?p=126</guid>

					<description><![CDATA[什么是docker？ 一款产品从开发到上线，从操作系统，到运行环境，再到应用配置。作为开发+运维之间的协作我们需要 关心很多东西，这也是很多互联网公司都不得不面对的问题，特别是各种版本的迭代之后，不同版本环 境的兼容，对运维人员是极大的考验！ 环境配置如此麻烦，换一台机器，就要重来一次，费力费时。很多人想到，能不能从根本上解决问题， 软件可以带环境安装？也就是说，安装的时候，把原始环境一模一样地复 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2 class="h-title">什么是docker？</h2>
<p>一款产品从开发到上线，从操作系统，到运行环境，再到应用配置。作为开发+运维之间的协作我们需要<br />
关心很多东西，这也是很多互联网公司都不得不面对的问题，特别是各种版本的迭代之后，不同版本环<br />
境的兼容，对运维人员是极大的考验！<br />
环境配置如此麻烦，换一台机器，就要重来一次，费力费时。很多人想到，能不能从根本上解决问题，<br />
软件可以带环境安装？也就是说，安装的时候，把原始环境一模一样地复制过来。解决开发人员说的“ 在<br />
我的机器上可正常工作”的问题。<br />
Docker镜像的设计，使得Docker得以打破过去「程序即应用」的观念。通过Docker镜像 ( images ) 将<br />
应用程序所需要的系统环境，由下而上打包，达到应用程序跨平台间的无缝接轨运作。<br />
<strong>而我们使用docker是为了将服务器包括环境带着一起走，可以轻松在另一台同架构设备上完成部署，以及遇到故障可以马上从以前的镜像恢复备份</strong></p>
<h2 class="h-title"><span style="color: #ff0000;">如果你不会mysql容器可携带数据，可以购买人工服务，操作人员将会于24小时内帮你搭建完成，价格为20（这时间和价格比起来感觉是当黑奴了&#8230;），请<a class="links_btn" href="#get" target="_blank" rel="noopener">点击前往</a>或滚动到最下方购买</span></h2>
<h2 class="h-title">1、安装docker</h2>
<p>首先我们要在服务器中安装docker环境<a class="links_btn" href="https://www.docker.com/" target="_blank" rel="noopener">docker官网</a><br />
点击Linux（这篇博客将演示在ubuntu上安装docker）<br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-05-28-171213.png" alt="点击" /><br />
<strong>左侧区域下滑找到Docker Engine</strong><br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-05-28-171516.png" alt="Engine" /><br />
<strong>点击install选中你的系统版本（这里我选择Ubuntu）</strong><br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-05-28-171741.png" alt="选择" /><br />
在这里按照官方文档进行安装<br />
看不懂可以拿去翻译，如果是edge浏览器，可以任意地方右键选择翻译为中文<br />
<strong>这里我就不搬代码了，注意命令要一句一句输</strong><br />
确定安装成功后，我们再给docker换个源，不然下载镜像太慢了，选择你想要的国内源，换了没用就再换别的源，<strong>推荐Docker中国区官方镜像的</strong><br />
Docker中国区官方镜像:<br />
https://registry.docker-cn.com</p>
<p>网易:<br />
http://hub-mirror.c.163.com</p>
<p>ustc:<br />
https://docker.mirrors.ustc.edu.cn</p>
<p>中国科技大学:<br />
https://docker.mirrors.ustc.edu.cn</p>
<p>阿里云:<br />
https://cr.console.aliyun.com/</p>
<p>腾讯云：<br />
https://mirror.ccs.tencentyun.com</p>
<p>输入命令（将https://registry.docker-cn.com换成的想换的源，默认Docker中国区官方镜像<strong><span style="color: #ff0000;">(复制下来可能是中文符号要改成英文)</span></strong></p>
<pre class="prettyprint linenums">sudo mkdir -p /etc/docker</pre>
<p><code>sudo tee /etc/docker/daemon.json &lt;&lt;-'EOF'<br />
{<br />
"registry-mirrors": ["https://registry.docker-cn.com"]<br />
}<br />
EOF</code></p>
<pre class="prettyprint linenums">sudo systemctl daemon-reload
sudo systemctl restart docker</pre>
<p>请手动调整此代码为以下格式<br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/06/2023-06-13-134422.png" alt="图" /><br />
执行完成正常返回了命令行就成功了<br />
本次我们将在一个最基础的ubuntu镜像上部署我们的服务器环境<br />
首先下载一个ubuntu镜像，输入命令</p>
<pre class="prettyprint linenums">docker pull ubuntu</pre>
<p>下载完后查看一下</p>
<pre class="prettyprint linenums">docker images</pre>
<p>可以看到我们下载的ubuntu镜像<br />
接下来我们就要基于这个ubuntu镜像跑一个容器了，不过在此之前，我们先要自定义一个网络<strong>（这点非常重要，影响到容器之间的通信连接）</strong></p>
<pre class="prettyprint linenums">docker network create --driver bridge --subnet 172.100.0.0/16 --gateway 172.100.0.1 mynet</pre>
<p>这代码的意思是创建一个桥接网络，网段172.100.0.0这个/16代表网段的后两位都可以用，总共可以有255×255台设备在这个网络里，如果是/24就只有最后一位可以用，最多255台机子可以在网络里，172.0.0.1是他的网关，名称为mynet<br />
接下来我们就要启动一个ubuntu容器来装你的服务器环境和网站了（从现在开始就不解释命令了，文章底部可以下载一篇非常详细的图文笔记，看完你就会了）</p>
<pre class="prettyprint linenums">docker run -it -p 80:80 -p 443:443 --net mynet --restart=always ubuntu /bin/bash</pre>
<p>执行完成后，可以看到控制台ID变了，现在已经进入到容器内控制了（这台服务器上有服务正在运行，所以删了点参数，你们输完整命令就行）<br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/07/屏幕截图-2023-05-29-135920.png" alt="图" /><br />
在这里就可以安装我们的服务器环境了，教你怎么配置服务器环境在我的另一篇博客<a class="links_btn" href="https://from0to1.top/17.html" target="_blank" rel="noopener">配置服务器环境</a><br />
<strong>去看那篇博客把环境配置好才能进行下一步</strong></p>
<h2 class="h-title">OK现在就当你已经配置完环境了</h2>
<p>接下来我们要进行MySQL数据库的镜像持久化数据，如果不进行任何设置的话，你会发现将一个创建了自己数据库的MySQL容器提交成镜像，再从这个镜像变为容器，但是你创建过的数据库没有了，这就非常要命了<br />
<code>先下载mysql镜像,然后从镜像启动一个容器，一定要设置容器名（--name 容器名），并且指定你的自定义网络（--net 网络），这将影响你的服务器容器跟数据库容器的连接，还有数据库root用户密码，<strong>要强密码</strong>（-e MYSQL_ROOT_PASSWORD=密码）</code></p>
<h3 class="h-title">代码全英文！！！</h3>
<pre class="prettyprint linenums">docker pull mysql
docker run -d -p 3306:3306 --name 容器名 --net mynet --restart=always -e MYSQL_ROOT_PASSWORD=你的密码  mysql
</pre>
<p>执行完后<strong>连续输入3次</strong><code>docker ps</code>看一下状态是不是up<br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/07/屏幕截图-2023-05-29-182134.png" alt="图" /><br />
确定容器状态正常后输命令,新开个终端会话，与容器交互，使用bash脚本控制,<strong>上方图片里，蓝色标记的就是容器id</strong></p>
<pre class="prettyprint linenums">docker exec -it 容器id /bin/bash</pre>
<p>进入容器后需要在修改mysql容器中的<strong><span style="color: #ff0000;">根目录</span></strong>下新建目录</p>
<pre class="prettyprint linenums">mkdir /workdir</pre>
<p>再将 /var/lib/mysql 复制到新建目录中</p>
<pre class="prettyprint linenums">cp -r /var/lib/mysql /workdir</pre>
<p>修改 /etc/my.cnf 文件，将datadir改成你新建的目录</p>
<pre class="prettyprint linenums">cat /etc/my.cnf
sed -i 27d /etc/my.cnf
sed -i &#039;26a datadir=/workdir/mysql&#039; /etc/my.cnf</pre>
<p>完成后进入mysql命令行，创建一个数据库测试是否成功</p>
<pre class="prettyprint linenums">mysql -u root -p 你的密码
CREATE DATABASE wordpress;</pre>
<p><strong><span style="color: #ff0000;">接下来退出容器重启一次</span></strong>，再将容器提交成一个新镜像(提交完就可以删了)</p>
<pre class="prettyprint linenums">docker restart 这个mysql容器的id
docker commit 这个mysql容器的id mysql_withdata:1.00</pre>
<p>把原来的容器删掉</p>
<pre class="prettyprint linenums">docker rm -f 这个mysql容器的id</pre>
<p>运行你刚刚制作的镜像（不用初始化密码）</p>
<pre class="prettyprint linenums">docker run -d -p 3306:3306 --name blog_mysql --net mynet --restart=always  mysql_withdata:1.00</pre>
<p>再次进入容器内的mysql命令行查看是否成功(有你创建的数据库就成功了)</p>
<pre class="prettyprint linenums" id="get">show databases;</pre>
<p>成功后备份就很简单了，将你的博客和数据库容器用commit提交成镜像上传到docker镜像仓库，要用的时候拿下来直接运行就好了<strong><span style="color: #ff0000;">(别忘了要创建同样的环境！自定义网络、启动时指定自定义网络、指定容器名称等)</span></strong></p>
<pre class="prettyprint linenums">docker commit -m=23/5/25 -a=captain 5f7d6b5e806c captain/server_backup:blog_mysql-23-5-25 (提交成新镜像)
docker push captain/server_backup:blog_mysql-23-5-25(下载备份)</pre>
<h2 class="h-title"><span style="color: #ff0000;">如果你不会mysql容器可携带数据，可以购买人工服务，操作人员将会于24小时内帮你搭建完成，价格为20（这时间和价格比起来感觉是当黑奴了&#8230;），请<a class="links_btn" href="#get" target="_blank" rel="noopener">点击前往</a>或滚动到最下方购买</span></h2>
<div class="erphpdown erphpdown-see erphpdown-see-pay erphpdown-content-vip" id="erphpdown" style="display:block;">此内容查看价格为<span class="erphpdown-price">20</span>加隆，请先<a href="https://www.from0to1.top/login" target="_blank" class="erphp-login-must">登录</a><div class="erphpdown-tips">在本站充值消费一律不支持退款，请理性选择！</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.from0to1.top/126.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
