docker学习笔记

       docker是一种基于虚拟内核技术的虚拟机,我们常用的虚拟机一般都会将硬件和软件系统全部虚拟出来,在内存中划出一部分空间来当做虚拟机的内存,这样会占用宿主机相当一部分的资源,而码头工人只会虚拟出系统要具备的基础功能,能够运行即可,其他的功能由我们根据需求来添加。这就赋予了泊坞窗一种优势,就是使用多少内存,就从宿主机中划出多少内存。相比通用的虚拟机更加轻便,灵活。

       docker近些年来由于隔离性好,安装部署升级方便快捷等原因收到热捧,尤其是其仿照混帐生成了一套类似拉,推的机制,用于更新镜像,更加方便部署.docker主要分为三部分镜像,容器,仓库。其中镜像是其他部分的基础,容器和仓库都是基于镜像发展开来的。

       docker镜像有三种生成方式,其一是使用公共仓库直接下载docker pull imageName:Tag。其二是使用dockerfile文件,生成镜像,docker build -t build_repo / first_image / tmp / docker_builde t后面是标签名称。其三是使用加载和保存导出导入镜像。第二种最为常用,也是最为灵活。可以使用docker image ls查看本地镜像也可以使用docker image rm id删除镜像,docker inspect查看某个镜像的具体信息。我们可以使用dockerfile创建镜像使用建立命令创建镜像。

       dockerfile的结构主要为基础镜像信息,维护者信息,镜像操作指令和容器启动时执行指令。使用从指明所基于的镜像名称,MAINTAINER指定维护者信息一般使用邮箱,然后是镜像操作指令例如运行指令将对容器镜像执行跟随的命令,每运行一条运行指令,镜像添加新的一层,并提交。镜像是只读的,所以对镜像的修改会在镜像上添加一个修改层。最后是CMD指令,制定容器运行时的命令。

     在这里我们使用一个例子来说明

FROM openjdk:8
MAINTAINER maintainerName "email"
ADD mtg.jar /web/app/mtg/mtg.jar
ADD etc/ /web/app/mtg
RUN mkdir -p /web/app/mtg/home/backup
VOLUME ["/web/app/mtg/home/mtg/work", "/web/app/mtg/home/mtg-core/work", "/web/app/mtg/home/logs", "/web/app/mtg/home/backup"]
CMD ["java", "-Dapp.home=/web/app/mtg/home", "-jar", "/web/app/mtg/mtg.jar"]

来自的的的的openjdk:8表示这个应用的依赖环境是jdk8;

维护者是维护者的信息;

加表示将宿主机中的文件添加到对应的容器的目录下;

运行表示在镜像中生成过程中执行的指令

volume表示生成的挂在点,我们可以利用挂载点将数据或者配置文件放到宿主机中保留数据或者修改配置文件,默认存放在/ var / lib / docker / volumes。在镜像中创建挂载点后可以在容器中绑定挂载点到宿主机目录。

ARG和ENV都是声明变量,但是他们有个区别ARG可以通过docker build时候使用-build-arg [=]来传递参数当镜像编译成功后,不会保留值,ENV制定的变量值,会一直保存。

出口声明镜像内服务监听的端口,暴露给其他容器或主机。

入口点和CMD差不多都是容器运行后执行的指令。每个dockerfile文件只这两个命令都只能声明一个。

使用.dockerignore文件类似与混帐的gitignore文件,不让一些无关的文件数据发送到搬运工服务端。

         docker create器,容器是镜像的一个运行实力例,带有运行时需要的可写文件层.docker容器是独立运行的一个或一组应用,以及他们必须的运行环境。使用docker create -it镜像名创建使用ps -a查看所有的容器,使用docker start来启动,一般使用run命令就包括了创建和启动。使用docker pause暂停容器,stopt停止容器.docker可以映射容器内应用的服务端口到本地宿主机,另一个是互联网机制实现多个容器间通过容器名来快速访问。可以再启动的时候通过命名-P随机制定一个端口映射到容器,使用-p可以制定端口映射到容器。我们现在一般使用搬运工 - 撰写来管理多个容器,撰写可以通过一个单独的文件摸版搬运工-compose.yml,来定义一组相关联的应用容器为一个服务栈例子如下。

version: "3"
services:
  web:
    image: mtg:latest//镜像名称
    volumes://将dockerfile文件中的挂在点绑定
      - /home/liujintao/mtg/app_data:/web/app/mtg/home/logs
      - /home/liujintao/mtg/app_data:/web/app/mtg/home/backup
      - /home/liujintao/mtg/app_data:/web/app/mtg/home/mtg/work
      - /home/liujintao/mtg/app_data:/web/app/mtg/home/mtg-core/work
    ports://与宿主机的映射端口
      - 8088:8084
    restart: always
    networks:
      - backend
    links://别名,容器的别名,compose中的容器可以互相使用容器名连接,别名会更加安全
      - "db:cn"
  db:
    image: postgres:9.6
    ports:
    - 5434:5432
    volumes:
    - /home/liujintao/mtg/db_data:/var/lib/postgresql/data
    - /home/liujintao/mtg/db_set:/etc/postgresql
    - /home/liujintao/mtg/db_log:/var/log/postgresql
    restart: always
    networks:
    - backend
    environment:
    - POSTGRES_USER=mtgczj
    - POSTGRES_PASSWORD=do600485
    - POSTGRES_DB=mtgczj
networks:
  backend:

如果想要使用宿主机的数据库,直接链接宿主机的ip就可以,如果想要链接一个容器中的数据库,直接使用容器的名字当ip链接就可以。使用docker-compose up启动容器,使用docker-撰写停止容器并且删除容器下的挂载目录文件。

至于仓库暂时还没有用到,后面用到了在补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值