• docker入门命令行


    =================================================================================================================================
    安装:
    https://help.aliyun.com/document_detail/60742.html

    # step 1: 安装必要的一些系统工具
    sudo apt-get update
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    # step 2: 安装GPG证书
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    # Step 3: 写入软件源信息
    sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    # Step 4: 更新并安装Docker-CE
    sudo apt-get -y update
    sudo apt-get -y install docker-ce
    # 安装指定版本的Docker-CE:
    # Step 1: 查找Docker-CE的版本:
    # apt-cache madison docker-ce
    # docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
    # docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
    # Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
    # sudo apt-get -y install docker-ce=[VERSION]

    查看:
    docker info
    =================================================================================================================================

    默认安装完 docker 后,每次执行 docker 都需要运行 sudo 命令,非常浪费时间影响效率。如果不跟 sudo,直接执行 docker images 命令会有如下问题:

    FATA[0000] Get
    http:///var/run/docker.sock/v1.18/images/json: dial unix /var/run/docker.sock:
    permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
    于是考虑如何免 sudo 使用 docker,经过查找资料,发现只要把用户加入 docker 用户组即可,具体用法如下:

    //如果还没有 docker group 就添加一个
    sudo groupadd docker
    //将用户加入该 group 内。然后退出并重新登录就生效啦。
    sudo gpasswd -a ${USER} docker
    //重启 docker 服务
    sudo service docker restart
    //切换当前会话到新 group
    newgrp - docker

    注意,最后一步是必须的,否则因为 groups 命令获取到的是缓存的组信息,刚添加的组信息未能生效,所以 docker images 执行时同样有错。

    ===============================================================================================================================
    https://zhuanlan.zhihu.com/p/21252578

    ## 运行第一个容器:
    $ sudo docker run -i -t ubuntu /bin/bash
    ...
    root@f7cbdac22a02:/#

    -i标志保证容器中STDIN是开启的,尽管我们并没有附着到容器中。
    -t标志则是另外“半边天”,它告诉Docker为要创建的容器分配一个伪tty终端
    示例中使用的是ubuntu镜像。ubuntu镜像是一个常备镜像,也可以称为“基础”(base)镜像,它由Docker公司提供
    最后,我们告诉Docker在新容器中要运行什么命令,在本例中我们在容器中运行/bin/bash命令启动了一个Bash shell。

    ## 检查容器的主机名
    root@f7cbdac22a02:/# hostname
    f7cbdac22a02

    ## 检查容器的/etc/hosts文件
    root@f7cbdac22a02:/# cat /etc/hosts
    ...

    ## 检查容器的接口
    root@f7cbdac22a02:/# ip a
    ...

    ## 检查容器的进程
    root@f7cbdac22a02:/# ps -aux

    ## 在第一个容器中安装软件包
    root@f7cbdac22a02:/# apt-get update && apt-get install vim

    当所有工作都结束时,输入exit,就可以返回到Ubuntu宿主机的命令行提示符了。
    这个容器现在怎样了?容器现在已经停止运行了!
    但容器仍然是存在的,可以用docker ps -a命令查看当前系统中容器的列表
    如果指定-a标志的话,那么docker ps命令会列出所有容器,包括正在运行的和已经停止的。

    ## 给容器命名
    $ sudo docker run --name bob_the_container -i -t ubuntu /bin/bash
    root@aa3f365f0f4e:/# exit

    ## 启动已经停止运行的容器
    $ sudo docker start bob_the_container
    $ sudo docker start aa3f365f0f4e

    ## 附着到正在运行的容器
    $ sudo docker attach bob_the_container
    $ sudo docker attach aa3f365f0f4e
    root@aa3f365f0f4e:/_#_

    ## 创建长期运行的容器
    $ sudo docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
    docker run命令使用了-d参数,因此Docker会将容器放到后台运行。
    如果执行docker ps命令,可以看到一个正在运行的容器

    ## 获取守护式容器的日志
    $ sudo docker logs daemon_dave

    ## 跟踪守护式容器的日志
    $ sudo docker logs -f daemon_dave

    ## 跟踪守护式容器的最新日志
    $ sudo docker logs -ft daemon_dave

    ## 查看守护式容器的进程
    $ sudo docker top daemon_dave

    ## 显示一个或多个容器的统计信息
    $ sudo docker stats daemon_dave daemon_kate daemon_clare daemon_sarah

    ## 在容器中运行后台任务
    $ sudo docker exec -d daemon_dave touch /etc/new_config_file

    ## 在容器内运行交互命令
    $ sudo docker exec -t -i daemon_dave /bin/bash

    ## 停止正在运行的Docker容器
    $ sudo docker stop daemon_dave
    $ sudo docker stop c2c4e57c12c4

    ## 自动重启容器
    $ sudo docker run --restart=always --name daemon_dave -d ubuntu /
    bin/sh -c "while true; do echo hello world; sleep 1; done"
    --restart标志被设置为always。无论容器的退出代码是什么,Docker都会自动重启该容器。

    $ sudo docker run --restart=on-failure:5 --name daemon_dave -d ubuntu /
    bin/sh -c "while true; do echo hello world; sleep 1; done"
    除了always,还可以将这个标志设为on-failure,这样,只有当容器的退出代码为非0值的时候,才会自动重启。
    另外,on-failure``还接受一个可选的重启次数参数,如代码清单3-31所示。

    ## 查看容器
    $ sudo docker inspect daemon_dave

    ## 删除容器
    $ sudo docker rm 80430f8d0921

    ##删除所有容器
    $ sudo docker rm `sudo docker ps -a -q`

    ==========================================================================================================================================
    ## 列出本地的镜像
    $ docker images

    ## 在Docker Hub上搜索镜像
    $ docker search busybox # 搜索image名字包含busybox的镜像

    =============================================================================================================================

    ## 创建Dockerfile

    FROM openjdk //指定base镜像
    MAINTAINER Zhongqiang Shen //描述镜像的创建者

    WORKDIR /tmp //设置容器内的当前工作目录
    ADD http://apache.osuosl.org/zookeeper/stable/zookeeper-3.4.10.tar.gz /tmp //将URL中的内容下载到指定目录中
    RUN tar -xzf zookeeper-3.4.10.tar.gz
    RUN mv zookeeper-3.4.10 /opt/zookeeper //在容器中解压zookeeper包,并将加压后的包移到/opt/zookeeper位置
    WORKDIR /opt/zookeeper
    RUN echo "tickTime=2000" >> conf/zoo.cfg
    RUN echo "dataDir=/var/lib/zookeeper" >> conf/zoo.cfg
    RUN echo "clientPort=2181" >> conf/zoo.cfg //撰写conf/zoo.cfg
    EXPOSE 2181 //暴露容器的2181端口
    CMD ["/opt/zookeeper/bin/zkServer.sh", "start-foreground"]
    //启动zookeeper进程,使用CMD关键字。start-foreground参数让zookeeper在前台运行,如果没有这个参数,.sh脚本退出后会导致容器也退出


    ## 创建完Dockerfile,就可以用下面的命令来创建镜像了
    $ docker build -t zookeeper .
    Sending build context to Docker daemon 5.632kB
    Step 1/12 : FROM openjdk
    ...

    ## 可以用下面的命令来启动它
    $ docker run zookeeper

    ===========================================================================================================================
    多容器部署: https://zhuanlan.zhihu.com/p/31436920

    ## 首先安装Docker Compose
    $ apt-get install docker-compose

    ## 定义docker-compose.yml,如下:
    version: '2' //指定Docker Compose的版本
    services:
    zookeeper:
    container_name: iop-zookeeper //指定容器的名字
    image: jplock/zookeeper //指定使用的镜像的名字
    ports:
    - "2181:2181" //定义端口映射
    kafka:
    container_name: iop-kafka
    image: wurstmeister/kafka
    environment: //设置环境变量
    KAFKA_ZOOKEEPER_CONNECT: iop-zookeeper:2181
    KAFKA_CREATE_TOPICS: "metrics"
    KAFKA_ADVERTISED_HOST_NAME: localhost
    KAFKA_BROKER_ID: 1
    ports:
    - "9092:9092"
    links: //定义容器之间的关联关系和依赖关系,这里kafka依赖于zookeeper,定义了这个依赖关系后,kafka启动前会先启动zookeeper
    - zookeeper

    ## 定义了docker-compose.yml文件后,就可以通过如下命令来一键启动服务
    $ docker-compose up -d # -d表示后台模式运行服务
    Pulling zookeeper (jplock/zookeeper:latest)
    ...

    ## 运行下列命令可以看到容器已启动
    $ docker ps

    ===========================================================================================================================

  • 相关阅读:
    NET6 如何使用Windows Service
    Delphi 设置窗体无标题栏和边框
    java MD5 加密 及对应的 oracle数据库中的MD5加密实现
    oracle 查看锁表进程和解锁
    创建dblink 及 同义词
    demjson python key没有引号的字符串如何转json
    Typescript Objects对象
    typescrip 数组、Map、对象方法
    mysql 日期 时间函数
    Typesrcipt日期时间
  • 原文地址:https://www.cnblogs.com/soul-stone/p/8878309.html
Copyright © 2020-2023  润新知