个人Docker学习笔记

Docker

docker基础

1.docker基本组成

  1. 镜像(image)
  2. 容器(container)
  3. 仓库(repository)

2.Docker帮助启动命令

  1. 启动docker: systemctl start docker
  2. 停止docker: systemctl stop docker
  3. 重启docker: systemctl restart docker
  4. 查看docker状态:systemctl status docker
  5. 开机启动docker: systemctl enable docker
  6. 查看docker总体帮助文档:docker --help
  7. 查看docker命令帮助文档:docker 具体命令 --help

3.Docker镜像命令

  1. docker pull 镜像名称:拉取镜像
  2. docker images:显示所有镜像
  3. docker rmi:删除镜像
  4. docker search 镜像名称:搜索镜像

4.Docker容器命令

  1. docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

    • -d:后台运行容器,并返回容器ID;
    • -i: 以交互模式运行容器,通常与 -t 同时使用;
    • -p: 端口映射,格式为:主机(宿主)端口:容器端口
    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • –name=nginx-lb: 为容器指定一个名称;
    • --restart=always 开机自启
  2. docker cp拷贝文件

  3. docker start/stop/restart

    …具体查看文档

5.Docker提交到私人仓库

  1. 下载registry

    • docker pull registry
      
  2. 打包容器

    • docker commit -a [作者名] -m [描述] [容器ID]  [名称:版本]
      docker commit -a bobobo -m demo a8ga412a51 nginx:1.0
      
  3. 打包镜像

    • docker tag [镜像id] [仓库路径/名称:版本]
      docker tag j23sadf7b1 192.168.110.173:5000/nginx:1.0
      
  4. 上传

    • docker pull 192.168.110.173:5000/nginx:1.0
      

6.Docker容器挂载

如果出现cannot open directory…:Permission denied情况

解决方案:挂载的时候多加一个–privileged=true

安装篇

MySql安装
  1. docker pull mysql:5.7.30
    
  2. docker run -d -p 3306:3306 --name mysql --privileged=true -v 本机日志目录:/var/log/mysql/ -v 本机my.cnf路径:/etc/my.cnf -v 本机data目录路径:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=初始化密码 镜像ID
    
Redis安装
  1. docker pull redis:版本
    
  2. docker run -d -p 6379:6379 --name redis --privileged=true -v 本地redis.conf配置文件路径:/etc/redis/redis.conf  -v 本地redis数据data路径:/data  redis镜像id或者redis:版本号 redis-server /etc/redis/redis.conf
    
Nacos安装
  1. docker pull nacos:版本
    
  2. docker run --network my_network -v /data/docker/nacos/conf/application.properties:/home/nacos/conf/application.properties  --env MODE=standalone --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849  zhusaidong/nacos-server-m1:2.0.3
    
RabbitMQ安装
  1. docker pull rabbitmq:版本
    
  2. docker run -d --name rabbitmq --network my_network -p 5672:5672 -p 15672:15672 -v /data/docker/rabbitmq/mq:/var/lib/rabbitmq rabbitmq:3.9.7
    

Docker高级篇

DockerFile

命令

FROM

描述

  • 基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模版,第一条必须是from
MAINTAINER

描述

  • 镜像的维护者的姓名和邮箱地址
RUN

描述

  • 容器构建时需要运行的命令
    • 两种格式
      • shell格式
      • exec格式
    • RUN是在docker build时运行 RUN等同于在容器终端操作的shell命令
EXPOSE

描述

  • 当前容器对外暴露的端口
WORKDIR

描述

  • 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点 比如docker exec 进入容器后 一般默认是/ 通过WORKDIR可以指定落脚点
USER

描述

  • 指定该用户在什么样的用户去执行,如果都不指定,默认是root
ENV

描述

  • 用来在构建镜像中,构建环境变量 类似profile中的export 作用域在此文件
ADD

描述

  • ADD=COPY+解压,将宿主机目录下的文件拷贝进镜像并且会自动处理URL和解压tar压缩包
COPY

描述

  • copy相当于docker cp 复制,类似ADD,拷贝文件和目录到镜像中。

    将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像的<目标路径>位置

    • COPY src dest
    • COPY [“src”,“desc”]
    • <src源路径>:源文件或者源目录
    • <dest目标路径>:容器内的指定路径,该路径不用事先建好,docker会自动建立
VOLUME

描述

  • 容器卷,相当于 -v 挂载
CMD

描述

  • 指定容器启动后要干的事情,CMD指令的格式和RUN相似,也是两种格式
    • shell 格式:CMD 命令
    • exec格式:CMD [“可执行文件”,“参数1”,“参数2”…]
    • 参数列表格式: CMD [“参数1”,“参数2”…] 。在指定ENTRYPOINT指令后用CMD指定具体参数。

注意

  • Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替代

  • 参考官网Tomcat的dockerfile演示讲解

    • 官网最后一行的命令

      • EXPOSE 8080
        CMD ["catalina.sh","run"]
        

他和前面的RUN命令的区别

  • CMD是在docker run时运行
  • RUN是在docker build时运行
ENTRYPOINT

描述

  • 也是用来指定一个容器启动时需要运行的命令
  • 类似于CMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当作参数送给ENTRYPOINT指令指定的程序

命令格式和案例说明

优点

注意

Docker网络

网络模式
  • brideg模式:使用–network bridge指定 默认使用docker0
  • host模式:使用–network host指定
  • none模式:使用–network none指定
  • container模式:使用–network container:NAME或者容器ID指定

compose

在这里插入图片描述

docker-compose.yml文件

version: "3"

services:
    microService: #自定义名称
        image: zzyy_docker:1.6
        container_name: demoservice
        ports:
            - "6001:6001"
        volumes:
            - /data//service/ceshiService:/data
        networks:
            - my_system
        depends_on:
            - redis
            - mysql
    redis: #自定义名称
        image: redis:6.2.6
        container_name: redis
        ports:
            - "6379:6379"
        volumes:
            - /data/redis/conf/redis.conf:/etc/redis/redis.conf
            - /data//redis/data:/data
        networks:
            - qzx_system
        command: redis-server /etc/redis/redis.conf
    mysql: #自定义名称
        image: mysql:5.7
        container_name: mysql
        environment:
            MYSQL_ROOT_PASSWORD: "123456"
            MYSQL_ALLOW_EMPTY_PASSWORD: "no"
            MYSQL_DATABASE: "db2021"
            MYSQL_USER: "zzyy"
            MYSQL_PASSWORD: "zzyy123"
        ports:
            - "3306:3306"
        volumes:
            - /data/mysql/db:/var/lib/mysql
            - /data/mysql/conf/my.cnf:/etc/my.cnf
            - /data/mysql/init:/docker-entrypoint-initdb.d
        networks:
            - qzx_system
        command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks:
    qzxSystem: 

Docker可视化工具Portainer

  1. docker run -d -p 8000:8000 -p 9000:9000 --name protainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v protainer_data:/data protainer/protainer
    

Docker容器监控之CAdvisor+influxDB+Granfana (CIG)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

现实理想主义中的猿猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值