在本文中,我们将给您介绍关于利用SSH桥接访问服务器的Docker运行的MySql服务的详细内容,并且为您解答ssh连接docker容器的相关问题,此外,我们还将为您提供关于docker创建mysql
在本文中,我们将给您介绍关于利用 SSH 桥接访问服务器的 Docker 运行的 MySql 服务的详细内容,并且为您解答ssh连接docker容器的相关问题,此外,我们还将为您提供关于docker 创建 mysql 服务、Docker 安装 MySQL 服务、Docker 容器部署 Mysql 数据库服务器、docker 微服务部署之:四、安装 docker、docker 中安装 mysql 和 jdk1.8、手动构建镜像、部署项目的知识。
本文目录一览:- 利用 SSH 桥接访问服务器的 Docker 运行的 MySql 服务(ssh连接docker容器)
- docker 创建 mysql 服务
- Docker 安装 MySQL 服务
- Docker 容器部署 Mysql 数据库服务器
- docker 微服务部署之:四、安装 docker、docker 中安装 mysql 和 jdk1.8、手动构建镜像、部署项目
利用 SSH 桥接访问服务器的 Docker 运行的 MySql 服务(ssh连接docker容器)
前情提要
docker 的运用越来广泛,许多 IT 公司都已经将自己的服务跑在 Docker 上面。在安全性方面又做了一层防护。比如:跑在 Docker 上的 Mysql 不做外网端口映射,只能在 linux 服务器上或进入 docker 访问 mysql,这样对开发者来说是有些不方便的。 那么,其实这种情况,我们也是有办法可以做到在本地连接 docker 里面的 MySql 数据库的。
环境:
- Linux 服务器:centos 7.7
- 服务器 IP:192.168.1.5
- 容器:docker
- 实例 IP:172.17.0.2
- 数据库:mysqld 5.7.28
- 数据库客户端:navicat ,sqlyog
docker 运行
通常我们运行 docker 实例的命令如:
[root@qinshengfei ~]# docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=attack docker.io/mysql
通常这样运行起来的服务有几个问题
- 1、没有配置固定 ip,这样一台服务器上跑多个 docker 服务,在以后重启的时候,ip 地址会变
- 2、ip 没有映射,对生产环境来说这不是问题,测试环境和开发环境,这样就很不方便
- 所以使用 docker 之前先做规划,是好习惯
客户端配置
sqlyog 配置
- 1、先配置 SSH 访问 Linux 服务器
- 2、再配置访问 MySql 的账号密码
navicat 配置
- 1、先配置 SSH 访问 Linux 服务器
- 2、再配置访问 MySql 的账号密码
总结
可能出现的问题
- 1、SSH 访问的账号密码正确与否
- 2、访问 MySql 的账号密码正确与否
- 3、运行 Mysql 实例的 docker 实例 ip,是不是正确
docker 创建 mysql 服务
如下过程,以官方 mysql 5.7 镜像为基础,构建了一个新的 mysql 镜像,仅替换了 mysql 配置文件。
1. 下载 docker mysql 5.7 官方镜像,命令如下:
docker pull mysql:5.7
下载完成后,查看镜像是否已经存在,如下图:
2. 任意目录下,放置好自己的 mysql 配置文件,名称为 config-file.cnf,并新建文件 Dockerfile,如下图:
3. 在 Dockerfile 文件中,写入如下内容:
FROM mysql:5.7
MAINTAINER shangyingbin
COPY config-file.cnf /etc/mysql/conf.d/
4. 构建镜像,命令如下:
docker build -t omc/mysql:1.0 .
结果如下图:
5. 查看镜像,刚刚创建的镜像已经出现在列表中了,如下图:
6. 以此镜像,启动一个容器,命令如下:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=12345 -p 3306:3306 -v /home/docker-mysql-data:/var/lib/mysql/ -d omc/mysql:1.0
解释:
--name mysql,为容器命名,方便识别,也方便后续的操作,比如启动、停止容器,便可以用名字代表容器,如 docker stop mysql
-e MYSQL_ROOT_PASSWORD=12345,指定 mysql 中 root 用户的密码,为 12345
-p 3306:3306,指定端口映射,将容器内的 3306 端口,映射到本机的 3306 端口,这样外部即可通过本机的 IP 和 3306 端口即可访问数据库了
-v /home/docker-mysql-data:/var/lib/mysql/,将容器内 mysql 的数据目录 /var/lib/mysql,映射到本机的 /home/docker-mysql-data 目录下
7. 查看镜像是否已经启动,命令如下:
8. 可通过 mysql 工具连接此服务,验证服务启动是否正常。
9. 停止服务命令如下:
docker stop mysql
10. 重新启动服务,命令如下:
docker start mysql
11. 进入容器,命令如下:
docker exec -it mysql /bin/bash
12. 在容器内,命令行方式登录 mysql,命令如下:
mysql -h 127.0.0.1 -uroot -p
提示输入密码,密码即为创建容器时指定的 12345
13. 要退出容器,先退出 mysql,然后直接执行 exit 命令即可,退出后,容器依然正常运行。
Docker 安装 MySQL 服务












Docker 容器部署 Mysql 数据库服务器
本节会用到的 Docker 命令如下:
docker images 查看mysql镜像id
docker run -d -p xxxxxxxxxxxxxxx/zhufc/mysql:v2 通过镜像生成 启动容器 4406映射端口 3306是mysql默认端口
docker ps -a 查看生成的容器
docker ps
docker restart 容器id
docker stop 容器id 停止容器
docker rm 容器id 删除容器id
docker exec -it {mysql容器id} bash 进入指定容器
ps -ef | grep mysql 查看mysql服务 容器启动 mysql服务启动 绑定的
1、拉取 Mysql 镜像文件。
2、使用 docker images 查看下载的镜像文件
3、通过镜像生成容器
查看生成的容器:
4、停止容器,创建容器,查看容器
5、正在运行的容器无法删除,先停止掉,在删除容器
6、进入指定的容器 docker exec -it 要进入的容器 ID
7、ps -ef | grep mysql 查看 mysql 服务,如果容器启动,则 mysql 服务启动 ,容器绑定 mysql 绑定
8、进入 Mysql 数据库修改配置文件
或者生效 profile 文件。
vim /etc/profile/
source /etc/profile 设置服务生效
mysql -u root -p000000 进入数据库
数据库的一些操作:
show databases; 查看库名
use mysql; 初始化数据库
drop api; 删除api数据库
create database api;设置api数据库
启动小幺鸡项目数据库:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| aiopms |
| api |
| mysql |
| performance_schema |
| renren_security |
| test |
+--------------------+
7 rows in set (0.00 sec)
mysql> show tables;
+------------------+
| Tables_in_api |
+------------------+
| attach |
| doc |
| doc_history |
| email_token |
| find_password |
| interface |
| interface_folder |
| module |
| project |
| project_global |
| project_log |
| project_user |
| share |
| sys |
| team |
| team_user |
| user |
| user_third |
+------------------+
18 rows in set (0.00 sec)
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| aiopms |
| api |
| mysql |
| performance_schema |
| renren_security |
| test |
+--------------------+
7 rows in set (0.02 sec)
mysql> use api;
Database changed
mysql> show tables;
+------------------+
| Tables_in_api |
+------------------+
| attach |
| doc |
| doc_history |
| email_token |
| find_password |
| interface |
| interface_folder |
| module |
| project |
| project_global |
| project_log |
| project_user |
| share |
| sys |
| team |
| team_user |
| user |
| user_third |
+------------------+
18 rows in set (0.00 sec)
mysql> source /usr/xiaoyaoji.sql
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.14 sec)
Query OK, 0 rows affected (0.04 sec)
Query OK, 0 rows affected (0.21 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.11 sec)
Query OK, 0 rows affected (0.04 sec)
Query OK, 0 rows affected (0.10 sec)
Query OK, 0 rows affected (0.04 sec)
Query OK, 0 rows affected (0.12 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.15 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.18 sec)
Query OK, 0 rows affected (0.04 sec)
Query OK, 0 rows affected (0.18 sec)
Query OK, 0 rows affected (0.05 sec)
Query OK, 0 rows affected (0.12 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.11 sec)
Query OK, 0 rows affected (0.05 sec)
Query OK, 0 rows affected (0.12 sec)
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected (0.17 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.11 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.11 sec)
Query OK, 0 rows affected (0.04 sec)
Query OK, 0 rows affected (0.11 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected (0.14 sec)
Query OK, 0 rows affected (0.10 sec)
Query OK, 0 rows affected (0.23 sec)
Query OK, 0 rows affected (0.04 sec)
Query OK, 0 rows affected (0.19 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql>
使用 mysql 数据库,授权执行:
grant all on *.* to ''root''@''192.168.3.111'' identified by ''000000''; --192.168.1.6为自己虚拟机ip
grant all on *.* to ''root''@''172.17.0.2'' identified by ''000000''; -- ip 随机分配 默认不需要管
grant all privileges on *.* to root@''%'' identified by "000000"; -- root
FLUSH PRIVILEGES; # 刷新权限
退出到 ubuntu 界面:
下载 Navtice 数据库,输入 ip、账号、密码,测试连接。
在 mysql 数据库下面有个 user 表,删除该表下面的所有密码为空的用户。
到此,mysql 数据库的服务配置完成。
docker 微服务部署之:四、安装 docker、docker 中安装 mysql 和 jdk1.8、手动构建镜像、部署项目
docker 微服务部署之:三,搭建 Zuul 微服务项目
1.Centos7 安装 Docker
详见:Centos7 安装 Docker
2.Docker 中安装 jdk1.8
详见:使用 Docker 构建 jdk1.8
3.Docker 中安装 mysql5.7
详见:docker 安装 mysql
在防火墙中开启 3306 端口,不然启动 article 项目连接 docker 中的 mysql 时,会报如下错误:
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
查看端口是否开启,开启端口以及移除指定端口命令如下:
#查看是否开启指定端口
$ sudo firewall-cmd --query-port=3306/tcp
no
#添加指定需要开放的端口
$ sudo firewall-cmd --add-port=3306/tcp --permanent
success
#移除指定端口
#firewall-cmd --permanent --remove-port=3306/tcp
#重新载入添加/移除的端口
$ sudo firewall-cmd --reload
#也可再查下是否开启指定端口
$ sudo firewall-cmd --query-port=3306/tcp
yes
4. 部署 demo_eureka 项目
我的虚拟机的 ip 地址为:192.168.31.181
4.1 把 demo_eureka 项目打成 jar 包
4.1.1 打包前,修改项目配置
在打包之前,需要在 demo_eureka 项目中修改如下几个地方:
修改 pom.xml,新增如下内容:
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
修改 application.yml 中如下内容
#defaultZone: http://127.0.0.1:${server.port}/eureka
#192.168.31.181为虚拟机的IP地址
defaultZone: http://192.168.31.181:${server.port}/eureka
4.1.2 将 demo_eureka 项目打成 app.jar
将 demo_eureka 项目以及后面的 demo_article 项目、demo_zuul 项目都打成 app.jar,是因为方便利用 Dockerfile 部署时方便。
点击 idea 窗体左小角的 Terminal,然后将项目 demo_eureka 拖动到 Terminal 窗体里,接着输入 mvn clean package,如图:
刷新 target 目录,即可在该目录下看到 app.jar。
4.1.3 防火墙开启 7000 端口 (7000 端口为 demo_eureka 项目中自定义的 server.port 端口号)
如果没有开启 7000 端口,article 服务和 zuul 服务,会注册不到 eureka 上来。
#查看是否开启指定端口
$ sudo firewall-cmd --query-port=7000/tcp
no
#添加指定需要开放的端口
$ sudo firewall-cmd --add-port=7000/tcp --permanent
success
#移除指定端口
#firewall-cmd --permanent --remove-port=7000/tcp
#重新载入添加/移除的端口
$ sudo firewall-cmd --reload
#也可再查下是否开启指定端口
$ sudo firewall-cmd --query-port=7000/tcp
yes
4.1.4 docker 构建 eureka 镜像,创建并运行 eureka 容器、查看 eureka 容器运行日志
a. 构建镜像前的准备工作:
# 创建用于存放app.jar和Dockerfile文件的目录,取名为mydocker
$ sudo mkdir /usr/local/mydocker
$ sudo cd /usr/local/mydocker
# 将app.jar上传到该目录(/usr/local/mydocker/)
# 创建Dockerfile文件,文件名必须一模一样
$ sudo vi Dockerfile
# 基于jdk1.8镜像构建eureka镜像(因为eureka是打成了jar是通过java -jar来运行)
FROM jdk1.8
# 将当前目录的app.jar,复制到eureka镜像的/目录,名为app.jar
ADD app.jar /app.jar
# 之所以用ENTRYPOINT命令,而不是CMD命令,是因为docker run会覆盖掉CMD命令里的内容。该行命令,就是执行java -jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
b. 构建 eureka 镜像
# eureka为构建后的镜像名称,下面最后的.和.前面的空格一定不能少。最后的.表示使用当前目录中的Dockerfile来构建。
$ sudo docker build -t eureka .
Sending build context to Docker daemon 46.05MB
Step 1/3 : FROM jdk1.8
---> 1f2578d93bd0
Step 2/3 : ADD app.jar /app.jar
---> 14d818fa91b0
Step 3/3 : ENTRYPOINT ["java","-jar","/app.jar"]
---> Running in d421e50bf8cd
Removing intermediate container d421e50bf8cd
---> 15c87bf6f8e5
Successfully built 15c87bf6f8e5
Successfully tagged eureka:latest
# 上面输出Successfully...表示构建eureka镜像成功,也可通过docker images命令查看是否构建成功
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
eureka latest 15c87bf6f8e5 51 seconds ago 645MB
...
# 上面可以看到REPOSITORY下有一个名为eureka的镜像,即表示构建成功
c. 运行 eureka 容器
# docker run 表示创建一个新的容器并运行
# -d 表示以守护模式运行,也就是后台运行,非阻塞式运行
# --name=eureka 表示运行后的容器名称为eureka
# -p 7000:7000 表示将宿主机的7000端口和eureka容器的7000之间做个绑定
# 最后的eureka,是docker images中查看到的镜像名称
$ sudo docker run -d --name=eureka -p 7000:7000 eureka
0af7b3701b59048f9f9a901b29aff31b9956b2391c3d299f7e5f6016c8c44ffb
#出现如上一个很长的字符串,表示运行docker创建了一个eureka容器,并运行eureka容器成功,但至于eureka容器中的eureka服务是否能和我们预期的那么部署成功,还待下一步验证
d. 验证 eureka 服务
首先查看 eureka 容器是否在运行中
#查看运行中的容器(后面加 -a 可查看所有容器,不管该容器是否在运行中)
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0af7b3701b59 eureka "java -jar /app.jar" 17 minutes ago Up 17 minutes 0.0.0.0:7000->7000/tcp eureka
可通过两种方式验证:
1. 通过浏览器访问 eureka 服务地址,是否能看到 eureka 界面
2. 通过查看运行日志
# docker logs 查看docker容器运行日志
# -f --tail=30 一直查看最后30行的日志
# eureka 容器的名称
$ sudo docker logs -f --tail=30 eureka
5. 部署 demo_article 项目
5.1 把 demo_article 项目打成 jar 包
5.1.1 打包前,修改项目配置
在打包之前,需要修改 demo_article 项目中修改如下几个地方:
修改 pom.xml,新增如下内容:
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
修改 application.yml 中相应部分内容为如下:
...
url: jdbc:mysql://192.168.31.181:3306/docker?characterEncoding=UTF8
...
defaultZone: http://192.168.31.181:7000/eureka
...
5.1.2 将 demo_article 项目打成 app.jar
点击 idea 窗体左小角的 Terminal,然后将项目 demo_article 拖动到 Terminal 窗体里,接着输入 mvn clean package,回车,刷新 target 目录,即可在该目录下看到 app.jar。
5.1.3 防火墙开启 9001 端口 (9001 端口为 demo_article 项目中自定义的 server.port 端口号)
如果没有开启 9001 端口,会出现 demo_article 项目在 article 容器中启动成功,但是无法访问 article 服务。
#查看是否开启指定端口
$ sudo firewall-cmd --query-port=9001/tcp
no
#添加指定需要开放的端口
$ sudo firewall-cmd --add-port=9001/tcp --permanent
success
#移除指定端口
#firewall-cmd --permanent --remove-port=9001/tcp
#重新载入添加/移除的端口
$ sudo firewall-cmd --reload
#也可再查下是否开启指定端口
$ sudo firewall-cmd --query-port=9001/tcp
yes
5.1.4 docker 构建 article 镜像、创建和运行 article 容器、查看 article 容器运行日志
a. 构建镜像前的准备工作
$ sudo cd /usr/local/mydocker
# 将app.jar上传到该目录(/usr/local/mydocker/)
$ sudo ls
app.jar Dockerfile
因为在构建 eureka 镜像时,已经创建了一个用于存放 jar 包和 Dockerfile 的目录叫 mydocker,所以不用再创建。
另外,由于不管是哪个项目,都打包成了名为 app.jar,所以 Dockerfile 文件也可以复用。
故只需要把 demo_article 打成的 jar 包,上传到 /usr/local/mydocker 目录下,覆盖掉原先的 app.jar 即可。
b. 构建 article 镜像
# article为构建后的镜像名称,下面最后的.和.前面的空格一定不能少。最后的.表示使用当前目录中的Dockerfile来构建。
$ sudo docker build -t article .
Sending build context to Docker daemon 46.05MB
Step 1/3 : FROM jdk1.8
---> 1f2578d93bd0
Step 2/3 : ADD app.jar /app.jar
---> 9633e0cb462b
Step 3/3 : ENTRYPOINT ["java","-jar","/app.jar"]
---> Running in a51dd9b611e6
Removing intermediate container a51dd9b611e6
---> 7f5954f085f6
Successfully built 7f5954f085f6
Successfully tagged eureka:latest
# 上面输出Successfully...表示构建article镜像成功,也可通过docker images命令查看是否构建成功
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
article latest 7f5954f085f6 2 minutes ago 651MB
...
# 上面可以看到REPOSITORY下有一个名为article的镜像,即表示构建成功
c. 运行 article 容器
# docker run 表示创建一个新的容器并运行
# -d 表示以守护模式运行,也就是后台运行,非阻塞式运行
# --name=article 表示运行后的容器名称为article
# -p 9001:9001 表示将宿主机的9001端口和eureka容器的9001之间做个绑定
# 最后的eureka,是docker images中查看到的镜像名称
$ sudo docker run -d --name=article -p 9001:9001 article
7031e9a5bd25d2708e18b8b986ae3081c09bb29caa4948fd437e7b5a9b47c602
#出现如上一个很长的字符串,表示运行docker创建了一个article容器,并运行article容器成功,但至于article容器中的article服务是否能和我们预期的那么部署成功,还待下一步验证
d. 验证 article 服务
首先查看 article 容器是否在运行中
#查看运行中的容器(后面加 -a 可查看所有容器,不管该容器是否在运行中)
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7031e9a5bd25 article "java -jar /app.jar" About a minute ago Up About a minute 0.0.0.0:9001->9001/tcp article
可通过三种方式验证:
1. 通过浏览器访问 eureka 服务地址,查看 demo_article 服务是否注册到 eureka 上
2. 通过查看运行日志
# docker logs 查看docker容器运行日志
# -f --tail=30 一直查看最后30行的日志
# article 容器的名称
$ sudo docker logs -f --tail=30 article
3. 通过访问 demo_article 项目的 url
6. 部署 demo_zuul 项目
6.1 把 demo_zuul 项目打成 jar 包
6.1.1 打包前,修改项目配置
在打包之前,需要修改 demo_zuul 项目中修改如下几个地方:
修改 pom.xml,新增如下内容:
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
修改 application.yml 中相应部分内容为如下:
...
defaultZone: http://192.168.31.181:7000/eureka
...
6.1.2 将 demo_zuul 项目打成 app.jar
点击 idea 窗体左小角的 Terminal,然后将项目 demo_zuul 拖动到 Terminal 窗体里,接着输入 mvn clean package,回车,刷新 target 目录,即可在该目录下看到 app.jar。
6.13 防火墙开启 8888 端口(8888 端口为 demo_zuul 项目中自定义的 server.port 端口号)
如果没有开启 8888 端口,会出现通过网关代理去访问 article 服务时,出现访问错误情况。
#查看是否开启指定端口
$ sudo firewall-cmd --query-port=8888/tcp
no
#添加指定需要开放的端口
$ sudo firewall-cmd --add-port=8888/tcp --permanent
success
#移除指定端口
#firewall-cmd --permanent --remove-port=8888/tcp
#重新载入添加/移除的端口
$ sudo firewall-cmd --reload
#也可再查下是否开启指定端口
$ sudo firewall-cmd --query-port=8888/tcp
yes
6.1.4 docker 构建 zuul 镜像、创建和运行 zuul 容器、查看 zuul 容器运行日志
a. 构建镜像前的准备工作
$ sudo cd /usr/local/mydocker
# 将app.jar上传到该目录(/usr/local/mydocker/)
$ sudo ls
app.jar Dockerfile
因为在构建 eureka 镜像时,已经创建了一个用于存放 jar 包和 Dockerfile 的目录叫 mydocker,所以不用再创建。
另外,由于不管是哪个项目,都打包成了名为 app.jar,所以 Dockerfile 文件也可以复用。
故只需要把 demo_article 打成的 jar 包,上传到 /usr/local/mydocker 目录下,覆盖掉原先的 app.jar 即可。
b. 构建 zuul 镜像
# zuul为构建后的镜像名称,下面最后的.和.前面的空格一定不能少。最后的.表示使用当前目录中的Dockerfile来构建。
$ sudo docker build -t zuul .
Sending build context to Docker daemon 46.05MB
Step 1/3 : FROM jdk1.8
---> 1f2578d93bd0
Step 2/3 : ADD app.jar /app.jar
---> 9496a939de7f
Step 3/3 : ENTRYPOINT ["java","-jar","/app.jar"]
---> Running in e682a3f423e5
Removing intermediate container e682a3f423e5
---> 62c091b00c8f
Successfully built 62c091b00c8f
Successfully tagged eureka:latest
# 上面输出Successfully...表示构建article镜像成功,也可通过docker images命令查看是否构建成功
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zuul latest 62c091b00c8f About a minute ago 642MB
...
# 上面可以看到REPOSITORY下有一个名为zuul的镜像,即表示构建成功
c. 运行 zuul 容器
# docker run 表示创建一个新的容器并运行
# -d 表示以守护模式运行,也就是后台运行,非阻塞式运行
# --name=zuul 表示运行后的容器名称为zuul
# -p 8888:8888 表示将宿主机的9001端口和zuul容器的8888之间做个绑定
# 最后的zuul,是docker images中查看到的镜像名称
$ sudo docker run -d --name=zuul -p 8888:8888 zuul
94a28b1a9fdd2456aab3cbae3685e3fe77cd1754e2107a6f3bcc0b3d788051d1
#出现如上一个很长的字符串,表示运行docker创建了一个zuul容器,并运行zuul容器成功,但至于zuul容器中的zuul服务是否能和我们预期的那么部署成功,还待下一步验证
d. 验证 zuul 服务
首先查看 zuul 容器是否在运行中
#查看运行中的容器 (后面加 -a 可查看所有容器,不管该容器是否在运行中)
$ sudo # docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
94a28b1a9fdd zuul "java -jar /app.jar" About a minute ago Up About a minute 0.0.0.0:8888->8888/tcp zuul
可通过三种方式验证:
1. 通过浏览器访问 eureka 服务地址,查看 demo_zuul 服务是否注册到 eureka 上
2. 通过查看运行日志
# docker logs 查看docker容器运行日志
# -f --tail=30 一直查看最后30行的日志
# zuul容器的名称
$ sudo docker logs -f --tail=30 zuul
3. 通过 zuul 网关代理访问 demo_article 项目的 url
docker 微服务部署之:五、利用 DockerMaven 插件自动构建镜像
关于利用 SSH 桥接访问服务器的 Docker 运行的 MySql 服务和ssh连接docker容器的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于docker 创建 mysql 服务、Docker 安装 MySQL 服务、Docker 容器部署 Mysql 数据库服务器、docker 微服务部署之:四、安装 docker、docker 中安装 mysql 和 jdk1.8、手动构建镜像、部署项目的相关信息,请在本站寻找。
本文标签: