zoukankan      html  css  js  c++  java
  • Docker初学笔记

    Docker项目的目标是实现轻量级的操作系统虚拟化解决方案

    学习课程链接:http://www.testclass.net/docker/03-images

    1.docker:

    名词:仓库、镜像、容器

    仓库有很多镜像,我们通过docker pull连接仓库下载镜像

    下载镜像一般默认为下载latest 标签的,如果要下载特定的版本,就在命令后加版本号

    下载镜像以后就可以通过镜像创建容器

    最后启动容器就可以启动对应的服务

    2.一些简单的命令:

    列出本地所有的镜像列表:docker images

    拉取仓库里的jenkins镜像:docker pull jenkins/jenkins

    启动容器:

      启动一个新的容器:

      docker run -d --name myjenkins -p 8099:8080 jenkins/jenkins

        -d:以守护进程运行(和linux里的命令含义一样)

        --name:容器名字

        -p:端口映射,将容器的8080端口映射到主机的8099端口上,这样主机上直接打开连接 http://localhost:8099/ 即可访问那个镜像的功能

        jenkins:启动容器的镜像

        当利用docker run 来创建容器时,Docker在后台运行的标准操作包括:

      •   检查本地是否存在指定的镜像,不存在就从公有仓库下载
      •   利用镜像创建并启动一个容器
      •   分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
      •   从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
      •   从地址池配置一个IP地址给容器
      •   执行用户指定的应用程序
      • 执行完毕后容器被终止  

      启动一个以前已经制作好的容器:docker start 容器ID

    停止容器:docker stop 容器ID

    删除容器:docker rm 容器ID

    删除镜像:docker rmi 镜像名

    查看容器列表(可以获取到容器ID):docker ps -a

    查看日志(比如有时候设计到前端代码的编译,可能很慢想看看日志进行到哪一步):docker logs 容器ID

    3.我们常使用哪些镜像:

      1)Nginx

      2)jenkins:这里有一个坑,如果直接【docker pull jenkins】pull下来的jenkins特别旧,里面都没法装很多插件,所以要【docker pull jenkins/jenkins】

        如果pull的时候很慢,可以参考另一篇帖子《Mac配置docker阿里云加速器

      3)selenium Grid,用于分布式自动化测试,即:一套selenium代码运行在多个环境上——多么契合docker呀

        http://www.testclass.net/docker/07-docker-selenium

    4.dockerfile文件分析——Dockerfile 中每一条指令都创建镜像的一层

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

       首先必须要有FROM,类似于python的导包,只不过这里注明的是镜像名

      ENV:环境变量(这个要和容器启动时通过-e|--env注入的要区分,ENV里配的只会作用于容器启动的这个过程内,只要容器build完了,ENV就不起作用了,而-e会在容器运行的时候一直起作用)

        比如更改docker jenkins里的格林威治时间为北京时间就需要在docker run命令里使用-e|--env注入

        docker run —name myjenkins -d -p 8099:8080 --env JAVA_OPTS='-Duser.timezone=GMT+08' jenkins/jenkins

      RUN:就各种操作命令,最好写在一行,因为docker是一个联合文系统,RUN的行数越多,它的分层就越多

      CMD:默认启动容器时执行,一般写个一直执行的bash

      RUN在容器build时运行,CMD在启动容器时执行

      学习:http://www.testclass.net/docker/08-dockerfile

      dockerfile编写完成后可以制作镜像:

        $ touch Dockerfile

        $ vim Dockerfile

        $ docker build -f Dockerfile -t ubuntu-py:v1 .

        -t 标记来添加 tag,指定新的镜像的用户信息。

        【.】 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径

        可以看到build 进程在执行操作。它要做的第一件事情就是上传这个 Dockerfile 内容,因为所有的操作都要依据 Dockerfile 来进行。 然后, Dockfile 中的指令被一条一条的执行。每一步都创建了一个新的容器,在容器中执行指令并提交修改(就跟之前介绍过的docker commit一样)。当所有的指令都执行完毕之后,返回了最终的镜像 id。所有的中间步骤所产生的容器都被删除和清理了。

      学习:http://www.testclass.net/docker/10-compose

  • 相关阅读:
    事件委托应用:在父控件中创建子控件,并接收值
    填充树节点
    JAVA Eclipse如何安装Swing
    JAVA Eclipse开发Android如何设置滚动条最大值最小值
    JAVA Eclipse开发Android如何让屏幕保持为竖直或水平状态
    JAVA Eclipse开发Android如何让超出界面的部分自动显示滚动条
    JAVA Eclipse开发Android程序如何自定义图标
    JAVA Eclipse开发Android程序会经常闪退是怎么回事
    JAVA Eclipse的Android文件结构是怎么样的
    JAVA Eclipse的Android的进程和生命周期是什么
  • 原文地址:https://www.cnblogs.com/lybolg/p/13811774.html
Copyright © 2011-2022 走看看