零基础用Docker部署微服务
1. docker架构
这里的Client和DOCKER_HOST(docker server)都是在本地的,docker仓库Registry是在远程的;
Client的docker命令通过Docker daemon与docker server进行交互;
images镜像是由应用已经被docker打包好的镜像,如java、nginx的镜像,这些镜像可以运行在容器containers里;
每一个container容器都是运行在docker server(宿主机)上的,每一个container容器都是隔离的、独立的;
每一个container容器相当于一个Linux操作系统,每一个container容器都有自己的ip地址,所以可以在不同的container内部设置相同的端口号,宿主机不同的端口号映射到不同的容器。
Docker是容器化技术的实现。
2. Docker的安装
7、安装Docker
sudo yum install -y docker-ce
8、启动
systemctl start docker
如果把docker加入到开机启动 systemctl enable docker
查看docker是否运行 ps -ef | grep docker
9. 查看docker版本
docker version
3. 配置阿里云上docker加速的地址
来源:https://cr.console.aliyun.com/cn-hangzhou/mirrors
4. docker常用命令
4.1 镜像相关命令
在docker仓库查找被docker打包的镜像: docker search java
利用docker下载java8: docker pull java:8
查看本地安装的docker镜像: docker images
删除指定镜像: docker rmi java
4.2 容器相关命令
新建并启动容器
使用docker run命令即可新建并启动容器,下面是一些常用的参数:
比如新建并启动一个Nginx:
docker run -d -p 8100:80 nginx
如果当前没有nginx镜像,那么会先自动下载该nginx镜像。
通过浏览器访问:
列出当前运行容器
docker ps
如图可以看到镜像的名称IMAGE,对应的CONTAINER_ID,以及PORTS。
停止容器
docker stop CONTAINER_ID || NAMES
强制停止容器
docker kill CONTAINER_ID
启动已停止的容器
docker start CONTAINER_ID
查看容器所有信息
docker inspect CONTAINER_ID
查看容器日志
持续输出日志(展示88行)
docker logs --tail=88 -f CONTAINER_ID(OR NAMES)
docker container logs CONTAINER_ID
查看容器里的进程
docker top CONTAINER_ID
查看已经创建的容器
docker ps -a
进入运行的容器(在docker容器中使用jmap等命令查看jvm内存等信息)
docker container exec -it CONTAINER_ID /bin/bash 或 docker container exec -it CONTAINER_ID sh
退出容器
exit
重命名一个容器
docker rename old_name new_name
删除容器
docker ps -a 查看所有容器(包括未运行的容器)
docker rm CONTAINER_ID
删除镜像
docker images
docker rmi IMAGE ID
查看一个容器对应的端口映射
docker port 容器名name
4.3 Dockerfile常用命令
5. 构建一个自己定义的nginx docker镜像
创建了一个目录docker,进入该目录下
vim Dockerfile
内容如下:
# Dockerfile文件,自定义一个nginx的index.html
FROM nginx
RUN echo '<h1>This is my nginx Dockerfile<h1>' > /usr/share/nginx/html/index.html
意思是先获得nginx官方镜像,然后我将运行的container容器中nginx的目录下的index.html替换成我的内容。
在Dockerfile文件所在的目录下,执行
docker build -t nginx:mynginx .
mynginx就是一个tag,相当于版本号,"."表示Dockerfile文件所在的路径,在当前目录下。
现在,查看一下本地镜像
docker images
现在已经有本地镜像了,下一步就是新建容器并且运行
docker run -d -p 8101:80 nginx:mynginx
用浏览器访问一下
自定义nginx镜像大功告成!
6. 简单使用docker部署一个微服务项目
这里打算部署一个eureka server,端口号8200。
1. 首先把项目mvn clean install,目的是将项目和项目所依赖的jar包打成一个可执行的jar包,java -jar jar包名.jar;
2. 打成的jar包在项目的target目录下,将jar包上传至Linux服务器的eureka目录下;
3. 将jar包所在的目录创建一个Dockerfile文件 vim Dockerfile,内容为
# 基于哪个镜像 FROM java:8 # 将文件挂载到当前容器 VOLUME /tmp # 复制文件到容器根目录"/",并且命名为app.jar ADD eureka-0.0.1-SNAPSHOT.jar /app.jar
# 声明需要暴露的端口 EXPOSE 8200 # 配置容器启动后执行的命令,java -jar /app.jar ENTRYPOINT ["java","-jar","/app.jar"]
4. 在Dockerfile文件所在目录,使用docker build 命令构建镜像
docker build -t eureka-server:0.0.1 .
检查是否image构建成功: docker images
5. 新建容器并且运行
docker run -d -p 8200:8200 eureka-server:0.0.1
6. 最后访问宿主机的8200端口
该微服务部署成功!
7.docker-compose
https://www.cnblogs.com/theRhyme/p/10607872.html
来源:
图灵学院
零基础用Docker部署微服务的更多相关文章
- Docker部署微服务
部署时需要注!意!: 打开防火墙对应的应用端口!!用于外部访问!!内部互访问则不需要. 和对应数据库,缓存,消息中间件服务等的端口(当然这些服务必须先开启,它们也可使用docker部署开启) ,用于容 ...
- 使用docker部署微服务
https://my.oschina.net/silenceyawen/blog/1819472 http://jvm123.com/2019/08/docker-shi-yong.html 从201 ...
- docker部署微服务遇到的问题二
自己尝试将微服务部署到docker上面,期间按照周立的微服务架构实战13章进行学习 按照书上的步骤,一切部署成功之后,尝试访问,一直没有成功访问,周五部署了两遍 折腾了一下 还是没有找到为啥,周一继续 ...
- Docker部署微服务项目
测试包准备工作 1.spring.io或者ide创建demo工程 spring官网 2.本地demo代码,打包成jar包 使用Dockerfile构建微服务镜像 3.将jar包上传到你的vps lin ...
- docker微服务部署之:六、Rancher管理部署微服务
docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...
- docker入门与部署微服务--学习笔记
最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...
- Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试
一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...
- Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成——部署方案优化
Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成--部署方案优化 之前我们做的方案部署都是只能选择一个微服务部署并只有一台生产服务器,每个微服务只有一个 ...
- 【译文】用Spring Cloud和Docker搭建微服务平台
by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...
随机推荐
- Linux RPS/RFS 实现原理浅析
本文快速解析一下RPS/RFS的基本原理. RPS-Receive Packet Steering 下面这个就是RPS的原理: 其实就是一个软件对CPU负载重分发的机制.其使能的作用点在CPU开始处 ...
- Android标题头滑动渐变,Titlebar滑动渐变,仿美团饿了么标题头渐变;
原理就是滑动中改变透明度: 核心代码: rv.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public vo ...
- Django中的中间件(middleware)
中间件: 在研究中间件的时候我们首先要知道 1 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Djang ...
- Java课程作业之动手动脑(二)
纯随机数发生器 编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. import java.util.Scanner; public class test { public stat ...
- SD-WAN供应商列表
SD-WAN的一个重要思想是,可以使用任何类型的多个物理WAN链路来承载流量,而无需网络工程师进行大量工程设计.相反,SD-WAN解决方案在物理基础设施之上运行覆盖(隧道),抽象出实际链接. SD-W ...
- WebForm(Application,ViewState,Repeater的Command操作)
一.AppliCation: 1.存储在服务器端,占用服务器内存 2.生命周期:永久 3.所有人都可访问的共有对象,一般用作服务器缓存 4.赋值:Application["key" ...
- 关于 build tools
1.build tools是什么 Build Tools 即构建工具是一个把源代码生成可执行应用程序的过程自动化的程序(例如Android app生成apk).构建包括编译.连接跟把代码打包成可用的或 ...
- window.location.search的用法 和 地址栏的的javsscript编码与解码
ocation.search是从当前URL的?号开始的字符串 如:http://www.51js.com/viewthread.php?tid=22720 它的search就是?tid=22720 e ...
- Linux 磁盘管理(分区、创建文件系统、挂载)
Linux设备文件可以分为两类 b : 按块为单位,随机访问设备(块设备文件) 如:硬盘 c : 按字符为单位,线性设备(字符设备文件) 如:键盘 设备文件位于/dev下 主设备号(major n ...
- centos查看命令
1.查看 CPU 物理个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 2.查看 CPU 核心数量 grep 'core id' /proc/ ...