Docker部署微服务(Cloud-Admin)以及Docker参数、命令

5 篇文章 0 订阅
2 篇文章 0 订阅

Docker的安装
  1. 卸载旧版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
  1. 使用yum安装
//安装依赖包
sudo yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2
// 添加国内 yum 软件源
yum-config-manager \
    --add-repo \
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
//更新 yum 软件源缓存,并安装 docker-ce。
sudo yum makecache fast
sudo yum install docker-ce
  1. 设置开机自启和自动服务
sudo systemctl enable docker
sudo systemctl start docker
  1. 建立docker用户组
sudo groupadd docker
//将当前用户加入docker组
sudo usermod -aG docker $USER
安装consul、redis、rabbitmq、mysql
  1. 新建docker网络
docker network create -d bridge spring-net
  1. 获取镜像
docker pull consul
docker pull redis
docker pull rabbitmq:management
  1. 运行镜像
//consul
docker run -d -p 8500:8500 --name consul --network spring-net consul agent -server -bootstrap-expect=1 -client 0.0.0.0 -ui

//-bootstrap-expect:指定期望的server节点的数量,并当server节点可用的时候,自动进行bootstrapping


//rabbitmq
docker run -d --name rabbitmq --network spring-net -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672  rabbitmq:management


//redis  需要先配置好/etc/redis.conf
//https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf
docker run -p 6379:6379 --network spring-net -v /etc/redis/redis.conf:/etc/redis/redis.conf -v /opt/docker/redis:/data  --name redis -d redis redis-server /etc/redis/redis.conf --appendonly yes

//redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置

//mysql
docker run -d -p 3306:3306 --name mysql --network spring-net -v /etc/mysql/my.cnf:/etc/my.cnf -v /var/log/mysql:/var/log/mysql -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=ZXWL@1702b mysql:5.7.26

安装nginx

可以参考 Docker 中运行 Nginx,以及使用 Logrotate 进行日志轮替

部署微服务
  1. 配置服务器docker可以远程访问
//在/usr/lib/systemd/system/docker.service中添加参数
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

//重新读取配置文件、重启服务
systemctl daemon-reload
systemctl restart docker
  1. pom配置
   <build>
       <finalName>ace-gateway</finalName>
       <plugins>
           <plugin>
               <groupId>com.spotify</groupId>
               <artifactId>docker-maven-plugin</artifactId>
               <version>1.2.0</version>
               <configuration>
                   <dockerHost>http://你的服务器地址:2375</dockerHost>
                   <imageName>${project.artifactId}</imageName>
                   <dockerDirectory>src/main/docker</dockerDirectory>
                   <resources>
                       <resource>
                           <targetPath>/</targetPath>
                           <directory>${project.build.directory}</directory>
                           <include>${project.build.finalName}.jar</include>
                       </resource>
                   </resources>
               </configuration>
           </plugin>
       </plugins>
   </build>
  1. application配置
redis:
   host: ${REDIS_HOST:localhost}
rabbitmq:
   host: ${RABBIT_MQ_HOST:localhost}
consul:
     host: ${CONSUL_HOST:localhost}
  1. Dockerfile配置
FROM anapsix/alpine-java:8_server-jre_unlimited
VOLUME /tmp
ADD ace-gateway.jar app.jar
ENV REDIS_HOST=redis
ENV RABBIT_MQ_HOST=rabbitmq
ENV CONSUL_HOST=consul
RUN bash -c 'touch /app.jar' \
   && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
   && echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Dfile.encoding=utf-8","-jar","/app.jar"]
  1. 运行服务
docker run -d -p 8765:8765 --network spring-net --name geteway iot-gateway
防火墙开启端口
//查看已开放端口
firewall-cmd --list-ports
//添加端口 consul:8500 rabbitmq后台管理界面:15672
firewall-cmd --zone=public --add-port=8500/tcp --permanent
//修改配置文件后 使用命令重新加载
firewall-cmd --reload
//重启防火墙
systemctl restart firewalld
Docker参数/命令
参数描述
-d, --detach=false指定容器运行于前台还是后台,默认为false
-i, --interactive=false打开STDIN,用于控制台交互
-t, --tty=false分配tty设备,该可以支持终端登录,默认为false
-u, --user=""指定容器的用户
-a, --attach=[]登录容器(必须是以docker run -d启动的容器)
-w, --workdir=""指定容器的工作目录
-c, --cpu-shares=0设置容器CPU权重,在CPU共享场景使用
-e, --env=[]指定环境变量,容器中可以使用该环境变量
-m, --memory=“300M”设置容器内存上限300M(只设置-m不设置–memory-swap,则–memory-swap为-m两倍)
–memory-swap=1要和-m连用,设置内存+swap的使用限额。,值为-1表示不受限
-P, --publish-all=false指定容器暴露的端口
-p, --publish=[]指定容器暴露的端口
-h, --hostname=""指定容器的主机名
-v, --volume=[]给容器挂载存储卷,挂载到容器的某个目录,要挂载文件需要现在宿主机中提前创建
–volumes-from=[]给容器挂载其他容器上的卷,挂载到容器的某个目录
–cap-add=[]添加权限
–cap-drop=[]删除权限
–cidfile=""运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
–cpuset=""设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
–device=[]添加主机设备给容器,相当于设备直通
–dns=[]指定容器的dns服务器
–dns-search=[]指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
–entrypoint=""覆盖image的入口点
–env-file=[]指定环境变量文件,文件格式为每行一个环境变量
–expose=[]指定容器暴露的端口,即修改镜像的暴露端口
–link=[]指定容器间的关联,使用其他容器的IP、env等信息
–lxc-conf=[]指定容器的配置文件,只有在指定–exec-driver=lxc时使用
–name=""指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
–net=“bridge”容器网络设置
bridge 使用docker daemon指定的网桥
host //容器使用主机的网络
container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
none 容器使用自己的网络(类似–net=bridge),但是不进行配置
–privileged=false指定容器是否为特权容器,特权容器拥有所有的capabilities
–restart=“no”指定容器停止后的重启策略:
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
–rm=false指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
–sig-proxy=true设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
–log-opt max-size=10m --log-opt max-file=1限制生成的json.log单个文件大小和保留文件个数
或者配置 Dockerd 的配置:编辑/etc/docker/daemon.json
添加{ “log-opts”: {“max-size”:“10m”, “max-file”:“3”} }
加载配置文件:systemctl daemon-reload重启:systemctl restart docker
命令描述
docker attach附加到正在运行的容器
docker commit从容器的更改创建一个新的映像
docker cp在容器和本地文件系统之间复制文件/文件夹
docker create创建一个新的容器
docker diff检查容器文件系统上文件或目录的更改
docker exec在运行容器中运行命令
docker export将容器的文件系统导出为tar存档
docker inspect显示一个或多个容器的详细信息
docker kill杀死一个或多个运行容器
docker logs获取容器的日志
docker ls列出容器
docker pause暂停一个或多个容器内的所有进程
docker port列出端口映射或容器的特定映射
docker prune取出所有停止的容器
docker rename重命名容器
docker restart重新启动一个或多个容器
docker rm删除(移除)一个或多个容器
-v :同时移除数据卷
docker run在新容器中运行命令
docker start启动一个或多个停止的容器
docker stats显示容器的实时流资源使用统计信息
docker stop停止一个或多个运行容器
docker top显示容器的正在运行的进程
docker unpause取消暂停一个或多个容器内的所有流程
docker update更新一个或多个容器的配置
docker wait阻止一个或多个容器停止,然后打印退出代码
docker image prune清除REPOSITORY和TAG为的镜像
docker volume prune清除无主的数据卷
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值