三分钟轻松搞定docker,建议收藏,评论继续送书

目录

1、docker 是啥

1.1 docker概念

1.2 docker 和虚拟机的区别

1.3 docker 的架构

2、dockerfile 制作

3、常用的docker命令

4、一个例子


做了好久的游戏,感觉和外面的技术有点脱节,游戏公司的技术基本上都是固定的,因为生产效率第一,所以更新换代比较慢。作为一个程序不能停止学习,因为停止学习就会被社会抛弃,今天聊一下docker ,这个现在比较火的交付容器技术。还不赶紧学起来。

1、docker 是啥

1.1 docker概念

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

换句人话说docker 就是在部署的时候屏蔽环境细节的一个环境。

1.2 docker 和虚拟机的区别

docker 是更轻量级的虚拟机,就是一个软件,更节省系统资源

Docker 容器将软件以及它运行安装所需的一切文件(代码、运行时、系统工具、系统库)打包到一起,这就保证了不管是在什么样的运行环境,总是能以相同的方式运行。就好像 Java 虚拟机一样,“一次编写,到处运行(Write once, run anywhere)”,而 Docker 是“一次构建,到处运行(Build once,run anywhere)

1.3 docker 的架构

client 就是我们发送命令的地方,也是我们常操作的地方

docker host 就是我们服务器上的容器,也是app 运行的地方

registry 就是存放app 的地方,可以搭建私有的仓库,官方的Docker hub是一个用于管理公共镜像的好地方。

三分钟轻松搞定docker,建议收藏,评论继续送书_第1张图片

2、dockerfile 制作

dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

Docker通过读取Dockerfile中的指令自动生成映像。

Dockerfile的基本结构

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

Dockerfile文件说明

Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以字符开头则被视为注释。可以在Docker文件中使用RUNCMDFROMEXPOSEENV等指令。

三分钟轻松搞定docker,建议收藏,评论继续送书_第2张图片

# 基础镜像
FROM java:8
# 默认工作空间
VOLUME /tmp
WORKDIR /opt/his
# 复制为ecard
ADD target/server-adapter-0.0.1-SNAPSHOT.jar /opt/his/server-adapter.jar
ADD run.sh /opt/his/run.sh
​
RUN bash -c 'touch /server-adapter.jar'
# 时钟
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#暴露端口对外
EXPOSE 9083
EXPOSE 9081
#执行 脚本
ENTRYPOINT ["bash","/opt/his/run.sh"]
 
  

3、常用的docker命令

docker ps 列出容器

配合 grep 使用,查出自己的app的容器id :d4f5ae7107f3

docker inspect : 获取容器/镜像的元数据,可以查看自己配置的环境变量和挂载的目录

docker top :查看容器中运行的进程信息,支持 ps 命令参数。

docker logs -f 跟踪日志输出

docker exec :在运行的容器中执行命令 docker exec -it cid bash

docker cp :用于容器与主机之间的数据拷贝 docker cp src dest

docker rm :删除一个或多个容器。 -f 强制删除一个运行中的容器 docker

docker start :启动一个或多个已经被停止的容器

docker stop :停止一个运行中的容器

docker restart :重启容器

docker images 来列出本地主机上的镜像

-v 挂载的只能

有几点需要注意:

  • host机器的目录路径必须为全路径(准确的说需要以/~/开始的路径),不然docker会将其当做volume而不是volume处理

  • 如果host机器上的目录不存在,docker会自动创建该目录

  • 如果container中的目录不存在,docker会自动创建该目录

  • 如果container中的目录已经有内容,那么docker会使用host上的目录将其覆盖掉

volume也是绕过container的文件系统,直接将数据写到host机器上,只是volume是被docker管理的,docker下所有的volume都在host机器上的指定目录下/var/lib/docker/volumes。

将my-volume挂载到container中的/mydata目录:

4、一个例子

下面是一个在公司使用的启动脚本,主要做了几件事情

注入环境变量

挂载目录

暴露端口

设置文件镜像

 

 三分钟轻松搞定docker,建议收藏,评论继续送书_第3张图片

全面。本书从并发的底层核心技术、互联网应用框架、数据处理等三部分对高并发系列技术做了系统讲解。
(2)实用。本书以实战化训练为宗旨,用详尽且经典的案例阐述了 Java大数据及高级编程中的重点、难点。书中案例由真实项目演化而来,既体现了所述知识点的精华,又屏蔽了无关技术的干扰。
(3)案例完整。案例都是以“理论讲解 环境搭建 完整代码及分析 运行截图”这种完善的结构进行讲解,考虑到了读者可能会遇到的各种问题。

京东自营购买链接:

《亿级流量Java高并发与网络编程实战》(颜群)【摘要 书评 试读】- 京东图书

当当自营购买链接:

《亿级流量Java高并发与网络编程实战》(颜群)【简介_书评_在线阅读】 - 当当图书

大家点赞关注,三天后在留言的同学中抽取送两本书

注:如果中奖了没关注则放弃

你可能感兴趣的:(香菜聊游戏,docker,运维,java)