Docker的入门学习、常规使用

一、简介

  1. 为什么会有docker?

对于传统的web等应用(例如 单体前后分离的 SpringBoot+Vue),由于调用链路简单、依赖不复杂,一般是采用将 直接打包jar包到配有JDK环境的Linux中进行运行。但随着云原生、微服务、DevOps等概念的提出,互联网体系中程序运行依赖越来越复杂,服务越来越越多,对于运维和开发开始越来越容易产生冲突。环境配置也是最头疼的一个问题(SpringBoot也是针对配置炼狱提出的,软件应当追求一种 复用,注重业务和效率,而配置环境往往是固定化的模板,不需要过多关注,而面向对象,和即将谈到的docker中 对象、类;容器和镜像,则有点 模板公用,实例具体的 ,减少不必要的麻烦的意味)。而docker则是基于该背景,针对该问题所提出的。

  1. docker是什么?

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

  1. docker 的优点

从概念定义中,也可以看出docker的一些优点(个人理解)如下:

  • 可移植性高,可以将应用进行打包运行在任何的docker容器中
  • 安装配置快捷,具有镜像仓库(本地和远程,类似git)进行管理镜像,而容器也可以进行生产制作镜像(另外,还可以通过dockerfile进行生产)。
  • 小巧方便,容器是一个精简版的OS+拓展的应用(按需引入)-联合系统

docker的优势(PHP网):1、更高效的利用系统资源;2、更快速的启动时间;3、一致的运行环境;4、持续支付和部署;5、更轻松的迁移;6、更轻松的维护和拓展。

二、Docker 的入门安装使用

  1. 安装

使用官方安装脚本自动安装
安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh
  1. 执行
$ sudo systemctl start docker
  1. 基本指令

在这里插入图片描述

  1. 使用docker的基本步骤
  • 需求定位:明确自己需要跑什么软件?(mysql,jar,nginx,reids??)
  • 制作模板镜像(类似定义抽象类):采用dockerfile、commit、或直接从仓库拉取镜像;对于仓库也就是别人制定好的模板,类似前人造好的轮子;对于commit,dockerfile则是自己定制化、按需引入的模板。
  • 执行、运行:将镜像实例化,跑起来,注意结合 -p,-v镜像操作是否需要进行文件挂载,端口映射,如果程序需要将端口暴露出去访问那则需要-p进行端口映射。
  • 查看容器是否跑起来,用端口指令查看容器内部和服务器端口情况。在这里插入图片描述

三、简单的制作一个dockerfile,进行跑一下jar包

  1. 准备工作
    整理环境需要:jdk17+jar包即可

  2. 制作镜像文件(重点掌握 CMD,FROM,ADD,RUN,WORDDIR)

# 基础镜像
FROM ubuntu
# 环境变量
ENV WORK_DIR /usr/local
ENV JAVA_DIR /usr/local/java

WORKDIR $WORK_DIR

# 执行运行安装管理器-并安装 vim文本编辑器
CMD apt-get update
CMD apt-get install -y vim

CMD mkdir $JAVA_DIR
# 相对路径!将jdk打入
# /usr/java/jdk17
ADD jdk17.tar.gz $JAVA_DIR
ADD app80.jar app80.ja
CMD echo "success ok"
EXPOSE 80
# 也可 进入容器再进行运行
# CMD ["nohup","/usr/local/java/bin/java","-jar","app80.jar","&"]
  1. 将jar包和Dockerfile,jdk文件放放一个文件夹下(当然若有做好的jdk版的镜像,可直接FROM 该镜像,无需这么麻烦了)
    在这里插入图片描述

  2. 采用相应命令(docker build -t app80:1 .)进行制作镜像

  3. docker images查看是否制作成功

  4. run起来–注意映射端口,否则只能在容器内部跑起来,外部访问不到(容器沙箱机制,接口相互隔离)
    在这里插入图片描述

  5. 另外打开一个窗口,在Linux服务器下查看该端口是否的确启动起来了,或者docker ps查看情况

  6. 测试访问该资源

四、总结

  1. 个人感想

Linux基础指令是基础知识、需要去从文件管理、网络管理、进程这些概念去理解。docker的容器、镜像、与服务器的关系的概念需要清晰,一个容器就是一个简易版的Linux,(必须基于Linux内核,对于Windows需要安装虚拟机),我们的应用在此基础上加强。相对于虚拟机,它更加轻便、小巧。随着互联网软件迭代的越来越快,像具有一定公用性的配置比较形式化,运维也渐渐因docker进行解脱。

  1. docker的进阶学习
  • 复杂软件的安装,例如Redis集群
  • Compose,进行对docker容器的编排(由于一个容器对应一个应用,由于微服务服务较多,需要对容器进行合理的编排,建议10个以上则)
  • Docker的底层原理,network等
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值