Bruce Blog Bruce Blog
首页
  • CentOS
  • Ubuntu-Debian
  • 系统网络
  • 系统辅助工具
  • MySQL
  • Redis
  • Mongodb
  • Docker基础
  • Container基础
  • Kubernetes

    • Kubernetes基础
    • Kubernetes辅助
  • Container-Network
  • Jenkins
  • Gitlab
  • ArgoCD
  • Ansible
  • Terraform
  • AWS
  • MQ
  • NGINX
  • JumpServer
  • 基础
  • 函数模块
  • 框架
  • 基础

    • Golang环境
    • 语法
    • 数据类型与运算符
    • 分支语句
    • 循环语句
    • 数组
    • 切片
    • Map
    • String
    • 函数
    • 包的管理
    • 指针
    • 结构体
    • Go语言中的OOP
    • 方法和接口
    • 错误处理
  • Go进阶

    • Go进阶
  • Go框架

    • Go框架
  • Golang辅助

    • Golang辅助
  • CSS
  • HTML
  • JavaScript
  • 前端辅助
  • 常用命令
  • 性能监控工具
  • Windows下Docker使用
  • 日常学习
  • 其他导航

Bruce Tao

运维界的该溜子
首页
  • CentOS
  • Ubuntu-Debian
  • 系统网络
  • 系统辅助工具
  • MySQL
  • Redis
  • Mongodb
  • Docker基础
  • Container基础
  • Kubernetes

    • Kubernetes基础
    • Kubernetes辅助
  • Container-Network
  • Jenkins
  • Gitlab
  • ArgoCD
  • Ansible
  • Terraform
  • AWS
  • MQ
  • NGINX
  • JumpServer
  • 基础
  • 函数模块
  • 框架
  • 基础

    • Golang环境
    • 语法
    • 数据类型与运算符
    • 分支语句
    • 循环语句
    • 数组
    • 切片
    • Map
    • String
    • 函数
    • 包的管理
    • 指针
    • 结构体
    • Go语言中的OOP
    • 方法和接口
    • 错误处理
  • Go进阶

    • Go进阶
  • Go框架

    • Go框架
  • Golang辅助

    • Golang辅助
  • CSS
  • HTML
  • JavaScript
  • 前端辅助
  • 常用命令
  • 性能监控工具
  • Windows下Docker使用
  • 日常学习
  • 其他导航
  • Ansible

  • Terraform

    • terraform命令使用
    • terraform概述
    • terraform基础
    • terraform语法
    • Backend配置
    • 阿里云实践
    • 腾讯云实践
    • 华为云实践
    • Docker实践
      • AWS实践
      • Terraform扩展
      • Azure实践
      • K8S实践
    • AWS

    • Cloud
    • Terraform
    Bruce
    2022-10-27
    目录

    Docker实践

    # 一、环境准备

    • 安装Docker-CE
    • 开启Docker远程API
      • 本地Docker环境上,通过terraform调用Docker可以不用开启Docker的API
      • 如果是远程调用的需要开启Docker的API
    # 安装工具软件包
    yum install -y gcc gcc-c++ perl dos2unix git vim wget unzip lsof tree net-tools telnet epel-release yum-utils python-devel python-pip device-mapper-persistent-data lvm2
    
    # 国内镜像源
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    sudo yum makecache fast
    
    # 卸载系统上已经安装了docker
    yum remove docker docker-engine docker.io docker-ce*
    
    # 安装docker-ce软件包
    yum install docker-ce -y
    
    # 添加daemon.json文件
    mkdir -p /etc/docker/
    cat > /etc/docker/daemon.json<<EOF
    {
      "exec-opts": ["native.cgroupdriver=systemd"],
      "storage-driver": "overlay2",
      "live-restore": true,
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m",
        "max-file": "3",
        "labels": "production_status",
        "env": "os,customer"
      }
    }
    EOF
    
    
    # 开启Docker API
    cp -rp /usr/lib/systemd/system/docker.service{,.bak}
    sed -i 's#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock#ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock  -H fd://#g' /usr/lib/systemd/system/docker.service
    
    systemctl enable docker
    systemctl daemon-reload
    systemctl restart docker
    
    # 查看docker服务
    ps -ef |grep docker
    root       8671      1  0 06:07 ?        00:00:00 /usr/bin/dockerd --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock -H fd://
    
    # curl Docker api接口
    curl http://127.0.0.1:2375/version
    {"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"20.10.18","Details":{"ApiVersion":"1.41","Arch":"amd64","BuildTime":"2022-09-08T23:12:21.000000000+00:00","Experimental":"false","GitCommit":"e42327a","GoVersion":"go1.18.6","KernelVersion":"3.10.0-1160.el7.x86_64","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"1.6.8","Details":{"GitCommit":"9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6"}},{"Name":"runc","Version":"1.1.4","Details":{"GitCommit":"v1.1.4-0-g5fd4c4d"}},{"Name":"docker-init","Version":"0.19.0","Details":{"GitCommit":"de40ad0"}}],"Version":"20.10.18","ApiVersion":"1.41","MinAPIVersion":"1.12","GitCommit":"e42327a","GoVersion":"go1.18.6","Os":"linux","Arch":"amd64","KernelVersion":"3.10.0-1160.el7.x86_64","BuildTime":"2022-09-08T23:12:21.000000000+00:00"}
    
    # docker-compose二进制安装
    # github地址: https://github.com/docker/compose/releases
    wget https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    ln -sfv /usr/local/bin/docker-compose /usr/bin/
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52

    # 二、配置Docker

    # 整体项目结构

    个人维护者: https://registry.terraform.io/providers/kreuzwerker/docker/2.21.0

    项目仓库目录: youdianzhishi-terraform/terraform-docker-operator

    # 项目目录
    $ tree ./  
    ./
    ├───network
    ├───service
    └───.terraformrc 
    
     # 配置的文本缓存目录
     $ mkdir -pv $HOME/.terraform.d/terraform-plugin-cache
     $ vim .terraformrc
     plugin_cache_dir  = "$HOME/.terraform.d/terraform-plugin-cache"
    disable_checkpoint = true
    
    provider_installation {
      filesystem_mirror {
        path    = "/root/.terraform.d/terraform-plugin-cache"
        include = ["registry.terraform.io/*/*"]
      }
    }
    
    
    # 声明本地缓存环境变量
    export TF_CLI_CONFIG_FILE=/root/youdianzhishi-terraform/terraform-docker-operator/.terraformrc
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    # 三、创建Docker Network资源

    个人维护者: https://registry.terraform.io/providers/kreuzwerker/docker/2.20.3/docs/resources/network

    项目仓库目录: youdianzhishi-terraform/terraform-docker-operator/network

    # 进入到项目目录
    $ cd terraform-docker-operator/network
    $ tree  ./
    ./
    ├── main.tf
    ├── outputs.tf
    └── versions.tf
    
    0 directories, 3 files
    
    # 声明本地缓存环境变量
    export TF_CLI_CONFIG_FILE=/root/youdianzhishi-terraform/terraform-docker-operator/.terraformrc
    
    # 检测docker 服务是否正常
    $ curl http://192.168.254.21:2375
    {"message":"page not found"}
    
    # 执行terraform命令
    $ terraform init 
    $ terraform fmt 或 terraform init -recursive
    $ terraform validate
    $ terraform plan
    $ terraform apply 或 terraform apply -auto-approve
    $ terraform destroy 或 terraform destroy -auto-approve
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24

    # 四、创建Docker Container资源

    https://registry.terraform.io/providers/kreuzwerker/docker/2.20.3/docs/resources/image

    https://registry.terraform.io/providers/kreuzwerker/docker/2.20.3/docs/resources/container

    项目仓库目录: youdianzhishi-terraform/terraform-docker-operator/service

    # 进入到项目目录
    $ cd terraform-docker-operator/service
    $ tree  ./
    ./
    ├── jenkins.tf
    ├── main.tf
    └── versions.tf
    
    0 directories, 3 files
    
    # 声明本地缓存环境变量
    export TF_CLI_CONFIG_FILE=/root/youdianzhishi-terraform/terraform-docker-operator/.terraformrc
    
    # 检测docker 服务是否正常
    $ curl http://192.168.254.21:2375
    {"message":"page not found"}
    
    # 执行terraform命令
    $ terraform init 
    $ terraform fmt 或 terraform init -recursive
    $ terraform validate
    $ terraform plan
    $ terraform apply 或 terraform apply -auto-approve
    $ terraform destroy 或 terraform destroy -auto-approve
    
    # docker命令查看jenkins服务有没有启动
    $ docker ps -a 
    CONTAINER ID   IMAGE                                COMMAND                  CREATED         STATUS         PORTS                                              NAMES
    5507536d02c6   jenkins/jenkins:2.346.3-2-lts-jdk8   "/usr/bin/tini -- /u…"   4 minutes ago   Up 4 minutes   0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   jenkins
    
    # 数据挂载目录信息
    $ ls /data/jenkin_home/
    config.xml                     identity.key.enc                               jobs              plugins                   secrets      users
    copy_reference_file.log        jenkins.install.InstallUtil.installingPlugins  nodeMonitors.xml  secret.key                updates      war
    hudson.model.UpdateCenter.xml  jenkins.telemetry.Correlator.xml               nodes             secret.key.not-so-secret  userContent
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36

    image-20220919214248359

    上次更新: 2024/04/09, 16:48:42
    华为云实践
    AWS实践

    ← 华为云实践 AWS实践→

    最近更新
    01
    AWS NAT-NetWork-Firwalld配置(一)
    04-09
    02
    AWS NAT-NetWork-Firwalld配置(二)
    04-09
    03
    kubernetes部署minio对象存储
    01-18
    更多文章>
    Theme by Vdoing | Copyright © 2019-2024 Bruce Tao Blog Space | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式