Docker - 一款用于快速构建软件、部署应用的工具(CS架构)

一、核心概念

    1、镜像:一个包含应用本身及应用运行所需的环境、配置、系统函数库的静态文件(静态概念)
    2、容器:基于镜像运行得来的一个完全隔离互不影响的进程(动态概念)
    3、镜像仓库
        1)、远程仓库(Docker Hub)- 访问较慢,需配置镜像加速源
        2)、本地仓库(Docker本地的)

二、基本命令

    1、镜像
        0)、搜索:docker search 镜像名称
        1)、拉取:docker pull 镜像名称
        2)、推送:docker push 镜像名称
        3)、查看:docker images
        4)、查看所有镜像ID:docker images -q
        5)、删除:docker rmi 镜像名称
        6)、删除所有:docker rmi docker images -q
        7)、制作镜像:docker build -t 镜像名称 . 
        8)、导出镜像:docker save -o 镜像名称.tar 镜像名称
        9)、加载镜像:docker load -i 镜像名称.tar
        10)、容器转为镜像:docker commit 容器名称 镜像名称
        
    2、容器
        1)、查看所有:docker ps -a
        2)、查看正在运行:docker ps
             格式化查看,更清爽: docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
        3)、删除:docker rm 容器名称
        4)、强制删除:docker rm -f 容器名称
             删除所有容器: docker rm -f $(docker ps -qa)
        5)、创建容器:docker create -d --name=容器名称 -p 宿主机端口:容器内端口 镜像名称
        6)、创建并运行容器:docker run -d --name=容器名称 -p 宿主机端口:容器内端口 镜像名称
        7)、启动容器:docker start 容器名称
        8)、停止容器:docker stop 容器名称
        9)、重启容器:docker restart 容器名称
        10)、暂停容器:docker pause 容器名称
        12)、恢复容器:docker unpause 容器名称
        13)、进入容器:docker exec -it 容器名称 /bin/bash
        14)、查看容器信息:docker inspect 容器名称或者容器id
        15)、创建容器相关设置
             1)、自启动: --restart=always
             2)、挂载数据卷: -v es-data:/usr/share/elasticsearch/data
             3)、加入网络:--network es-net
             5)、端口映射: -p 宿主机端口:容器内端口
        16)、修改容器设置语法
             docker update 相关设置 容器ID
             如:修改容器不再自启动:docker update --restart=always 容器ID  
        17)、查看容器日志:docker logs -f 容器名称

三、数据卷

    1、作用:使容器与数据进行解耦(可实现备份),也可实现容器与容器、宿主机与容器进行数据交互的效果
    2、挂载方式:
        1、数据卷(虚拟目录)挂载
            docker run -d \
            --name nginx \
            -p 80:80 \
            -v html:/usr/share/nginx/html \
            nginx
            
        2、绝对路径挂载
            docker run -d \
            --name mysql \
            -p 3306:3306 \
            -e TZ=Asia/Shanghai \
            -e MYSQL_ROOT_PASSWORD=123 \
            -v /root/mysql/init/:/docker-entrypoint-initdb.d \
            -v /root/mysql/conf/:/etc/mysql/conf.d \
            -v /root/mysql/data/:/var/lib/mysql \
            mysql
        
        3、相关命令
            docker volume
                      create 数据卷名称: 创建数据卷
                      ls: 查看所有数据卷
                      rm 数据卷名称: 删除数据卷
                      prune: 删除没用的数据卷
                      inspect 数据卷名称:: 查看某个数据卷详情

四、自定义镜像

    1、镜像结构: 底层基础镜像 + 中间的Layer层 + 顶层的入口指令
    2、Dockerfile:用来描述镜像构建过程的指令文件(FROM\COPY\RUN\EXPOSE\ENTRYPOINT)
    3、命令:docker build -t 镜像名称 .    【备注: .代表当前目录】
    4、示例:
        # 基础镜像
        FROM openjdk:11.0-jre-buster
        # 设定时区
        ENV TZ=Asia/Shanghai
        RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
        # 拷贝jar包
        COPY docker-demo.jar /app.jar
        # 入口
        ENTRYPOINT ["java", "-jar", "/app.jar"]

五、网络

    1、作用:用于容器间进行数据通信的,使用容器名通信即可!
    2、命令
        docker network 
                    create:创建一个网络 
                    ls: 查看所有网络
                    rm:删除指定网络
                    prune:清除未使用的网络
                    inspect:查看网络详细信息
                    connect:使指定容器连接加入某网络
                    disconnect:使指定容器连接离开某网络

六、项目部署

    1、原生docker方式部署
        1)、安装软件
        2)、部署后端
            1-项目打jar包并上传至linux
            2-为当前java项目编写dockerfile
            3-基于dockerfile和jar包构建镜像
            4-基于镜像创建并运行容器、注意网络
                docker run -d \
                --name hmall \
                -p 8080:8080 \
                --network hmall \
                hmall
        3)、部署前端
            1-准备好前端资源- html
            2-准备好nginx的配置文件
            3-将上述资源上传到linux 
            4-创建并运行容器 - 进行linux资源的挂载、注意网络
                docker run -d \
                --name nginx \
                -p 18080:18080 \
                -p 18081:18081 \
                -v /root/nginx/html:/usr/share/nginx/html \
                -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
                --network hmall \
                nginx
    2、docker compose方式部署
        1、将所有容器所需的数据准备好
        2、编写好docker compose文件
        3、运行docker compose文件
            创建并运行所有容器:docker compose up -d
            停止并销毁所有容器: docker compose down
            启动所有容器:docker compose start
            停止所有容器:docker compose stop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值