• 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漏洞靶场环境,可以参考和理解里面的配置文件,不懂的参数多谷歌百度,摸索几次就会用了。

  • 相关阅读:
    网络流与线性规划24题 之 餐巾计划问题
    待刷题目分类(一)
    bzoj1787 [Ahoi2008]Meet 紧急集合
    Hoj2634 How to earn more?
    poj3281 Dining
    浅谈数论(三)水仙花数
    poj1637 Sightseeing tour
    动态规划的思考(1)
    网络流-最大流问题 ISAP 算法解释(转自Renfei Song's Blog)
    poj1273 Drainage Ditches
  • 原文地址:https://www.cnblogs.com/he1m4n6a/p/9251513.html
Copyright © 2020-2023  润新知