码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 服务器容器化-docker(全)


    文章目录

      • 另外两篇Docker笔记
      • Docker整体架构介绍
      • Docker环境搭建
        • 安装方法一
          • 卸载
        • 安装方法二 (建议):
      • docker的容器生命周期管理
        • docker的基本命令(Docker Container之CRUD)
          • 下载镜像 docker pull
          • 创建容器 docker create
          • 查看容器 docker ps ( docekr ps -a 查看所有)
          • 启动容器 docker run
          • 进入交互状态 docker exec -it [id] /bin/bash (exit 退出来)
          • 暂停/停止/杀死 [启动]容器 docker pause [启动 docker unpause] / docker stop [启动 docker start]/ docker kill [启动 docker start]
          • 删除容器 docker rm (-f 强制删除)
          • 查看日志 docker logs (-f :持久刷新查看) [id]
        • 限制资源启动
          • -c (-c 4000是cpu资源量)
          • -m 抢占流量 --memory-swap (内存资源)
          • --blkio-weight (io资源)
      • Dockerfile实战
        • 创建Dockerfile(vi dockerfile)
        • 解析Dockerfile 文件
        • 执行dockerfile命令 - docker build -t
          • 执行命令生成一个mysh镜像
          • 执行 docker run mysh
          • 执行docker run mysh -c date (利用CMD修改执行结束后的方法 从ls -L 改成为 date)
          • /bin/sh -c date (利用ENTRYPOINT 来修改结尾的命令 从ls -L 改成为 date)
          • 系统卷 -v
      • Docker 网络通信
      • Docker 生态圈
      • 微服务部署
        • 安装平台服务 rabbitMQ , Redis , Mysql
          • 安装 RabbitMQ
          • 安装redis
          • 安装mysql
          • 配置java 8 的dockerfile 启动jar

    另外两篇Docker笔记

    Docker构建笔记
    docker学习笔记(安装 卸载 基本命令)

    Docker整体架构介绍

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    Docker环境搭建

    在这里插入图片描述

    安装方法一

    • 安装方法

    yum install docker

    • 启动docker

    systemctl start docker

    卸载

    • 卸载docker
    $ sudo yum remove docker \ 
                      docker-client \ 
                      docker-client-latest \ 
                      docker-common \ 
                      docker-latest \ 
                      docker-latest-logrotate \ 
                      docker-logrotate \  
                      docker-engine
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    安装方法二 (建议):

    • 下载docker安装脚本:curl -fsSL get.docker.com -o get-docker.sh

      curl -fsSL get.docker.com -o get-docker.sh
      
      • 1
    • 运行脚本(执行阿里云源):sh get-docker.sh --mirror Aliyun

      sh get-docker.sh --mirror Aliyun
      
      • 1
    • 重新加载配置:systemctl daemon-reload

      systemctl daemon-reload
      
      • 1
    • 启动docker:systemctl restart docker

      systemctl restart docker
      
      • 1
    • 查看docker版本:docker version

      docker version
      
      • 1

    docker的容器生命周期管理

    在这里插入图片描述
    在这里插入图片描述

    docker的基本命令(Docker Container之CRUD)

    下载镜像 docker pull

    例如:

    docker pull nginx
    
    • 1

    创建容器 docker create

    例如:

    docker create nginx
    
    • 1

    查看容器 docker ps ( docekr ps -a 查看所有)

    docker ps -a
    
    • 1

    启动容器 docker run

    例如:

    docker run 1e86100fbcff
    
    • 1

    进入交互状态 docker exec -it [id] /bin/bash (exit 退出来)

    例如

    docker exec -it 1e86 /bin/bash
    
    • 1

    暂停/停止/杀死 [启动]容器 docker pause [启动 docker unpause] / docker stop [启动 docker start]/ docker kill [启动 docker start]

    例子:

    docker pause 1e86100fbcff
    
    • 1
    docker stop 1e86100fbcff
    
    • 1
    docker unpause 1e86100fbcff
    
    • 1
    docker start1e86100fbcff
    
    • 1

    删除容器 docker rm (-f 强制删除)

    docker rm -f 1e86
    
    • 1

    查看日志 docker logs (-f :持久刷新查看) [id]

    docker logs 4feg
    
    • 1

    限制资源启动

    -c (-c 4000是cpu资源量)

     docker run -d -c 4000 nginx
    
    • 1

    -m 抢占流量 --memory-swap (内存资源)

    例如:

    docker run -d -m 200M --memory-swap=400M nginx
    
    • 1

    –blkio-weight (io资源)

     docker run -d --blkio-weight 300 nginx
    
    • 1

    Dockerfile实战

    在这里插入图片描述

    创建Dockerfile(vi dockerfile)

    vi Dockerfile
    
    • 1

    解析Dockerfile 文件

    • MAINTAINER aoteman (维护人员)

    • RUN mkdir test1 (容器启动后执行的命令)

    • RUN touch test2 (可多个命令执行)

    • COPY test3 . (复制test3到本目录)

    • ADD test4.tar.gz . (add可以进行解压)

    • —分割线—

    • EXPOSE 80 (暴露80端口)

    • VOLUME /data (指定目录)

    • ENTRYPOINT (始终执行)

    • CMD 命令 如果有外部传cmd命令,则文件内的不执行

    Dockerfile文件内容

    #Owned by Lin Shuzheng
    FROM debian
    MAINTAINER shuzheng
    RUN mkdir test1
    RUN touch test2
    COPY test3 .
    ADD test4.tar.gz .
    ENTRYPOINT ["/bin/sh"]
    CMD ["-c","ls -l"]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    执行dockerfile命令 - docker build -t

    执行命令生成一个mysh镜像

    ```
    docker build -t mysh .
    ```
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    执行 docker run mysh

    在这里插入图片描述

    执行docker run mysh -c date (利用CMD修改执行结束后的方法 从ls -L 改成为 date)

    在这里插入图片描述

    /bin/sh -c date (利用ENTRYPOINT 来修改结尾的命令 从ls -L 改成为 date)

    在这里插入图片描述


    系统卷 -v

    [root@training1 ~]# pwd
    /root
    [root@training1 ~]# ls
    apache  Dockerfile  emacs  get-docker.sh
    
    
    [root@training1 ~]# docker run -v $PWD/data:/data -d redis:3.2 redis-server
    aa964b1b61fd2a8c503bb3cd63ee87235f85bead022b504f48f20eff575e5b05
    [root@training1 ~]# ls
    apache  data  Dockerfile  emacs  get-docker.sh
    
    [root@training1 ~]# docker ps
    CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS              PORTS               NAMES
    aa964b1b61fd        redis:3.2             "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp            tender_franklin
    [root@training1 ~]# docker exec -it aa964b1b61fd /bin/bash
    
    root@aa964b1b61fd:/data# touch update
    root@aa964b1b61fd:/data# exit
    exit
    
    [root@training1 ~]# ls data/
    update
    
    
    
    • 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 网络通信

    在这里插入图片描述

    Docker 生态圈

    在这里插入图片描述

    微服务部署

    安装平台服务 rabbitMQ , Redis , Mysql

    在这里插入图片描述

    安装 RabbitMQ

     docker run -d --name myrebbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
    
    • 1

    安装redis

    docker run -d -p 6379:6379 --name myredis redis redis-server
    
    • 1
    • 挂载 配置redis.conf
    docker run -d --privileged=true -p 6379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name reidsLinBookz redis redis-server /etc/redis/redis.conf --appendonly yes
    
    • 1

    参数说明:

    –privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限

    -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:映射配置文件

    -v /docker/redis/data:/data:映射数据目录

    redis-server /etc/redis/redis.conf:指定配置文件启动redis-server进程

    –appendonly yes:开启数据持久化

    mkdir /docker
    mkdir /docker/redis
    mkdir /docker/redis/conf
    mkdir /docker/redis/data
    
    创建redis.conf配置文件
    touch /docker/redis/conf/redis.conf
    
    redis.conf文件内容自行添加:
    切记注释掉:#daemonize yes 否则无法启动容器
    重要话说三遍:注释掉#daemonize yes,注释掉#daemonize yes,注释掉#daemonize yes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    #任何ip可以访问
    bind 0.0.0.0
    #守护进程
    #daemonize yes
    #密码
    requirepass 123456
    #持久化⽂件名称
    dbfilename xdclass.rdb
    #持久化⽂件存储路径
    dir /data/
    #持久化策略, 10秒内有个1个key改动,执⾏快照
    save 10 1
    ######之前配置######
    #导出rdb数据库⽂件压缩字符串和对象,默认是yes,会浪费CPU但是节省空间
    rdbcompression yes
    # 导⼊时是否检查
    rdbchecksum yes
    
    
    #aof持久化配置
    #appendonly yes
    #appendfilename "appendonly.aof"
    #appendfsync everysec
    
    # aof重写期间是否同步
    no-appendfsync-on-rewrite no
    # 重写触发配置
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    # 加载aof时如果有错如何处理
    # yes表示如果aof尾部⽂件出问题,写log记录并继续执⾏。
    no表示提示写⼊等待修复后写⼊
    aof-load-truncated yes
    
    • 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

    安装mysql

     docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 mysql
    
    
    • 1
    • 2

    配置java 8 的dockerfile 启动jar

    Dockerfile

    FROM java:8
    ADD registry.jar  registry.jar
    ENTRYPOINT ["java","-jar","registry.jar"]
    
    • 1
    • 2
    • 3
  • 相关阅读:
    钓鱼攻击防不胜防,该如何预防网络钓鱼攻击?
    CentOS7 安装 mysql8
    vue2.0项目安装依赖 sass 报错
    【MyBatis系列】Mybatis多表查询与动态SQL
    中国石油大学(北京)-《 渗流力学》第二阶段在线作业
    筛选图片,写JSON文件和复制
    土耳其商务团一行莅临优积科技考察交流
    【理解ARM架构】不同方式点灯 | ARM架构简介 | 常见汇编指令 | C与汇编
    谈一下相对位置编码
    每天面试题,第二天 字符串相关
  • 原文地址:https://blog.csdn.net/weixin_43247803/article/details/125249146
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号