zoukankan      html  css  js  c++  java
  • docker 日常使用笔记

    安装

    docker基础和centos安装docker

    ubuntu 16 安装docker

    其他系统:

    MAC安装docker: https://docs.docker.com/docker-for-mac/install/

    Windows 10 安装docker: https://docs.docker.com/docker-for-windows/install/

    Windows 10以下:

    1. 安装VMware: https://blog.csdn.net/qq_42545206/article/details/82790699
    2. VMware中安装centos7:https://blog.csdn.net/qq_42545206/article/details/90301472
    3. centos7中安装docker

    镜像

    Dockerfile

    参考我们vonedao的:
    http://gitlab.vonedao.com/vonechain-platform/vonedao-upms/blob/develop/vonedao-upms-biz/Dockerfile

    #基础镜像
    FROM java:8-jre
    #本文件的作者信息
    MAINTAINER XXXX@126.com
    #设置时区
    ENV TZ=Asia/Shanghai
    
    RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    #创建路径
    RUN mkdir -p /vonedao-upms
    #定义工作目录
    WORKDIR /vonedao-upms
    #程序的端口。
    EXPOSE 4000
    #将jar包放入工作目录
    ADD ./target/vonedao-upms-biz.jar ./
    #程序运行的命令
    CMD sleep 6;java -Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom -jar vonedao-upms-biz.jar
    
    

    打包镜像

    1. 使用了maven-docker插件的打包方式
    编译打包jar
    mvn -f ./pom.xml clean install -Dmaven.test.skip=true -U
    打镜像以及推送镜像
    mvn -f ./pom.xml  docker:stop docker:remove docker:build docker:push
    
    1. 没有使用maven-docker插件的打包方式
    
    编译打包jar
    # mvn -f ./pom.xml clean install -Dmaven.test.skip=true -U
    cd 到Dockerfile所在路径。
    
    本地没有安装docker时,调用远程docker打镜像
    # docker -H tcp://10.10.3.72:2375 build -t docker.vonedao.com/vonedao-cs/vonedao-job-admin:1.0.0 .
    本地没有安装docker时,调用远程docker推送镜像
    # docker -H tcp://10.10.3.72:2375 push docker.vonedao.com/vonedao-cs/vonedao-job-admin:1.0.0
    
    本地安装了docker打镜像
    # docker build -t docker.vonedao.com/vonedao-cs/vonedao-job-admin:1.0.0 .
    # docker push docker.vonedao.com/vonedao-cs/vonedao-job-admin:1.0.0
    

    命令介绍 docker build -t docker.vonedao.com/vonedao-cs/vonedao-job-admin:1.0.0 .

    1. -t : 指定镜像的tag
    2. docker.vonedao.com/vonedao-cs/vonedao-job-admin:1.0.0

    docker.vonedao.com 是镜像仓库的域名
    vonedao-cs 是项目名称,便于管理镜像
    vonedao-job-admin:1.0.0 是工程名称和版本号
    不指定版本号则默认是laster

    1. 命令最后那个 . 是指当前

    镜像信息查看

    查看本地进行
    # docker images 
    查看镜像历史打镜像的情况
    # docker history 镜像名称或者镜像id
    # docker history b89bce05c7db --no-trunc --format {{.CreatedBy}}
    使用–no-trunc 这个参数就可以看到全貌了
    使用 --format {{.CreatedBy}}自定义输出格式
    
    查看镜像详细情况
    # docker inspect  镜像名称或者镜像id
    

    镜像导出导入

    导出:
    docker save -o nginx.tar nginx:latest或docker save > nginx.tar nginx:latest
    其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)
    导入:
    docker load -i nginx.tar或docker load < nginx.tar
    其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
    

    实践

    IDEA+docker插件实践

    容器中安装telnet命令

    docker swarm

    docker swarm 是docker的官方集群模式。集群不要求机器数量。一个单机的docker也能自成一个swarm集群。

    1. 初始化集群
    docker swarm init
    
    1. 添加节点为管理节点
    swarm join-token manager
    

    集群节点操作

    Docker swarm集群增加节点和删除节点
    docker swarm集群节点打标签

    网络

    添加网络

    1. 自定义ingress

    https://www.cnblogs.com/zoujiaojiao/p/13366680.html

    关于mtu :https://blog.csdn.net/passionkk/article/details/100538418

    1. 自定义overlay

    默认的方式:docker network create --driver overlay 网络名称

    自定义:docker network create --driver overlay --subnet=192.168.0.0/24 --gateway=192.168.0.254 vonedao_net

    --subnet=192.168.0.0/24 --gateway=192.168.0.254 指定子网和网关

    容器之间网络

    # docker ps |grep vonedao-monitor
    # docker exec -it 9e7c9809ffe5 /bin/bash
    # curl -i http://vonedao-oa-platform:5005
    

    以上nacos在开发、测试、生产都是一样的配置,为什么不会错?因为在不同的集群中,容器的网络是不通的。
    在同一个集群中,不同的网络(namesapce)中的,容器的网络也是不通的。

    1. 实践案例:
      如何让nacos中服务注册的ip是指定的网段
      docker容器使用swarm的网络

    yaml 编排

    1. docker-compose 单机
      docker-compose容器化构建gitlab服务
    2. docker swarm 集群
      举个例子:
    #版本
    version: '3.0'
    #容器服务开始位置
    services:
    #容器名称
      cs-gateway:
    #镜像
        image: docker.vonedao.com/vonedao-cs/cs-gateway:1.0.0
    #映射到宿主机的端口,前面是宿主机端口,后面的是容器端口
        ports:
          - "9988:9999"
    #给容器添加/etc/hosts解析。原因是nacos.vonedao.com没有做做dns解析。
        extra_hosts:
          - "nacos.vonedao.com:10.10.4.86"
    #环境变量
        environment:
          - NACOS-PORT=80
          - NACOS-HOST=nacos.vonedao.com
          - NACOS-NAMESPACE=vonechain-account-sit
    #启动模式和重启策略
        deploy:
          mode: replicated
          replicas: 1
          restart_policy:
            condition: on-failure
          placement:
    #运行在打了sit_vonedao标签的节点上。
            constraints:
              - node.labels.role==sit_vonedao
    #指定容器运行的网络
        networks:
          - account_net
    
    networks:
      account_net:
        external: true
    

    启动命令docker stack deploy -c cs-gateway.yaml cs-gateway

    cs-gateway.yaml 文件名称
    cs-gateway是stack的task名称。不是容器名称。

    一个容器可以添加多个网络:

        networks:
          - account_net
          - othen_network
    networks:
      account_net:
        external: true
      othen_network:
        external: true
    

    常用命令

    1. 查看本机容器
    正在运行的容器
    # docker ps
    所有容器,包括不正常挂掉的
    # docker ps -a
    查看容器详情
    # docker inspect 容器id
    进入容器
    #docker exec -it 容器id /bin/bash
    查看容器日志
    #docker logs -f --tail=100 容器id
    删除容器(必须先停止容器才能删除)
    #docker stop 容器id
    #docker rm 容器di
    

    2.本机容器的文件路径

    # df -h
    # ls /var/lib/docker/
    
    1. 查看所有stack
    docker stack ls
    
    1. 查看单个stack
    docker stack ps stack名称
    

    5.查看service

    docker service ls
    

    6.根据stack 查看service

    # docker stack services vonedao-tenant-gateway
    

    7.查看service的日志

    docker service logs --raw -f --tail=n 服务名称
    

    8.查看service详情

    docker inspect service名称或者id
    

    9.停止stack

    docker stack rm stack名称
    

    10.停止service

    docker service rm service名称
    

    11.停止容器

    docker rm 容器id
    
    1. 查看镜像
    docker images 
    
    1. 查看镜像详情
    docker inspect 镜像id
    
    1. 删除镜像
    docker rmi 镜像id
    
  • 相关阅读:
    Python中的编码
    编译gcc
    内存的非法读写操作的检查
    Git合并特定commits 到另一个分支
    局部静态变量是如何做到只初始化一次的?
    how-to-redirect-cin-and-cout-to-files
    Time series database
    Linux System Calls Hooking Method Summary
    tomcat 创建虚拟主机
    oracle查锁表SQL
  • 原文地址:https://www.cnblogs.com/zoujiaojiao/p/13372288.html
Copyright © 2011-2022 走看看