07.Docker 实例
sidebar: [search, toc] #侧边显示的组件
一、 应用部署
1.1 MySQL部署
![](media/72c26686118438a180d0a54fa0173092.png)
(1)拉取mysql镜像
docker pull centos/mysql-57-centos7 |
---|
![](media/image-20221204115300779.png)
(2)创建容器
# 创建mysql5.7容器 # docker run -di –name=容器名字 -p 宿主机端口:容器端口 -e MYSQL_ROOT_PASSWORD=mysql密码 容器名称 docker run -di –name=mysql5.7 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7 |
---|
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户远程登陆密码
创建守护式容器 ,并且通过 docker ps 查看是否映射成功,
![](media/7081524686090fb12ca00f75935417c5.png)
(3)远程登录mysql
连接宿主机的IP ,指定端口为33306
使用 windows上面的小海豚进行连接
![](media/1d2cd72e79b96bc3b40b95bfcd02664f.png)
navicat 测试连接
![](media/c5b99ace28e6213a96d765cf1fcec863.png)
创建数据库和数据库里面的表
CREATE DATABASE vue; USE vue; CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT, age INT, username VARCHAR(20), password VARCHAR(50), email VARCHAR(50), sex VARCHAR(20) ) |
---|
![](media/5db576847f9381a5c6e8a4907218f01b.png)
1.2 Tomcat部署
(1)拉取镜像
docker pull tomcat:7-jre7 |
---|
(2)创建容器
创建容器 -p表示地址映射 -v 表示目录挂载
# 创建tomcat容器;并挂载了webapps目录 docker run -di –name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7 |
---|
创建完成容器之后,在通过 docker ps 查看容器是否正在运行
![](media/9336f80ae07d11caad7fa4d50ef8aaf8.png)
本地的war包 ,上传到docker容器里面
![](media/f1fc2784a6b35b1e8314d020ae279cc3.png)
ls 查看 dubbo的war 是否已经上传到docker容器,上传成功之后,在通过mv 命令 把dubbo移动到 /usr/local/webapps 目录下面,然后请求 http://192.168.211.144:9000/dubbo-admin-2.6.0/
![](media/e4f907f87236e202c1768e04de8671a4.png)
请求地址:http://192.168.211.144:9000/dubbo-admin-2.6.0/ 说明咱的tomcat已经部署成功
![](media/75574fd2836af4bf52a327ec489617f8.png)
1.3 Nginx部署
(1)拉取镜像
docker pull nginx |
---|
(2)创建Nginx容器
docker run -di –name=mynginx -p 80:80 nginx |
---|
安装完成之后,请求nginx页面
![](media/3e313bf0ed6fd619ca23bc53614c11a3.png)
1.4 Redis部署
(1)拉取镜像
docker pull redis |
---|
(2)创建容器
docker run -di –name=myredis -p 6379:6379 redis |
---|
创建 redis 容器
![](media/7e8def70830bc0f28112f306f36104b8.png)
(3)通过客户端工具连接测试。或者通过java代码用Jedis客户端进行测试。
![](media/9d1ef2da18f47f02375a7adec65d164e.png)
二、 迁移与备份
![](media/5da5afedab8a4ae8d3cc01177a4375e2.png)
其中涉及到的命令有:
- docker commit 将容器保存为镜像
- docker save 将镜像备份为tar文件
- docker load 根据tar文件恢复为镜像
2.1 容器保存为镜像
我们可以通过以下命令将容器保存为镜像
# 保存nginx容器为镜像 docker commit 容器名称 镜像名称 例如:docker commit mynginx mynginx_i |
---|
使用 docker ps -a 查看所有的容器
![](media/image-20221204115527653.png)
看到有一个mynginx 容器 , 将容器保存为一个镜像:
![](media/b2b12f6473cfcbce40a6ab92008f7b46.png)
查看镜像是否保存成功
![](media/image-20221204115559825.png)
使用刚刚保存的镜像 ,重新创建一个容器
![](media/3b2a48f200c0c756136730092e039a05.png)
创建完成之后 , 直接 通过 docker ps查看正在运行的容器,可以找到刚刚创建的容器mynginx2
![](media/image-20221204115620755.png)
2.2 镜像备份
我们可以通过以下命令将镜像保存为tar 文件
# 命令形式:docker save –o tar文件名 镜像名 # 保存镜像为文件 -o:表示output 输出的意思,后跟输出路径+输出保存的文件名 docker save -o mynginx.tar mynginx_i |
---|
通过 save 保存成文件之后,在通过 ls 命令进行查看当前目录是否有 tar文件
![](media/14d963ff6e3d11003a2191e59184cb18.png)
2.3 镜像恢复与迁移
首先我们先删除掉mynginx_img镜像 然后执行此命令进行恢复
# 命令形式:docker load -i tar文件名 docker load -i mynginx.tar |
---|
-i 表示input输入的文件
执行后再次查看镜像,可以看到镜像已经恢复
我们需要直接恢复刚刚的 tar 文件 ,就需要先删除 mynginx_i 镜像,才能恢复, 直接删除 mynginx_i 镜像 ,发现会报错,因为当前镜像的容器正在运行,需要先停止容器,删除容器 , 在删除镜像
![](media/035eda0ba44581d69945404638f9c109.png)
删除完成之后 , 在查看镜像是否还存在 ,发现mynginx_i 镜像已经被删除
![](media/f5b818bac36952e591dd89ad811836c2.png)
恢复镜像
![](media/92d88801ad888645a5ee648d9a1d567c.png)
** linux科学实现科学上网**
安装 Clash
- 下载当前操作系统与 CPU 架构对应的包文件,我这儿是 X86_64 平台下 CentOS7 所以对应的使用 clash-linux-amd64-v1.6.5.gz 包即可
wget -O clash.gz https://github.com/Dreamacro/clash/releases/download/v1.6.5/clash-linux-amd64-v1.6.5.gz |
- 下载好后解压安装包中 clash 到
/usr/local/bin/
目录下,并删除压缩包文件
gzip -dc clash.gz > /usr/local/bin/clash |
- 创建配置文件目录,并下载 MMDB 文件
mkdir /etc/clash |
- 创建
systemd
脚本,脚本文件路径为/etc/systemd/system/clash.service
,内容如下:
[Unit] |
- 重载 systemctl daemon
systemctl daemon-reload
配置代理上网
- 导入已有的科学上网
订阅链接
wget -O /etc/clash/config.yaml [你的订阅链接] |
- 设置系统代理,添加配置文件
/etc/profile.d/proxy.sh
并在其中写入如下内容:
export http_proxy="127.0.0.1:7890" |
- 重载
/etc/profile
配置
source /etc/profile |
启动
clash
服务,并设置为开机自动启# curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>测试 goolge.com 访问
# curl google.com |