Docker 基本介绍

Docker的定义:Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Tomcat:Tomcat是web容器。在进行web项目开发的时候,经常需要http协议,也就是基于请求和响应,比如你在百度输入一行内容搜索,那么百度服务器如何处理这个请求呢?它需要创建servlet来处理,servlet其实就是java程序,只是在服务器端的java程序,servlet通过配置文件拦截你的请求,并进行相应处理,然后展示给你相应界面。那么servlet如何创建?这时候就要用到tomcat了。这就是tomcat的意义!
Nginx:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Docker和虚拟机的区别:

 

Docker 框架

简介:

Docker使用客户端-服务器(c/s)的架构模式,使用远程api来管理和创建Docker容器。而Docker容器是通过Docker镜像来创建。容器与镜像的关系类似于面向对象变成中的对象与类,其中容器是对象,镜像则是类。

基本概念:

1、镜像(Image) ,镜像是创建容器的模板 ,通常部署在服务器或者云端。它是一个特殊的文件系统,不包含任何的动态数据,在创建容器之后它的内容也不会发生改变。而且镜像是分层存储。

2、容器(Container),容器是一个独立运行的一个或一组应用,其实就是一个进程,但与普通进程不同的是,容器进程运行于属于自己的独立空间。容器是在镜像的存储层之上,建立一个属于容器的层。

3、仓库(Registry),仓库是用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub提供了庞大的镜像集合供使用。

4、客户端(client),客户端通过命令行或者其他工具使用Docker API与docker的守护进程进行通信。

5、主机(host),一个物理或者虚拟的机器,用于执行Docker的守护进程和容器。

6、Docker Machine,Machine是一个简化的Docker安装工具,通过一个简单的命令行即可在相应地的平台上安装docker。

最内层是docker的守护进程。(Daemon是Docker的守护进程,Docker Client通过命令行与Docker Damon通信,完成Docker相关操作)

REST(表述状态转移) API 提供了一种灵活、轻量级的应用程序集成方式,并已成为连接微服务架构中组件的最常用方法。

外层是docker客户端。并在此基础上进行一系列的操作。

Docker安装

Docker可在windows,Ubuntu,macos,服务器等环境下安装。直接按照官网上的安装教程就可以了。

Docker镜像

1、在docker hub上搜索镜像(例如要搜索tomcat):

         docker search tomcat

2、从docker镜像仓库获取镜像的命令是docker pull,其命令格式是:

docker  pull  [选项]  [Docker Registry 地址[:端口号]/]  镜像名[:标签](标签是版本号)

如果直接默认:docker pull  镜像名,版本是最新的。

此时如果没有换源,则是从docker hub中获取。如果换源,则是从换的源中获取。

3、列出镜像:

docker images 或者 dicker image ls

4、删除镜像:

docker  image  rm [选项]  <镜像1> [<镜像2>....]

删除本地镜像常用的命令:

docker  image  rmi  镜像ID  

注意:删除镜像之前需要确认此镜像目前没有被任何容器使用

5、其他辅助命令:

查看本地镜像的IMage ID:

docker  images -q

查看一个镜像的制作历程:

docker  history 镜像名称

6、保存镜像:

用save子命令将本地仓库的镜像保存到当前文件目录下:

docker save -o tomcat.guo.tar  镜像名称

将本地目录下的镜像备份文件导入到本地的docker仓库:

docker load  -i  tomcat.guo.tar(不输出详细信息)

docker load  <  tomcat.guo.tar (输出详细信息)

Docker容器

镜像是类,容器是对象

1、查看容器的状态

docker  ps //查看运行的容器

docker  ps  -a  // 查看所有的容器

docker  container  ls

docker  container  ls  -a

2、启动容器

一种是基于镜像新建的一个容器并启动,一种是将在终止状态的容器重新启动

docker  run  参数 镜像名称:tag  执行的命令

参数 :

-i :保持和docker 容器内的交互,启动容器时,运行的命令结束后,容器依然存活, 没有退出。

-t :为容器的标准输入虚拟一个tty

-d :后台运行容器(守护进程)

--rm :容器在启动后,执行完成命令或程序后就销毁

--name:给容器一个自定义名称

-p:宿主机:内部端口

例如:docker run  --name  tomcat-8081  -p 8081:8080  -d tomcat

docker  start  容器名称(启动一个或多个处于停止中的容器)

3、docker守护状态运行:

如果使用 -d 启动容器之后,由于是在后台运行,所以对于打印的结果不会出在宿主机上面,可以使用下面的命令:

docker  logs  ID或name

4、Docker进入容器

docker  exec -it  容器ID或name  bash

5、docker关闭容器

docker  stop  容器名称

6、删除容器

docker  rm  容器名称

7、在宿主机和容器之间交换文件:

docker  cp  [OPTIOND]  CONTAINER:PATH  LOCALPATH  //容器中复制到宿主机

docker  cp  [OPTIOND] LOCALPATH   CONTAINER:PATH // 宿主机复制到容器中

8、重启容器

docker  restart  容器名称

Docker日志

1、查看日志:

docker  logs   [参数]    容器名称或id

参数:

-since :制定了输出日志开始日期,即只输出指定日期之后的日志

-f:查看实时日志

-t:查看日志产生的日期

-tail=10:查看最后10条日志

Docker数据卷

数据卷:是一个可供一个或多个容器使用的特殊目录,这个文件夹以独立于docker文件系统的形式存在于宿主机中。

特性:(1)可以在容器之间共享和重用

·          (2)对数据卷的修改会立马生效

           (3)对数据卷的更新,不会影响镜像

           (4)数据卷默认会一直存在,即使容器被删除

1、创建数据卷

docker  volume create   数据卷名称(存放到默认目录下)

2、查看数据卷

docker volume inspect 数据卷名称

3、查看全部数据卷信息

docker  volume  ls

4、删除数据卷

docker  volume  rm  数据卷名称

5、应用数据卷

(1)当映射数据卷的时候,如果数据卷不存在,docker会帮你自动创建

docker  run  -v  数据卷名称:容器内路径  镜像ID

(2)直接指定一个路径作为数据卷的存储位置

docker  run  -v  路径:容器内部的路径  镜像ID

Docker 安装

1、安装 nginx

docker  pull  nginx:latest

安装之后可以查看镜像列表,然后运行容器。

2、安装MySQL

(1)搜索镜像

docker  search  mysql

(2)下载镜像

docker  pull  mysql:5.6

(3)根据自己的情况创建MySQL容器

(4)可以访问容器内部

Docker 定制镜像

当我们需要在docker上部署自己的项目时,就需要制作自己的镜像。有两种方式:

(1)从已经创建的容器中更新镜像,并提交这个镜像。

(2)使用dockerfile指令来创建一个新的镜像。

Dockerfile常用命令

1、FROM  ------   指定基础镜像

基础镜像不存在会在docker hub上下载(一般是文件的第一个指令)

FROM  <镜像>:[tag]

FROM  <镜像>@digest [校验码]

2、LABLE  ------- 为dockerfile制作者提供信息

例如:LABLE  maintainer = “xxxxxx” (提供本人信息)

LABLE  version = "1.0" (提供版本信息)

3、WORKDIR   ------在dockerfile中的作用相当于windows下的cd指令

4、ENV

ENV指令可以用于为docker容器设置环境变量,可以用docker  inspect 命令来查看。同时可以用docker  run --env <key>=<value> 来修改环境变量

例如:ENV  JAVA_HOME   /user/local/jdk

5、UESR 

用来切换身份,默认是root,但是权限太大,有风险,建议换。

6、VOLUMRE

创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。  

7、COPY —— 把宿主机中的文件复制到镜像中去。

8、RUN -- 用来执行命令

有两种格式:

(1)shell格式: RUN    命令

(2)exec格式: RUN  ["可执行文件",“参数1”,“参数2”]

9、EXPOSE  ----- 为容器打开指定要监听的端口以实现与外部通信

格式:EXPOSE   协议

不加协议默认是tcp

10、ADD -----类似于COPY指令

ADD将文件从路径<src>复制添加到容器内部路径<dest>

Docker的可视化界面 DockerDesktop

在DockerDesktop中,可以更加方便的时候镜像去创建容器和运行容器,还可以查看数据卷等内容。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值