1.docker相关命令

前提是在linux系统中下载好docker 和docker拉取java

进程相关命令

systemctl start docker #开启docker服务
systemctl stop docker #停止docker服务
systemctl restart docker #重启docker服务
systemctl status docker #查看docker服务状态
systemctl enable docker #设置开机启动docker服务

镜像相关命令

docker images #查看本地镜像
docker images -q #查看本地所用镜像
docker pull 镜像名称
docker pull redis #下载最新本版redis
docker pull redis:5.0 #下载5.0版本redis
注:镜像版本在hub.docker.com搜索查看
#删除镜像:删除本地镜像
 docker rmi 镜像id或镜像名  #删除镜像
 docker images -q #查看所有的镜像列表
 docker rmi 'docker images -q' #删除所有本地镜像

容器相关命令

docker ps #查看正在运行的容器
docker ps -a #查看所有容器
创建并启动容器
docker run 参数
 · -i:保持容器运行,通常与-t同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
 · -t:为容器重新分配一个伪输入终端,通常与-i使用。 
 · -d:一送守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
 · -it:创建容器一般称为交互式容器,-id创建的容器一般称之为守护式容器
 · --name:为创建的容器命名
docker run -it --name=c1 mysql:5.7 /bin/bash #创建交互式容器
docker run -id --name=c2 mysql:5.7 /bin/bash #创建守护式容器
docker run -it c2 /bin/bash  #进入容器
docker stop 容器名称 #停止容器
docker start 容器名称  #启动容器
docker rm 容器名称 #删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除
docker inspect 容器名称  #查看容器信息

2.dockerfile

·Dockerfile 是一个文本文件
·包含了一条条的指令 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
·对于开发人员:可以为开发团队提供一个完全一致的开发环境
·对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
·对于运维人员:在部署时,可以实现应用的无缝移植

我主要使用dockerfile关键字如下

关键字作用备注
FROM指定父镜像指定dockerfile基于那个image构建
MAINTAINER作者信息用来标明这个dockerfile谁写的
ADD添加文件build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来 源于远程服务
CMD容器启动命 令提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,“param2”]

注:最后会给出dockerfile全部关键字

#具体代码 
mkdir ~/docker-files 
cd ~/docker-files 
vim centos_dockerfile

dockerfile具体内容

FROM centos:7 
MAINTAINER lxs <lxs@lxs.cn> 
RUN yum install -y vim 
WORKDIR /usr 
CMD /bin/bash
docker build -f ./centos_dockerfile -t lxs_centos:1 .  #创建镜像
· -f:镜像文件 
· -t:新镜像名 
· . 寻址路径
#进入看效果 
docker run -it --name=c2 lxs_centos:1

3.发布Springcloud项目

重点来了
先给各位看一下效果图

首先搭建spring Cloud Eureka
1.Eureka是微服务注册中心所有微服务需要再注册中心Spring Cloud Eureka生成服务列表,Spring Cloud Eureka给服务消费者提供服务列表
2.将在IDEA中的微服务项目打包生成jar包,把jar包转移到linux目录下,在docker生成镜像再生成容器,外机(win浏览器)访问服务。

操作如下

win访问效果如下

按照上面的操作把springboot微服务打包成jar,注意上图的DS Replicas下面的ip,172.17.0.2这个ip是注册中心的ip 修改所有微服务需要注册在eureka的ip

接下的操作如同,发布springboot项目

4.整体效果图


最后献上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上下文可以来源于远程服务
VOLUME定义外部可以挂载的数据卷指定build的image那些目录可以启动的时候挂载到文件系统中启动容 器的时候使用 -v 绑定 格式 VOLUME [“目录”]
EXPOSE暴露端口定义容器运行的时候监听的端口启动容器的使用-p来绑定暴露端口格 式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR工作目录指定容器内部的工作目录如果没有创建则自动创建如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
USER指定执行用户指定build或者启动的时候用户在RUN CMD ENTRYPONT执行的时候的用户
ONBUILD触发器当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后会执行 ONBUILD的命令但是不影响当前镜像用处也不怎么大
STOPSIGNAL发送信号量到宿主机该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出.
SHELL指定执行脚本的shell指定RUN CMD ENTRYPOINT 执行命令的时候使用的shell