• docker 学习笔记


    Docker

    1. 初识 Docker

    快速构建、运行、管理应用的工具

    1.1 安装

    删除已有的 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

    安装所需的软件包

    首先安装 yum 工具

    yun install -y yum-utils
    
    • 1

    安装成功后,配置 yum 源(阿里)

    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    • 1

    清华源

    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    • 1

    安装 Docker

    yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
    • 1

    校验安装

    docker -v
    
    • 1
    docker images
    
    • 1

    images 会出现错误,代表 docker 还没有启动

    启动和校验

    # 启动 docker
    systemctl start docker
    
    # 关闭
    systemctl stop docker
    
    # 重启
    systemctl restart docker
    
    # 开机自启
    systemctl enable docker
    
    # 不报错说明安装成功
    docker ps
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    配置镜像加速器

    阿里云为例:镜像容器服务 -> 镜像工具 -> 镜像加速器

    您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://****.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2. Docker 使用

    2.1 部署 MYSQL

    docker run -d --name mysql -p 3307:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql
    
    # 3307:3306  映射端口:容器端口
    # netstat -ntlp 查看所有端口
    
    • 1
    • 2
    • 3
    • 4

    问题

    # docker 暂停
    docker stop mysql
    
    # docker 删除
    docker rm mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    # 进入容器
    
    # docker exec -it 容器号或名 /bin/bash
    docker exec -it b30062adc08c /bin/bash
    # 或
    docker exec -it mysql /bin/bash
    
    # 进入 mysql
    mysql -uroot -p
    
    # 查看信息
    select host,user,plugin,authentication_string from mysql.user;
    
    #更新
    
    mysql> use mysql;
    mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
    mysql> flush privileges;
    mysql> select host,user,plugin,authentication_string from mysql.user;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    2.2 镜像和容器

    当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。Docker会 在运行镜像时创建一个隔 离环境,称为容器(container) 。

    image-20240111172934762

    2.3 常用命令

    run 命令
    docker run -d \
    --name mysql \
    -p 3307:3306 \
    -e TZ=Asia/Shanghai \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • run:创建并运行
    • –name:容器名称
    • -p:端口映射,docker端口:容器端口
    • -e:envouriment,环境变量,具体看文档

    镜像名称结构

    • Repository:TAG,例 mysql:5.7

    image-20240111180725331

    注意

    • rmi:删除镜像

    • rm:删除容器

    • exec:进入容器内部操作

      docker exec -it <容器名> bash
      
      • 1

    2.4 数据卷

    image-20240111182626491

    命令说明
    docker volume create创建数据卷
    docker volume ls查看所有数据卷
    docker volume rm删除指定数据卷
    docker volume inspect <卷名>查看某个数据卷详情
    docker volume prune清除数据卷
    # 可以使用 help 命令查看参数详情
    docker volume --help
    
    • 1
    • 2
    注意
    • 必须在 docker run -v 数据卷名(这里可用绝对路径):容器内目录 时才能挂载映射,已经创建好的容器不可挂载

    • 当创建容器时,如果挂载了数据卷且数据卷不存在,会自动创建

      doucker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html(需求目录) nginx
      
      • 1

    2.5 自定义镜像

    2.5.1 镜像结构

    image-20240111191232626

    2.5.2 Dockerfile
    # 基础镜像
    FROM openjdk:11.0-jre-buster
    # 设定时区
    ENV TZ=Asia/Shanghai
    RUN timedatectl set-timezone $TZ
    # 拷贝jar包
    COPY docker-demo. jar /app.jar
    # 入口
    ENTRYPOINT ["java","-jar","/app.jar"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    # 构建 docker 
    docker build -t myImage:1.0 .
    
    • 1
    • 2
    • -t:镜像起名,格式(镜像名:版本号,默认latest)
    • :是指Dockerfile所在目录,如果就在当前目录就是 . 。

    2.6 网络

    加入自定义网络的容器才可以通过容器名互相访问

    命令说明
    docker network create创建网络
    docker network ls查看所有网络
    docker network rm删除指定网络
    docker network prune清除未使用网络
    docker network connect使指定容器加入某网络
    docker network disconnect脱离某网络
    docker network inspect查看网络信息
    # 创建
    docker network create yuxuan
    
    # 查看
    docker network ls
    
    # mysql容器加入yuxuan网络
    docker network connect yuxuan mysql
    docker run -d --name mysql -p 3306:3306 --network yuxuan mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3. 项目部署

  • 相关阅读:
    三个月我们迁移了100PB数据
    SpringBoot整合原理解析
    [CSP-J 2022] 逻辑表达式 (中缀表达式转后缀表达式 , 后缀表达式建表达式树)
    神经网络的图像识别技术,神经网络图像角度分析
    数学建模笔记-第三讲-插值
    【英语:基础高阶_全场景覆盖表达】K8.口语主题陈述——自然与环境类
    从零手搓一个【消息队列】实现消息在文件中的存储
    S32K的JLINK与PE接线方法与刷程序失败问题
    ZnDPA-Cy7 荧光细胞凋亡检测凋亡靶向探针
    使用图像处理跟踪瞳孔(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/Alonelies/article/details/136744309