注意在应用部署之前,docker 服务必须是开启状态 systemctl start docker。
目录
拉取 MySQL 镜像,此处选择的是 MySQL 8.0.27 版本;
docker pull mysql:8.0.27
创建容器,容器名称为 mysql;
docker run -di --name=dapangdong_mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p 表示端口映射关系,格式为 宿主机映射端口 : 容器运行端口;
-e 表示添加环境变量,此处设置 root 用户登录密码为 123456。
上面命令的各个参数含义如下:
--name=dapangdong_mysql
容器的名字叫做 dapangdong_mysql
-p 3308:3306
容器 MySQL 默认端口 3306
射到本机的 3308
端口。
-d
在后台运行容器并打印容器ID。
--rm
停止运行后,自动删除容器文件。
-e MYSQL_ROOT_PASSWORD=123456
设置环境变量 MYSQL_ROOT_PASSWORD
值为 123456
来设置 root
密码,更多环境变量参考。
--character-set-server=utf8mb4 --collation-server=utf8mb4_col
该命令以默认字符集 utf8mb4
和数据库默认排序规则 utf8mb4
启动 MySQL
服务,可以将许多配置选项作为标志传递给 mysqld。这将使您可以灵活地自定义容器,而无需 cnf
配置文件,配置 MySQL Server
的另一种方法是准备一个配置文件,并将其安装在容器内服务器配置文件的位置。有关详细信息,请参见持久数据和配置更改。
-v /etc/localtime:/etc/localtime:ro
是让容器的时钟与宿主机时钟同步,避免时区的问题,ro
是 read only
的意思,就是只读。
或者启动
docker run --name mysqlname \
-p 3308:3306 \
-e MYSQL_ROOT_PASSWORD=my123456 \
-d mysql:8.0.27 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
如下即为创建成功:
远程登录 MySQL
容器创建完成之后,就可以在本地进行 MySQL 连接了;如下图在本地的 Navicat 中新建一个连接:
要知道我们并不是直接去连接容器中的 MySQL,而是通过宿主机进行连接。此时所连接的正是我们刚刚所创建的容器中的 MySQL;
Docker 下 MySQL 部署完成!
拉取 tomcat 镜像;
docker pull tomcat:7-jre7
创建容器;
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
-v 目录映射关系,前者为宿主机目录,后者是映射到宿主机上的目录,如果没有该目录会自动创建
-p 端口映射关系,前者为宿主机端口,后者是容器内的映射端口
部署应用
容器创建成功之后,我们这时直接在本地访问是没有效果的,报错 404;
这是因为我们使用到了目录挂载,本地的目录 /usr/local/webapps 是新创建的,没有任何应用,所以访问时无显示。这时候我们可以为它部署一个应用,也就是往此目录中放入一个应用,我在这里用了一个简单的测试 war 包 cluster_test.war;
链接:Tomcat 测试 war 包 cluster_test.war
提取码:0214
上传后如下,目录中出现 war 包和自动解压后的文件;
成功部署后就可以在本地进行访问了,如下访问成功,不再报错;
Docker 下 tomcat 部署完成!
需要注意在 tomcat 部署过程当中,如部署后无法正常访问,报错 404,这说明 tomcat 服务是没问题的。那么无法正常访问可能有三个原因:
防火墙未开放该端口;
访问路径写的有问题;
war 包本身有问题;
拉取 nginx 镜像
docker pull nginx
创建容器
docker run -di --name=mynginx -p 80:80 nginx
创建成功我们在本地浏览器访问宿主机 IP,可以看到 nginx 欢迎界面;
部署应用
我们这里将一个静态页面部署到 nginx 中,如下我在本地创建了一个 html 文件夹 和 index.html 文件;
将它上传至我们的宿主机;
进入 nginx 容器;
docker exec -it mynginx /bin/bash
找到配置文件 default.conf,可以看到 nginx 的页面文件是保存于 /usr/share/nginx/html/ 中的;
所以我们将需要部署的页面文件移动到此目录;
docker cp html mynginx:/usr/share/nginx/
此时再次在本地访问宿主机 IP,页面显示已由 nginx 欢迎页面变成了我们部署的页面;
Docker 下 nginx 部署完成!
拉取镜像
docker pull redis
创建容器
docker run -di --name=myredis -p 6379:6379 redis
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /opt/myredis/redis.conf:/etc/redis/redis.conf -v /opt/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass rootroot
说明:
-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
–log 日志相关
–name redis 指定该容器名称,查看和进行操作都比较方便。
-v 挂载文件或目录 :前表示主机部分(必须为绝对路径),:后表示容器部分。
/opt/myredis/redis.conf:/etc/redis/redis.conf 挂载我的配置文件
/opt/myredis/data:/data 挂载redis的数据路径
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf 指定配置文件的路径。/etc/redis/redis.conf指的是容器内的文件路径,对应的宿主机的路径要根据挂载卷的路径找到。我的宿主机路径就是/opt/myredis/redis.conf
–appendonly yes 开启redis 持久化
–requirepass rootroot 设置密码为rootroot
测试
使用本地的 redis 进行测试,如下图; redis 官方下载地址
在 redis 目录下打开终端,redis-cli -h 宿主机IP 连接宿主机;
连接成功,占用 6379 端口且可正常运行;
Docker 下 redis 部署完成!
第一步:访问Docker Hub官网搜索相应jdk版本。
docker search jdk
第二步:首先需要拉取jdk镜像
docker pull java
第三部:运行jdk镜像
docker run -di --name=jdk1.8 java
第四部:进入jdk镜像
docker exec -it jdk1.8 bash
然后输入命令,如果显示版本就成功。
java -version
方法二:
下载openjdk11
dockere pull openjdk:11
下载中:
下载完成:
2.查看镜像
docker images
说明:
REPOSTORY:镜像的仓库源
TAG:镜像的标签(可以有多个,latest表示最新的,可以自己指定)
IMAGE ID :镜像 id
CREATE:创建的时间
SIZE:镜像的大小
3.创建容器
docker run -d -t --name java-11 openjdk:11
查看container运行情况
docker ps
4.进入容器,查看Java版本
# 进入容器 -it 后面跟容器ID
docker exec -it 8da1c0e4efc2 /bin/bash
5.退出容器
# 退出容器
ctrl + d
6.停止容器
6.1停止容器前,先查看运行中的容器
docker ps
6.2将需要停止的容器ID(CONTAINER ID)记录下来,然后运行命令
# 在这里我们需要关闭的是java11的容器,所以它的container id是:618fc714a851
docker stop 618fc714a851
# 执行成功后,会展示所停止的容器id
7.删除未运行的容器
# 在这里,我们还可以看见jdk11的容器还在,那么我们需要彻底删除容器,则需要运行此命令
# docker rm CONTAINER ID
docker rm 618fc714a851
8.删除镜像
docker rmi 镜像名称 -f
# 说明: -f 强制删除
docker pull nacos/nacos-server
docker run -d \
--name nacos \
-p 8848:8848 \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
nacos/nacos-server
至此,我们已经可以使用nacos服务,UI地址:http://ip:8848/nacos 账号:nacos 密码:nacos
一、操作步骤
1、首先从docker hub pull mysql的镜像
docker pull mysql:5.7.29
#我这里pull的是mysql5.7.29的版本:默认是mysql:latest
2、镜像下载完成后进入运行容器
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7.29
#–name 是容器名称
#-itd 后台运行
#-p 将容器端口映射到宿主机端口
#-e 设置相关参数,此处为mysql初始化密码
#mysql:5,7,29 是pull下来的镜像,可以使用docker images查看
3、容器创建成功后可以进入到mysql容器了
docker exec -it 名称/id/bin/bash
#docker exec -it mysql /bin/bash
使用mysql -uroot -p 输入密码进入mysql
4、到此mysql镜像部署完成,接下来开始部署nacos镜像
下载nacos镜像
docker pull nacos/nacos-server
5、下载完成后启动nacos容器
docker run -d \
--name nacos \
-p 38848:8848 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.4 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
--restart=always \
nacos/nacos-server
# 说明:
# --name nacos ->设置运行改容器name为nacos
# -p 38848:8848 ->把容器里的8848端口映射给宿主机的38848端口,映射后可以通过38848端口访问Nacos
# MODE=standalone ->表示单机启动
# MYSQL_SERVICE_HOST ->mysql容器的ip *****注意
# MYSQL_SERVICE_PORT ->mysql的端口
# MYSQL_SERVICE_PASSWORD ->mysql密码
# nacos_config ->mysql中Nacos的数据库名称
# --restart=always ->能够使我们在重启docker时,自动启动相关容器
#ip 是你的mysql容器的ip(不要写成127.0.0.1)
查询方式:docker inspect mysql | grep IPAddress 查询出来写上去即可
## 查看服务对应IP
如果想查看某个服务的ip该怎么查看。进入服务bash中后,执行ifconfig
,会发现并不好用。那么该如何查看ip呢。
这个需要用到命令docker inspect NAME|ID
6、启动容器后ip:8848/nacos在页面访问nacos即可看到nacos的界面
7、测试是否连接到容器数据库,新增一个配置看数据库是否存在
如图所示则证明nacos已经连接到容器mysql了
docker run -d
–name nacos
-p 8848:8848
-e MODE=standalone
-e SPRING_DATASOURCE_PLATFORM=mysql
–restart=always
nacos/nacos-server:latest