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 分为stabletest和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.reposed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repoyum 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/bashdocker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash
案例:执行完之后三个容器挂载在宿主机同一个数据卷下,
比如:/var/lib/docker/volumes/06f881244d61ebd6e36992c8186fc944ba4f609d966b8668d7522710e6ed3c7e/_datadocker run -it --name c3 -v /volume centos:7docker run -it --name c1 --volumes-from c3 centos:7docker 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 dockerdocker 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 ~/mysqlcd ~/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/bashmysql -uroot -proot使用外部机器连接容器中的mysql

Docker部署Nginx
创建数据卷目录
mkdir -p ~/nginx/confmkdir -p ~/nginx/conf/conf.dcd ~/nginx/confconf目录下创建nginx.conf文件
vim nginx.confuser 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.confserver {
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 ~/tomcatcd ~/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/mysqlcd ~/wordpress/mysqldocker 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 -ddocker 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/logsmkdir ~/nacos/init.dcd ~/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.htmlnacos/nacos(用户名密码)添加的配置信息可在数据库中下面那张表中看到

Docker部署Nacos集群
(先执行完上面的nacos单容器)
cd /zx/nacos/confvim 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.0docker 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/bashexit退出容器不会关闭容器
Docker 容器相关命令
docker ps查看正在运行的容器docker ps –a查看所有容器docker pa -aq查看所有容器的id列表docker exec 参数进入容器,退出容器,容器不会关闭docker exec -it c1 /bin/bashdocker 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重启