zoukankan      html  css  js  c++  java
  • docker笔记

    什么是docker

    Docker 属于 Linux 容器(三大特点:启动快、资源占用少、体积小)的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。 总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样

    docker用途

    docker主要用途,目前分为三大类:

    1、提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

    2、提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

    3、组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

    docker安装

    mac下:https://download.docker.com/mac/stable/Docker.dmg 下载安装即可 安装完后运行,终端可以通过docker info看是否安装成功

    linux下:yum install -y docker-engine

    运行 docker info 查看是否安装成功

    docker常用命令

    镜像类

    • docker build --rm=true . 构建镜像
    • docker pull ${IMAGE} 安装镜像
    • docker images 显示已经安装的镜像
    • docker images --no-trunc 显示已经安装镜像的详细内容
    • docker rmi ${IMAGE_ID} 删除指定镜像
    • docker rmi $(docker images | grep "^" | awk "{print $3}") 删除所有没有标签的镜像
    • docker rm $(docker ps -aq) 删除所有的镜像
    • docker rmi $(docker images --quiet --filter "dangling=true") 删除未使用的镜像

    容器类

    • docker run 运行容器
    • docker ps 显示正在运行的容器
    • docker ps -a 显示所有的容器
    • docker stop ${CID} 停止指定容器
    • docker stop docker ps -q 停止所有正在运行的容器
    • docker ps -a --filter "exited=1" 显示所有退出状态为1的容器
    • docker rm ${CID} 删除指定容器
    • docker ps -a | grep wildfly | awk '{print $1}' | xargs docker rm -f 使用正则表达式删除容器
    • docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }') 删除所有退出的容器
    • docker rm $(docker ps -aq) 删除所有的容器
    • docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID} 显示指定容器的IP
    • docker attach ${CID} 进入容器
    • docker exec -it ${CID} bash 进入容器打开一个shell
    • docker ps | grep wildfly | awk '{print $1}' 通过正则表达式查找容器的镜像ID  

    其中attach进入容器,退出后容器也会退出,而exec只是退出当前shell,容器不会退出。

    docker-compose

    Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 
    Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

    安装:

    sudo pip install docker-compose

    主要配置两个文件Dockerfile和docker-compose.yml。dockerfile 用来定义容器, docker-compose.yml 用于把多个容器连接到一起同时运行。

    简单案例:使用docker-compose构建一个flask web应用

    首先新建一个web目录,创建app.py文件,内容如下:

    from flask import Flask
    from redis import Redis
    
    app = Flask(__name__)
    redis = Redis(host="redis",port=6379)
    
    @app.route("/")
    def hello():
        count = redis.incr('hits')
        return 'hello world! {}'.format(count)
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0",debug=True)

    编写Dockerfile文件

    FROM python:3.6-alpine
    ADD . /code
    WORKDIR /code
    RUN pip install redis flask
    CMD ["python","app.py"]

    容器构建完毕,如何连接这些容器,由docker-compose.yml文件定义

    version: '2‘
    services:
        web:
            build: .
            ports:
                - "6379:6379"
        redis:
            images: "redis:alpine"

    至此配置文件已写好,然后执行

    docker-compose build #构建
    docker-compose up -d #后台运行服务

    docker-compose搭建服务真的很方便,搭建其他服务可以参照上述配置,仿造着写就熟悉了。比如https://github.com/vulhub/vulhub 这个docker漏洞靶场环境,可以参考和理解里面的配置文件,不懂的参数多谷歌百度,摸索几次就会用了。

  • 相关阅读:
    父子进程 signal 出现 Interrupted system call 问题
    一个测试文章
    《淘宝客户端 for Android》项目实战 html webkit android css3
    Django 中的 ForeignKey ContentType GenericForeignKey 对应的数据库结构
    coreseek 出现段错误和Unigram dictionary load Error 新情况(Gentoo)
    一个 PAM dbus 例子
    漫画统计学 T分数
    解决 paramiko 安装问题 Unable to find vcvarsall.bat
    20141202
    js
  • 原文地址:https://www.cnblogs.com/he1m4n6a/p/9251513.html
Copyright © 2011-2022 走看看