Docker
Docker-相关书籍
- Docker技术入门与实战
- 第一本Docker书
- Docker技术入门与实战 第3版.pdf
- Docker基础与实战.pdf
- Docker全攻略.pdf
- Docker实战.pdf
- Docker开源书.pdf
- 深入浅出docker.pdf
Docker-资源
- Docker 官方主页: https://www.docker.com
- Docker 官方博客: https://blog.docker.com/
- Docker 官方文档: https://docs.docker.com/
- Docker Store: https://store.docker.com
- Docker Cloud: https://cloud.docker.com
- Docker Hub: https://hub.docker.com
- Docker 的源代码仓库: https://github.com/moby/moby
- Docker 发布版本历史: https://docs.docker.com/release-notes/
- Docker 常见问题: https://docs.docker.com/engine/faq/
- Docker 远端应用 API: https://docs.docker.com/develop/sdk/
Mac OS安装Docker
CentOS安装Docker
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。
Docker CE 分为stable
test
和nightly
三个更新频道。
官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。
docker-ce为社区免费版本。稍等片刻,docker即可安装成功。
安装
- yum 包更新到最新
yum update
- 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
- 安装docker,出现输入的界面都按 y
yum install -y docker-ce
- 查看docker版本,验证是否验证成功
docker -v
卸载
如果之前安装过旧版本的Docker,可以使用下面命令卸载:yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine docker-ce
启动docker
Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!
启动docker前,一定要关闭防火墙后!!
关闭防火墙systemctl stop firewalld
禁止开机启动防火墙 systemctl disable firewalld
启动dockersystemctl start docker
查看版本docker -v
配置镜像加速
docker官方镜像仓库网速较差,我们需要设置国内镜像服务:
Docker 国内镜像
阿里云的加速器:https://help.aliyun.com/document_detail/60750.html
网易加速器:http://hub-mirror.c.163.com
官方中国加速器:https://registry.docker-cn.com
ustc 的镜像:https://docker.mirrors.ustc.edu.cn
daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)
sudo mkdir -p /etc/docker |
查看文件cat /etc/docker/daemon.json
Docker配置数据卷和数据卷容器
配置数据卷
docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
注意事项:
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷
演示持久化:
- 创建容器和数据卷,将宿主机的数据券/root/data 与 容器的目录 /root/data_container 挂载
docker run -it --name c1 -v /root/data:/root/data_container centos:7 /bin/bash
- 宿主机/root/data下创建文件,容器中/root/data_container会同步
touch zhangxin.txt
- 反之亦如此/root/data_container下,宿主机/root/data会同步
echo zhangxin > zhangxin2.txt - 重新建立容器并挂载保留的数据卷
docker run -it –name c2 -v ~/data:/root/data_con centos:7
挂载多个:
docker run -it --name c4 \ |
两个容器挂载同一个数据卷:
docker run -it --name c5 -v ~/data:/root/data centos:7 |
配置数据卷容器
创建启动c3数据卷容器,使用 –v 参数 设置数据卷docker run –it --name c3 –v /volume centos:7 /bin/bash
创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash
案例:执行完之后三个容器挂载在宿主机同一个数据卷下,
比如:/var/lib/docker/volumes/06f881244d61ebd6e36992c8186fc944ba4f609d966b8668d7522710e6ed3c7e/_datadocker run -it --name c3 -v /volume centos:7
docker run -it --name c1 --volumes-from c3 centos:7
docker run -it --name c2 --volumes-from c3 centos:7
Docker镜像制作
容器转为镜像流程docker commit 容器id 镜像名称:版本号
docker save -o 压缩文件名称 镜像名称:版本号
docker load –i 压缩文件名称
Docker镜像仓库
搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。
官网地址 https://hub.docker.com/_/registry
简化版镜像仓库
Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。
搭建方式比较简单,命令如下:
docker run -d \ |
命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。
访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像
带有图形化界面版本
使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:
version: '3.0' |
配置Docker信任地址
我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:
- 打开要修改的文件
vi /etc/docker/daemon.json
- 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
- 重加载
systemctl daemon-reload
- 重启docker
systemctl restart docker
docker start registry
将镜像上传至私有仓库
- 标记镜像为私有仓库的镜像
docker tag centos:7 私有仓库服务器IP:5000/centos:7
- 上传标记的镜像
docker push 私有仓库服务器IP:5000/centos:7
从私有仓库拉取镜像
docker pull 私有仓库服务器ip:5000/centos:7
Dockerfile
Dockerfile关键字
关键字 | 作用 | 备注 |
---|---|---|
FROM | 指定父镜像 | 指定dockerfile基于那个image构建 |
MAINTAINER | 作者信息 | 用来标明这个dockerfile谁写的 |
LABEL | 标签 | 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看 |
RUN | 执行命令 | 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,”param2”] |
CMD | 容器启动命令 | 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,”param2”] |
ENTRYPOINT | 入口 | 一般在制作一些执行就关闭的容器中会使用 |
COPY | 复制文件 | build的时候复制文件到image中 |
ADD | 添加文件 | build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务 |
ENV | 环境变量 | 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value |
ARG | 构建参数 | 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数 |
VOLUME | 定义外部可以挂载的数据卷 | 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”] |
EXPOSE | 暴露端口 | 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp |
WORKDIR | 工作目录 | 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径 |
USER | 指定执行用户 | 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户 |
HEALTHCHECK | 健康检查 | 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制 |
ONBUILD | 触发器 | 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大 |
STOPSIGNAL | 发送信号量到宿主机 | 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。 |
SHELL | 指定执行脚本的shell | 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shellDocker 应用部署 |
Dockerfile 案例
案例一
需求:自定义centos7镜像。要求: 1. 默认登录路径为 /usr 2. 可以使用vim
实现步骤:
① 定义父镜像:FROM centos:7
② 定义作者信息:MAINTAINER itheima itheima@itcast.cn
③ 执行安装vim命令: RUN yum install -y vim
④ 定义默认的工作目录:WORKDIR /usr
⑤ 定义容器启动执行的命令:CMD /bin/bash
⑥ 通过dockerfile构建镜像:docker bulid –f dockerfile文件路径 –t 镜像名称:版本
案例二
需求:定义dockerfile,发布springboot项目
实现步骤:
① 定义父镜像:FROM java:8
② 定义作者信息:MAINTAINER itheima itheima@itcast.cn
③ 将jar包添加到容器: ADD springboot.jar app.jar
④ 定义容器启动执行的命令:CMD java–jar app.jar
⑤ 通过dockerfile构建镜像:docker bulid –f dockerfile文件路径 –t 镜像名称:版本
定义dockerfile,发布springboot项目
FROM java:8 |
docker build -f ./springboot_dockerfile -t app . |
Docker-Compose
参考文章:https://www.runoob.com/docker/docker-compose.html
安装Docker Compose
Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 |
如果下载速度较慢,或者下载失败,可以使用课前资料提供的docker-compose文件:
上传到/usr/local/bin/
目录也可以。
Base自动补全命令:
# 补全命令 |
如果这里出现错误,需要修改自己的hosts文件:
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts |
卸载Docker Compose
二进制包方式安装的,删除二进制文件即可 |
编排nginx+springboot项目
- 创建docker-compose目录
mkdir ~/docker-compose |
- 编写 docker-compose.yml 文件
version: '3' |
- 创建./nginx/conf.d目录
mkdir -p ./nginx/conf.d |
- 在./nginx/conf.d目录下 编写itheima.conf文件
server { |
- 在~/docker-compose 目录下 使用docker-compose 启动容器
docker-compose up |
- 测试访问
http://192.168.149.135/hello |
Dcoker部署应用
Docker创建自定义网络
(用于容器之间的通信 common-network 是网络名称 可改)
docker network create common-network
创建自定义网络(用于容器之间的通信 common-network 是网络名称 可改)
docker network ls
查看网络
docker network rm 名称
删除自定义网络
Docker部署CentOS
mkdir ~/centos/root |
Docker部署MySQL
创建数据卷目录
mkdir ~/mysql
cd ~/mysql
创建自定义网络common-network
自动拉取镜像并启动容器
docker run -id \
-p 3306:3306 \
--name=mysql \
--network common-network \
--restart=always \
-e TZ=Asia/Shanghai \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.6参数说明:
- -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
- -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
- -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
- -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
- -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码为root。
进入容器,操作mysql
docker exec -it mysql /bin/bash
mysql -uroot -proot
使用外部机器连接容器中的mysql
Docker部署Nginx
创建数据卷目录
mkdir -p ~/nginx/conf
mkdir -p ~/nginx/conf/conf.d
cd ~/nginx/conf
conf目录下创建nginx.conf文件
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}conf.d目录下
vim default.conf
server {
listen 443;
server_name 101.43.123.47
root html;
index index.html index.htm;
# 定义首页索引目录和名称
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}nginx目录下
docker run -id \
--name=nginx \
--restart=always \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx参数说明:
- -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
- -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
- -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录
使用外部机器访问nginx
Docker部署Tomcat
创建数据卷目录
mkdir ~/tomcat
cd ~/tomcat
自动拉取镜像并启动容器
docker run -id \
--name=tomcat \
-p 8080:8080 \
-e TZ="Asia/Shanghai" \
--privileged=true \
-v $PWD/webapps:/usr/local/tomcat/webapps \
-v $PWD/logs:/mnt/applog \
tomcat参数说明:
- -p 8080:8080:将容器的8080端口映射到主机的8080端口
- -v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps
使用外部机器访问tomcat
Docker部署Redis
自动拉取镜像并启动容器
docker run -id \
--name=c_redis \
-p 6379:6379 \
redis:5.0使用外部机器连接redis
./redis-cli.exe -h 192.168.149.135 -p 6379
Docker部署Wordpress
创建目录
mkdir ~/wordpress
部署MySQL
mkdir ~/wordpress/mysql
cd ~/wordpress/mysql
docker run -id \
-p 3307:3306 \
--name=mysql4WP \
--network common-network \
--restart=always \
-e TZ=Asia/Shanghai \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.6创建数据库wordpress
自动拉取镜像并启动容器
docker run -d --name wordpress \
-e TZ="Asia/Shanghai" \
-e WORDPRESS_DB_HOST=101.43.123.47:3307 \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=root \
-e WORDPRESS_DB_NAME=wordpress \
-v ~/wordpress/www:/var/www/html \
-p 1080:80 \
--restart=always \
wordpress参数说明:
- WORDPRESS_DB_HOST:mysql的IP+端口
- WORDPRESS_DB_USER:mysq用户名
- WORDPRESS_DB_PASSWORD:mysql密码
- WORDPRESS_DB_NAME:数据库名,默认是wordpress
- -p 1080:80 是指宿主机的1080端口映射容器的80端口,容器内端口80不要修改
- restart=always 随docker的启动而启动
运行完可以查看日志
docker logs --tail 10 wordpress | grep info
后台管理地址 http://127.0.0.1:80/wp-admin
Docker-Composs部署Wordpress
创建挂载目录
注意:若挂载的为文件夹,则不需要,在执行命令时会自动创建,但是要是挂载文件,必须要提前准备
mkdir -p ~/nginx/data
mkdir -p ~/nginx/config/conf.d
mkdir -p ~/nginx/logs
mkdir -p ~/nginx/ssl
touch ~/nginx/config/nginx.conf
touch ~/nginx/config/conf.d/default.conf
mkdir -p ~/wordpress/html
mkdir -p ~/mysqlwordpress目录下添加
version: '3'
services:
mysql:
image: mysql
container_name: mysql
ports:
- '3306:3306'
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=7963zxv!
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=7963zxv!
networks:
- backend
restart: always
wordpress:
depends_on:
- mysql
image: wordpress
container_name: wordpress
ports:
- '9000:80'
volumes:
- ./wordpress/html:/var/www/html
environment:
- WORDPRESS_DB_NAME=wordpress
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DB_HOST=mysql:3306
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=7963zxv!
links:
- mysql
networks:
- backend
- frontend
restart: always
nginx:
image: nginx
container_name: nginx
ports:
- '80:80'
- "443:443"
volumes:
- ./nginx/data:/usr/share/nginx/html
- ./nginx/config/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/config/conf.d/default.conf:/etc/nginx/conf.d/default.conf
- ./nginx/logs:/var/log/nginx
- ./nginx/ssl:/ssl
- /var/run/docker.sock:/tmp/docker.sock:ro
links:
- wordpress
networks:
- frontend
restart: always
networks:
frontend:
#name: test_frontend
driver: bridge
backend:
#name: test_backend
driver: bridgenginx目录下添加
nginx.conf
#运行nginx的用户
user nginx;
#启动进程设置成和CPU数量相等
worker_processes 1;
#全局错误日志及PID文件的位置
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
#工作模式及连接数上限
events {
#单个后台work进程最大并发数设置为1024
worker_connections 1024;
}
http {
#设定mime类型
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#设置连接超时的事件
keepalive_timeout 65;
#开启GZIP压缩
#gzip on;
include /etc/nginx/conf.d/*.conf;
}wpress目录,
docker-compose up -d
docker ps 查看容器
配置https
考文章:SSL 证书 Nginx 服务器 SSL 证书安装部署 - 证书安装 - 文档中心 - 腾讯云 https://cloud.tencent.com/document/product/400/35244
解决https访问不加载css样式https://blog.csdn.net/weixin_36237054/article/details/113027073
wordpress如何开启https-WordPress-PHP中文网 https://www.php.cn/cms/wordpress/425534.html
wordpress开启https失败问题_weixin_34297300的博客-CSDN博客 https://blog.csdn.net/weixin_34297300/article/details/92397756
WORDPRESS安装SSL证书后,无法加载CSS解决办法 - 菜鸟学苑 https://www.cainiaoxueyuan.com/cms/11356.html
Docker部署RabbitMQ
自动拉取镜像并启动容器
docker run \ |
Docker部署hexo
创建并进入数据卷目录
mkdir -p /zx/hexo
cd /zx/hexo启动容器
docker run \
-id \
--name hexo \
-p 4000:4000 \
-v $PWD/data:/opt/website \
hexo:1.0进入容器内部
docker exec -it hexo /bin/bash
初始化环境
hexo init
现在$PWD/data中已经有了hexo的内容
生成网站内容
hexo g
预览
hexo s
,在宿主机的浏览器上输入 127.0.0.1:4000待补充。。。
Docker部署Cloudreve
参考文章:https://hub.docker.com/r/xavierniu/cloudreve
创建数据卷目录
mkdir -p /zx/cloudreve/uploads
mkdir -p /zx/cloudreve/config
mkdir -p /zx/cloudreve/db
mkdir -p /zx/cloudreve/avatar进行目录
cd /zx/cloudreve
自动拉取镜像并启动容器
docker run -d \
--name cloudreve \
-e PUID=1000 \ # optional
-e PGID=1000 \ # optional
-e TZ="Asia/Shanghai" \ # optional
-p 5212:5212 \
--restart=unless-stopped \
-v $PWD/uploads:/cloudreve/uploads \
-v $PWD/config:/cloudreve/config \
-v $PWD/db:/cloudreve/db \
-v $PWD/avatar:/cloudreve/avatar \
xavierniu/cloudreve获取初始密码
docker logs -f cloudreve
Dcoker部署Nacos
参考:https://www.cnblogs.com/wandoupeas/p/12205176.html
https://blog.csdn.net/m0_56000832/article/details/120890310
创建自定义网络common-network
创建存储
nacos
配置的数据库create database nacos_config
初始化数据库,导入初始化文件nacos-db.sql
创建数据卷目录
mkdir ~/nacos/logs
mkdir ~/nacos/init.d
cd ~/nacos
自动拉取镜像并启动容器
docker run -d \
--name nacos \
-p 8848:8848 \
-restart=always \
--privileged=true \
-e PREFER_HOST_MODE=101.43.123.47 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_MASTER_SERVICE_HOST=101.43.123.47 \
-e MYSQL_MASTER_SERVICE_PORT=3306 \
-e MYSQL_MASTER_SERVICE_USER=root \
-e MYSQL_MASTER_SERVICE_PASSWORD=root \
-e MYSQL_MASTER_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SLAVE_SERVICE_HOST=101.43.123.47 \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-v $PWD/logs:/home/nacos/logs \
-v $PWD/init.d/custom.properties:/home/nacos/init.d/custom.properties \
-v $PWD/conf:/home/nacos/conf \
--restart=always \
--network common-network \
nacos/nacos-server:1.4.1具体配置参数参考官方文档
参数说明:
- –network common-network : 容器网络
- -v /zx/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties :配置文件映射路径
查看网络容器
docker network inspect common-network
这个时候mysql容器和nacos容器的网络就注册到了我们创建的那个网络里面了
进入nacos容器内部 修改一下配置
docker exec -it nacos bash
进入容器命令vim conf/application.properties
修改配置文件也可以从其他地方获取:
复制nacos配置目录到宿主机(或从其他地方复制需要application.properties、cluster.conf)
docker cp 1d8a4a767027:/home/nacos/conf /zx/nacos
修改完成后 退出nacos容器并且重启nacos容器
docker restart nacos
重启nacos命令http://ip:8848/nacos/index.html
nacos/nacos(用户名密码)
添加的配置信息可在数据库中下面那张表中看到
Docker部署Nacos集群
(先执行完上面的nacos单容器)
cd /zx/nacos/conf
vim cluster.conf
cluster.conf文件内容
101.43.123.47:8841 |
创建3个nacos容器(conf绑定同的port)
# 创建三个nacos容器 |
安装nginx 反向代理nacos
nginx.conf内容(新启动的容器copy过来的)
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
docker run -id --name=nginx \ |
修改conf/nginx.conf文件,配置如下:
upstream nacos-cluster { |
而后在浏览器访问:http://localhost/nacos即可。
代码中application.yml文件配置如下:
spring: |
如果项目注册不了
1. 设置本机名称:/etc/hostname mName |
还是无法解决 错误:
(目前最靠谱解释:)
由于集群模式中,配置nacos.naming.data.warmup 属性为 true,因此当集群中只有一台服务时,会导致nacos服务为不可用状态。而本地测试时,该属性没有配置(默认值为false),因此集群只有一台服务也可以正常使用。
因此在使用时,如果是开发或者测试环境,只部署一台服务时,使用单机模式就可以了,配置集群模式在刚开始使用时,会遇到许多坑。
. ____ _ __ _ _ |
Docker命令
Docker进程相关
linux系统
systemctl start docker
启动docker服务systemctl status docker
查看docker服务状态systemctl stop docker
停止docker服务systemctl restart docker
重启docker服务systemctl enable docker
设置开机启动docker服务
Docker 镜像相关
docker images
查看本地所有的镜像docker images –q
查看所用镜像的iddocker search 镜像名称
从网络中查找需要的镜像docker pull 镜像名称
拉取镜像,不加版本号,默认latest版本docker pull redis:5.0
docker rmi 镜像id
删除指定本地镜像docker rmi 镜像名称:版本号
删除指定本地镜像docker rmi $(docker images –qa)
删除所有本地镜像docker rmi $(docker images –q redis)
删除所有仓库名为redis的镜像
创建并启动容器
docker run 参数
参数说明:
- -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
- -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
• -it:创建的容器一般称为交互式容器,
• -id:创建的容器一般称为守护式容器
• –name:为创建的容器命名。
两种启动方式
docker run -it --name c1 centos:7 /bin/bash
执行完会进入容器内部exit
退出容器会关闭容器docker run -id --name c2 centos:7
后台运行docker exec -it c2 /bin/bash
exit
退出容器不会关闭容器
Docker 容器相关命令
docker ps
查看正在运行的容器docker ps –a
查看所有容器docker pa -aq
查看所有容器的id列表docker exec 参数
进入容器,退出容器,容器不会关闭docker exec -it c1 /bin/bash
docker stop 容器名称
停止容器docker start 容器名称
启动容器docker rm 容器名称
删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除docker rm $(docker ps -aq)
删除所有容器,正在运行的删除不了,所有未运行的都被删除f\docker inspect 容器名称
查看容器信息
docker-compose常用命令
docker-compose up
前台运行docker-compose up -d
后台运行docker-compose down
关闭docker-compose restart
重启