• kali 脚本应用(二)


    目录

    docker基础

    dockerfile(构建docker镜像的文件)

    docker网络


    docker基础

    # 启动容器

    docker run -d --name nginx01 -p 3344:80 nginx(要启动的镜像名)

    -d:后台运行

    --name:给容器取名

    -p 主机端口:docker端口:将docker中的80端口映射到主机的3344端口,即localhost:3344,可以访问到docker的80端口

    # 进入容器

    docker exec -it 容器id /bin/bash [-c (可以执行command)]

    docker attch 容器id

    # 容器可视化

    docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

    # 拷贝

    docker cp 容器id:/root/file /root

    # 容器数据卷

    - 容器持久化和同步操作,容器之间也可以数据共享

    docker run -it -v 主机目录:容器目录 -p 80:8080 tomcat

    # 配置mysql

    docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -d -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql mysql

    # 具名挂载和匿名挂载

    -v 容器内路径    # 匿名挂载

    -v 卷名:容器内路径 #具名挂载

    -v /宿主机路径:容器内路径  #指定路径挂载

    # ro和rw

    -v /宿主机路径:容器内路径:ro  # readonly容器内只读,只能用宿主机编辑

    -v /宿主机路径:容器内路径:rw  # 读写

    # 数据卷容器,实现多个容器之间数据共享

    docker run -it --name docker02 --volumes-from docker01 mysql

    # 多个mysql共享

    docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d -v /etc/mysql/conf.d -v /var/lib/mysql mysql

    docker run --name mysql02 -e MYSQL_ROOT_PASSWORD=root -d --volumes-from mysql01 mysql

    数据卷容器的生命周期是持续到没有人使用为止

    dockerfile(构建docker镜像的文件)

    # 1、编写dockerfile :

    FROM centos

    VOLUME ["volume01"] # 匿名挂载

    CMD echo -----end----

    # 2、docker build 构建称为一个镜像

    docker build -f dockerfile -t myimage:1.0 .

    # 3、docker run 运行镜像

    # 4、docker push发布镜像(DockerHub、阿里云镜像仓库)

    基础知识:

    1、保留关键字(指令)都必须是大写字母

    2、# 表示注释

    3、每一个指令都会创建提交一个新的镜像层,并提交

    FROM                                 # 基础镜像,一切从这里开始构建

    MAINTAINER         # 镜像是谁写的,姓名+邮箱

    RUN                                        # 镜像构建时需要运行的命令 ===> RUN yum -y install vim

    ADD                                        # 添加内容

    WORKDIR                        # 镜像的目录

    VOLUME                        # 挂载目录

    EXPOST                         # 暴露端口配置

    CMD                                        # 指定容器启动时要运行的命令,只有最后一个会生效,可被替代

    ENTRYPOINT        # 指定容器启动时要运行的命令,可以追加命令

    ONBUILD                        # 构建一个被继承DockerFile这个时候就好运行ONBULD指令,触发指令

    COPY                                # 类似ADD,将文件拷贝到镜像中

    ENV                                        # 构建的时候设置环境变量  ==> ENV key value

    # docker tomcat镜像构建

    # dockerhub镜像发布

    docker login -u 用户名

    docker tag imageId newname:1.0

    docker push newname:1.0

    docker网络

    1、每启动一个docker容器,docker就会给docker容器分配一个ip,只要安装了docker就会有一个docker0网卡

    (桥接模式,使用的技术是evth-pair)

    evth-piar:一对虚拟设备接口,他们都是成对出现,一段连接协议,一段彼此相连

    # NAT(直连)

    Docker中的所有网络接口都是虚拟的。虚拟的转发效率高。(内网传递文件)

    只要容器删除,对应网桥消失

    # 查看网络

    docker network ls

    # --link 通过主机名ping通网络,而不是ip(不建议)

    docker run --name tomcat02 --link tomcat01 tomcat

    本质在hosts配置了一个

    ip   tomcat01

    # 自定义网络

    1、网络模式

    bridge : 桥接

    none   : 不配置网络

    host   : 和宿主机共享网络

    container:容器网络连同(用的少)

    2、创建网络

    docker network create --driver bridge --subnet 192.168.0.0/16 --geteway 192.168.0.1 mynet

    3、使用网络

    docker run -d -P --name tomcat-net-01 --net mynet tomcat

    # 16表示子网掩码255.255.0.0

    # 网络连同 docker 和 mynet已经不是一个网段 不能连同

    docker network connect mynet tomcat01(docker网段)

    docker network inspect mynet

    # 结果:将tomcat01加入mynet ,一个容器两个ip

  • 相关阅读:
    2022牛客多校第一场解题报告
    通过v_COURSE和V_grade查看期末平均成绩在60分以上的课程名称
    SpringMVC处理请求流程
    JDK动态代理
    基于ssm+vue+elementui的的ktv点歌管理系统
    使用BP神经网络、RBF神经网络以及PSO优化的RBF神经网络对数据进行预测(Matlab代码实现)
    Kamailio不被重视的模块:nat_traversal
    顾客点餐系统-----操作菜品JDBC代码的编写(2)
    2020 icpc 南京 K Co-prime Permutation 思维题
    Rust结构体和枚举
  • 原文地址:https://blog.csdn.net/weixin_57099902/article/details/128068960