1.Dockerfile镜像制作
1.1准备工作
- centos:7镜像 (所有的镜像文件创建时都需要有一个空的centos镜像,就类似通过一个空的光盘或u盘创建一个系统启动盘是一样的)
- jdk压缩包 jdk-8u51-linux-x64.tar.gz(可以从官网去下载:oracle.org),基于此压缩包,制作jdk镜像。
1.2 创建编辑Dockerfile文件
在创建新的镜像时都需要有一个Dockerfile文件(文件名一定要注意大小写),这个文件要与你的资源放在一起(例如你下载的jdk),我们可以通过linux系统中的touch指令创建此文件(touch Dockerfile)
现在,以centos7为基础,构建oracle jdk8的镜像,首先通过vim打开Dockerfile,这个文件不存在会自动创建。然后进入编辑模式(按i字母),在编辑模式下可以拷贝如下语句,书写挂载目录,配置环境
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']
退出保存(Esc后,:wq保存)执行编译。
docker build -t jdk:8 . #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.
编译成功后效果如图:
1.3 运行镜像文件
1.启动jdk,进入容器
docker run -it jdk:8 bash
运行后,可以通过echo $PATH查看环境变量
并可以通过java –version查看JDK版本信息
java -version
2.启动镜像容器,运行web服务
说明:基于jdk:8镜像启动运行sentinel服务(服务启动后可在宿主机通过localhost:8180进行访问)
docker run -d --name sentinel -v /root/servers:/usr/sca \
> -p 8180:8080 jdk:8 \
> java -jar /usr/sca/sentinel-dashboard-1.8.0.jar
说明:主机端口为8180,容器端口为8080
3.访问测试,输入宿主机ip和端口
成功出现下图:
2.docker镜像安装实例
2.1mysql数据库
2.1.1远程安装步骤
1.远程拉取镜像:docker pull mysql:8.0.23
2.检查mysql镜像:docker images
3.启动运行mysql镜像 (docker run 用于启动一个容器)
sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.23
注意:如果安装失败,则删除以前的容器和镜像,重新安装
2.1.2 登陆mysql服务
1.进入容器:sudo docker exec -it mysql bash
2.登陆(默认密码root):mysql -uroot -proot
运行成功后如图:
3.mysq 服务其他操作
- 停止mysql服务:docker stop mysql
- 启动mysql服务:docker start mysql
- 查看日志:docker container logs mysql
- 设置mysql开机自启动:docker update mysql --restart=always
2.2安装redis
2.2.1安装步骤
1.下载镜像:docker pull reids
2.准备配置文件.
创建配置文件目录:mkdir -p /usr/local/docker/redis01/conf
创建redis.conf配置文件:touch /usr/local/docker/redis01/conf/redis.conf
3.创建redis实例并启动:
docker run -p 6379:6379 --name redis01 \
> -v /usr/local/docker/redis01/data:/data \
> -v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
> -d redis redis-server /etc/redis/redis.conf
4.查看正在运行的进程:docker ps
2.2.2 访问redis服务器
1.控制台直接连接redis测试:docker exec -it redis01 bash
2.检查redis版本:redis-server -v 或 redis-cli -v
3.登录redis(默认不需要密码): redis-cli
注;二三步骤可以合并:docker exec -it redis01 redis-cli
具体操作如图:
2.3 安装Ngnix代理
2.3.1安装步骤
1.拉取ngnix镜像 :docker pull nginx
2.查看镜像:docker images
3.创建数据卷(这个对象会在宿主机直接创建一个目录)
创建数据卷:docker volume create ngix-vol
查看数据卷对应的宿主机目录:docker inspect nginx-vol
3.安装运行nacos
3.1 安装运行nacos
1.拉取nacos:docker pull nacos/nacos-server:1.4.1
2. mysql中执行nacos的sql脚本文件
a) 找到目录/usr/local/docker/mysql/conf/
b) 导入文件nacos-mysql.sql
c)启动mysql:docker exec -it mysql bash
d) 登录mysql:mysql -uroot -p root
f)运行导入容器目录下的sql文件: source /etc/mysql/nacos-mysql.sql
3.创建并启动nacos容器
docker run \
-e TZ="Asia/Shanghai" \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_DATABASE_NUM=1 \
-e MYSQL_SERVICE_HOST=192.168.227.131 \ ##与linux虚拟机的地址一致
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \##数据库用户名
-e MYSQL_SERVICE_PASSWORD=root \数据库密码
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-p 8848:8848 \
--name nacos \
--restart=always \
-d nacos/nacos-server:1.4.1
4.成功后运行检测
在浏览器输入192.168.129.130:8848/nacos 进行检测
4 .网络互联运用
4.1 准备工作
1.创建名字为t-net:docker network create -d bridge t-net #t-net为自己起的网络名称
2.查看网络信息
列出所属有网络:docker network ls
查看网络信息:docker inspect 67d #67d 为创建的网络id
3.实现容器互联
创建容器1:docker run -it --name app1 --network t-net centos:7
创建容器2:docker run -it --name app2 --network t-net centos:7
4.2 联通测试
在两个终端中分别执行:
ping app1 ,ping app2
显示如下:
4.3 原理解析及综合运用
网络互联实际上就是两台计虚拟机的互相联通来模拟用户与后台服务数据交互的一个过程,其也是开发人员用于检测模拟docker远程部署的重要工具,其实质就是容器中服务的联通。
而在开发中,我们常用的一些方式如下:
1.一台模拟服务端,进行负载均衡 ,另一台模拟客户端,请求相应的一些服务
2.启动同一台虚拟机,模拟redis的同步运用