更新于 

07.Docker 实例

sidebar: [search, toc] #侧边显示的组件

一、 应用部署

1.1 MySQL部署

(1)拉取mysql镜像

docker pull centos/mysql-57-centos7

(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 查看是否映射成功,

(3)远程登录mysql

连接宿主机的IP ,指定端口为33306

使用 windows上面的小海豚进行连接

navicat 测试连接

创建数据库和数据库里面的表

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) )

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 查看容器是否正在运行

本地的war包 ,上传到docker容器里面

ls 查看 dubbo的war 是否已经上传到docker容器,上传成功之后,在通过mv 命令 把dubbo移动到 /usr/local/webapps 目录下面,然后请求 http://192.168.211.144:9000/dubbo-admin-2.6.0/

请求地址:http://192.168.211.144:9000/dubbo-admin-2.6.0/ 说明咱的tomcat已经部署成功

1.3 Nginx部署

(1)拉取镜像

docker pull nginx

(2)创建Nginx容器

docker run -di –name=mynginx -p 80:80 nginx

安装完成之后,请求nginx页面

1.4 Redis部署

(1)拉取镜像

docker pull redis

(2)创建容器

docker run -di –name=myredis -p 6379:6379 redis

创建 redis 容器

(3)通过客户端工具连接测试。或者通过java代码用Jedis客户端进行测试。

二、 迁移与备份

其中涉及到的命令有:

  • docker commit 将容器保存为镜像
  • docker save 将镜像备份为tar文件
  • docker load 根据tar文件恢复为镜像

2.1 容器保存为镜像

我们可以通过以下命令将容器保存为镜像

# 保存nginx容器为镜像 docker commit 容器名称 镜像名称 例如:docker commit mynginx mynginx_i

使用 docker ps -a 查看所有的容器

看到有一个mynginx 容器 , 将容器保存为一个镜像:

查看镜像是否保存成功

使用刚刚保存的镜像 ,重新创建一个容器

创建完成之后 , 直接 通过 docker ps查看正在运行的容器,可以找到刚刚创建的容器mynginx2

2.2 镜像备份

我们可以通过以下命令将镜像保存为tar 文件

# 命令形式:docker save –o tar文件名 镜像名 # 保存镜像为文件 -o:表示output 输出的意思,后跟输出路径+输出保存的文件名 docker save -o mynginx.tar mynginx_i

通过 save 保存成文件之后,在通过 ls 命令进行查看当前目录是否有 tar文件

2.3 镜像恢复与迁移

首先我们先删除掉mynginx_img镜像 然后执行此命令进行恢复

# 命令形式:docker load -i tar文件名 docker load -i mynginx.tar

-i 表示input输入的文件

执行后再次查看镜像,可以看到镜像已经恢复

我们需要直接恢复刚刚的 tar 文件 ,就需要先删除 mynginx_i 镜像,才能恢复, 直接删除 mynginx_i 镜像 ,发现会报错,因为当前镜像的容器正在运行,需要先停止容器,删除容器 , 在删除镜像

删除完成之后 , 在查看镜像是否还存在 ,发现mynginx_i 镜像已经被删除

恢复镜像

** linux科学实现科学上网**

安装 Clash

  1. 下载当前操作系统与 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
  1. 下载好后解压安装包中 clash 到 /usr/local/bin/ 目录下,并删除压缩包文件
gzip -dc clash.gz > /usr/local/bin/clash
chmod +x /usr/local/bin/clash
rm -f clash.gz
  1. 创建配置文件目录,并下载 MMDB 文件
mkdir /etc/clash
wget -O /etc/clash/Country.mmdb https://github.com/Dreamacro/maxmind-geoip/releases/download/20220812/Country.mmdb
  1. 创建 systemd 脚本,脚本文件路径为 /etc/systemd/system/clash.service,内容如下:
[Unit]
Description=clash daemon
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/clash -d /etc/clash/
Restart=on-failure
[Install]
WantedBy=multi-user.target
  1. 重载 systemctl daemon

systemctl daemon-reload

配置代理上网

  1. 导入已有的科学上网订阅链接
wget -O /etc/clash/config.yaml [你的订阅链接]
  1. 设置系统代理,添加配置文件 /etc/profile.d/proxy.sh 并在其中写入如下内容:
export http_proxy="127.0.0.1:7890"
export https_proxy="127.0.0.1:7890"
export no_proxy="localhost, 127.0.0.1"
  1. 重载 /etc/profile 配置
source /etc/profile
  1. 启动 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>
  2. 测试 goolge.com 访问

# 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>

Travellings 穿梭虫洞--随机访问十年之约友链博客