• docker常见命令


    • 查看docker版本:docker version
    • 显示 Docker 系统信息,包括镜像和容器数等:docker info
    • 登录到一个镜像仓库:docker login -u 用户名 -p 密码
    • 登出一个镜像仓库:docker logout
    • 显示镜像历史记录: docker history
    • 查找镜像: docker search [OPTIONS] TERM
    • 拉取docker镜像: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    • 上传docker镜像: docker push [OPTIONS] NAME[:TAG]
    • 查看docker本地主机上的镜像:docker images
    • 删除镜像: docker rmi [OPTIONS] IMAGE [IMAGE...]
    • 运行docker镜像:docker run hello-world
    • 查看那些容器正在运行:docker ps
    • 查看所有容器:docker ps –a
    • 创建容器:docker create
    • 启动容器:docker start 容器名/容器id
    • 停止容器:docker stop 容器名/容器id
    • 重启容器:docker restart 容器名/容器id
    • 从容器创建一个镜像:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

    一、运行python应用

    拉取python镜像

    docker pull python:3.6-alpine
    docker pull redis

    运行python容器

    docker run --name redis -d redis:latest redis-server --appendonly yes
    docker run -itd -p 1111:5000 --name style1 --link redis:redis-server -v /Users/name/Documents/docker/test:/code python:3.6-alpine

    参数说明: --name style1 : 把容器命名为style1
    -itd: i 以交互模式运行容器 t  为容器重新分配一个伪输入终端 d 后台运行容器,并返回容器ID 注意如果不加上it的话运行Python容器后自动关闭
    -v /Users/name/Documents/docker/test:/code:将主机中/Users/name/Documents/docker/test目录挂载到容器的/code
    python:3.6-alpine引入Python镜像
    redis-server --appendonly yes开启持久化存储
    --link可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信
    以命令行模式进入容器

    docker exec -it style1 sh

    安装支持&执行脚本

    pip install -r requirements.txt
    python /code/app.py

    访问http://localhost:1111/查看结果

    二、基于 Dockerfile 生成 Docker 镜像

    部署redis

    docker pull redis
    docker run --name redis -d redis:latest redis-server --appendonly yes

    部署flask应用--编写Dockfile

    #基于的基础镜像
    FROM python:3.6-alpine
    #维护者信息
    MAINTAINER name lkr
    #添加代码到code文件夹
    COPY . /code
    #设置code文件夹是工作目录
    WORKDIR /code
    #安装支持
    RUN pip install -r requirements.txt
    CMD python app.py

    制作镜像

    docker build -t test2 .

    -t 用来指定用户信息、tag等 . 是当前目录,用来寻找 Dockerfile
    运行镜像

    docker run -itd -p 1112:5000 --name style2 --link redis:redis-server -v /Users/name/Documents/docker/test:/code test2 

    访问http://localhost:1112/查看结果

    FROM:指定这个Dockerfile基于哪一个base image构建 eg: FROM centos # 使用base images
    LABEL:类似于注释、Metadata eg: LABEL version = "1.0”
    RUN:运行命令安装软件 eg: RUN pip install -r requirements.txt
    WORKDIR:设定当前工作目录,类似Linux系统中的cd命令 eg: WORKDIR /test # 如果没有该目录,则会自动创建
    ADD和COPY:在Dockerfile中ADD和COPY作用相似,都是把本地的文件添加到docker image中。
    区别:ADD不仅可以添加文件,还可以解压缩文件,COPY不可以解压缩文件。
    eg: ADD test.tar.gz / # 添加到image的根目录并且解压
    COPY hello test/
    ENV:设置环境变量或者一些常量 eg: ENV MYSQL_VERSION 5.6 
    VOLUME:向基于镜像创建的容器添加卷 eg: VOLUME ["/data"]
    EXPOSE:设置容器暴露的端口,可以指定一个或多个端口 eg: EXPOSE 80
    CMD:设置容器启动后默认执行的命令和参数 
    eg: CMD ["executable","param1","param2"] # 执行形式,这是首选形式
    CMD command param1 param2 # 壳形式
    ENTRYPOINT:设置容器启动时运行的命令,可以让容器以应用程序或者服务器的形式运行 
    eg: ENTRYPOINT ["docker-entrypoint.sh"]
    RUNCMD、ENTRYPOINT对比:
    RUN 执行命令并创建新的image layer
    CMD 设置容器启动后默认执行的命令和参数
    ENTRYPOINT 设置容器启动时运行的命令

    三、基于 Docker Compose快速部署

    1.从github上下载docker-compose二进制文件安装

       下载最新版的docker-compose文件 
      $ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      添加可执行权限 
      $ sudo chmod +x /usr/local/bin/docker-compose
      测试安装结果 
      $ docker-compose --version 
      docker-compose version 1.16.1, build 1719ceb

    2.pip安装
    $ sudo pip install docker-compose

    version: "3"
    services:
        flask:
            #指定 Dockerfile 所在文件夹的路径
            build: .
            #指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式。
            container_name: style3
            #暴露端口信息
            #使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。
            ports:
                - "1234:5000"
            #数据卷所挂载路径设置
            volumes: 
                - /Users/name/Documents/docker/test4/:/code
            #解决容器的依赖、启动先后的问题
            depends_on:
                - redis
            #允许容器中运行一些特权命令
            privileged: true
            #指定容器退出后的重启策略为始终重启。该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always 或者 unless-stopped。
            restart: always
        redis:
            image: redis:alpine

    运行compose项目
    将 dockerfile、requirements.txt、docker-compose.yml、app 文件夹放在同一目录,运行命令 docker-compose up

    $ ls               
    Dockerfile         app.py             docker-compose.yml requirements.txt
    $ docker-compose up

    访问http://localhost:1234/查看结果

    常用命令:
    docker-compose up:启动yml定义的所有服务
    docker-compose stop:停止yml中定义的所有服务
    docker-compose start:启动被停止的yml中的所有服务
    docker-compose restart:重启yml中定义的所有服务
    docker-compose kill:停止某个服务
    docker-compose ps:查看已经启动的服务状态
    docker-compose –version:查看compose的版本

    docker-compose logs:查看服务日志输出

    docker-compose build:构建或者重新构建服务

    docker-compose up -d // 后台启动并运行容器

  • 相关阅读:
    魔兽70TBC猎人常用宏
    魔兽70TBC猎人宝宝技能汇总
    redis常用概念
    mongodb分片集群开启安全认证
    mongodb集群搭建(分片+副本)
    mongodb 用户权限控制
    greenplum数据迁移
    greenplum资源队列
    GreenPlum 集群常用命令
    COCOS 实现Player玩家控制的左右控制,实现马里奥一样的移动
  • 原文地址:https://www.cnblogs.com/turningli/p/12493399.html
Copyright © 2020-2023  润新知