什么是docker?

一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要
关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环
境的兼容,对运维人员是极大的考验!
环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,
软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。解决开发人员说的“ 在
我的机器上可正常工作”的问题。
Docker镜像的设计,使得Docker得以打破过去「程序即应用」的观念。通过Docker镜像 ( images ) 将
应用程序所需要的系统环境,由下而上打包,达到应用程序跨平台间的无缝接轨运作。
而我们使用docker是为了将服务器包括环境带着一起走,可以轻松在另一台同架构设备上完成部署,以及遇到故障可以马上从以前的镜像恢复备份

如果你不会mysql容器可携带数据,可以购买人工服务,操作人员将会于24小时内帮你搭建完成,价格为20(这时间和价格比起来感觉是当黑奴了…),请点击前往或滚动到最下方购买

1、安装docker

首先我们要在服务器中安装docker环境docker官网
点击Linux(这篇博客将演示在ubuntu上安装docker)
点击
左侧区域下滑找到Docker Engine
Engine
点击install选中你的系统版本(这里我选择Ubuntu)
选择
在这里按照官方文档进行安装
看不懂可以拿去翻译,如果是edge浏览器,可以任意地方右键选择翻译为中文
这里我就不搬代码了,注意命令要一句一句输
确定安装成功后,我们再给docker换个源,不然下载镜像太慢了,选择你想要的国内源,换了没用就再换别的源,推荐Docker中国区官方镜像的
Docker中国区官方镜像:
https://registry.docker-cn.com

网易:
http://hub-mirror.c.163.com

ustc:
https://docker.mirrors.ustc.edu.cn

中国科技大学:
https://docker.mirrors.ustc.edu.cn

阿里云:
https://cr.console.aliyun.com/

腾讯云:
https://mirror.ccs.tencentyun.com

输入命令(将https://registry.docker-cn.com换成的想换的源,默认Docker中国区官方镜像(复制下来可能是中文符号要改成英文)

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

请手动调整此代码为以下格式
图
执行完成正常返回了命令行就成功了
本次我们将在一个最基础的ubuntu镜像上部署我们的服务器环境
首先下载一个ubuntu镜像,输入命令

docker pull ubuntu

下载完后查看一下

docker images

可以看到我们下载的ubuntu镜像
接下来我们就要基于这个ubuntu镜像跑一个容器了,不过在此之前,我们先要自定义一个网络(这点非常重要,影响到容器之间的通信连接)

docker network create --driver bridge --subnet 172.100.0.0/16 --gateway 172.100.0.1 mynet

这代码的意思是创建一个桥接网络,网段172.100.0.0这个/16代表网段的后两位都可以用,总共可以有255×255台设备在这个网络里,如果是/24就只有最后一位可以用,最多255台机子可以在网络里,172.0.0.1是他的网关,名称为mynet
接下来我们就要启动一个ubuntu容器来装你的服务器环境和网站了(从现在开始就不解释命令了,文章底部可以下载一篇非常详细的图文笔记,看完你就会了)

docker run -it -p 80:80 -p 443:443 --net mynet --restart=always ubuntu /bin/bash

执行完成后,可以看到控制台ID变了,现在已经进入到容器内控制了(这台服务器上有服务正在运行,所以删了点参数,你们输完整命令就行)
图
在这里就可以安装我们的服务器环境了,教你怎么配置服务器环境在我的另一篇博客配置服务器环境
去看那篇博客把环境配置好才能进行下一步

OK现在就当你已经配置完环境了

接下来我们要进行MySQL数据库的镜像持久化数据,如果不进行任何设置的话,你会发现将一个创建了自己数据库的MySQL容器提交成镜像,再从这个镜像变为容器,但是你创建过的数据库没有了,这就非常要命了
先下载mysql镜像,然后从镜像启动一个容器,一定要设置容器名(--name 容器名),并且指定你的自定义网络(--net 网络),这将影响你的服务器容器跟数据库容器的连接,还有数据库root用户密码,要强密码(-e MYSQL_ROOT_PASSWORD=密码)

代码全英文!!!

docker pull mysql
docker run -d -p 3306:3306 --name 容器名 --net mynet --restart=always -e MYSQL_ROOT_PASSWORD=你的密码  mysql

执行完后连续输入3次docker ps看一下状态是不是up
图
确定容器状态正常后输命令,新开个终端会话,与容器交互,使用bash脚本控制,上方图片里,蓝色标记的就是容器id

docker exec -it 容器id /bin/bash

进入容器后需要在修改mysql容器中的根目录下新建目录

mkdir /workdir

再将 /var/lib/mysql 复制到新建目录中

cp -r /var/lib/mysql /workdir

修改 /etc/my.cnf 文件,将datadir改成你新建的目录

cat /etc/my.cnf
sed -i 27d /etc/my.cnf
sed -i '26a datadir=/workdir/mysql' /etc/my.cnf

完成后进入mysql命令行,创建一个数据库测试是否成功

mysql -u root -p 你的密码
CREATE DATABASE wordpress;

接下来退出容器重启一次,再将容器提交成一个新镜像(提交完就可以删了)

docker restart 这个mysql容器的id
docker commit 这个mysql容器的id mysql_withdata:1.00

把原来的容器删掉

docker rm -f 这个mysql容器的id

运行你刚刚制作的镜像(不用初始化密码)

docker run -d -p 3306:3306 --name blog_mysql --net mynet --restart=always  mysql_withdata:1.00

再次进入容器内的mysql命令行查看是否成功(有你创建的数据库就成功了)

show databases;

成功后备份就很简单了,将你的博客和数据库容器用commit提交成镜像上传到docker镜像仓库,要用的时候拿下来直接运行就好了(别忘了要创建同样的环境!自定义网络、启动时指定自定义网络、指定容器名称等)

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(下载备份)

如果你不会mysql容器可携带数据,可以购买人工服务,操作人员将会于24小时内帮你搭建完成,价格为20(这时间和价格比起来感觉是当黑奴了…),请点击前往或滚动到最下方购买

此内容查看价格为20加隆,请先
在本站充值消费一律不支持退款,请理性选择!