前端学习案例-初识docker

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 前端学习案例-初识docker
我是歌谣 放弃很难 但是坚持一定很酷 微信关注小歌谣一起学习
最近因为工作需要就要进行docker的一些相关学习
 这边就整理了一小部分的笔记
 方便一起学习 本文源自个人学习笔记docker笔记
 docker 教程方法
 1.docker 的镜像和容器的基本操作    uname -r 查看系统的版本信息
    docker version 查看是否安装成功
    docker images --help
    docker ps 查询正则运行的命令
    docker ps -a 查询全部的容器
    docker ps -n=1 显示 最近一个容器的
    docker ps -q 只显示容器的编号
    ctrl+p+q 容器退出不停止运行
     docker 搜索        搜索星级大于3000
            docker search mysql --filter=STARS=3000
            docker pull mysql:5.7
    docker 删除镜像
            docker rmi -f 镜像id #删除指定的镜像
            docker rmi -f 镜像id 镜像id #删除多个镜像
            docker rmi -f $(docker images -aq) # 删除全部镜像
    docker 容器
        新建容器并启动
            docker run [] image
            #参数说明
            –name=‘Name’ 容器名
            -d 后台运行
            -p 指定端口
            -it 使用交互模式运行
        启动并进行容器内
            docker run -it centos /bin/bash
        删除容器
            docker rm 容器id #删除指定的容器,不能删除正则运行的容器
            docker rm -f $(docker ps -aq) #删除所有容器
            docker ps -a -q | xargs docker rm #删除所有容器
            启动和停止容器
                docker start 容器id
                docker restart 容器id
                docker stop 容器id
                dokcer kill 容器id
                docker stop 容器id
    常用的其他命令
        后台启动容器
            docker run -d 镜像名 #比如加it可以视为前台命令
        查看日志信息
            docker logs
            docker logs -f -t --tail 10 容器id
        查看容器中的进程信息
            docker top 容器id
        查看容器的信息
            docker inspect 容器id
        进入当前正在运行的容器
            docker exec -it 容器id /bin/bash #进图容器开启一个新的终端,可以在里面操作
            docker attach 容器id #进入正在进行的容器内
        从容器内拷贝到主机上
            进入到容器内
            docker cp 容器id:/home/文件名 /home /ubuntu
    项目注意点
            docker run -d --name nginx01 -p 3304:80 nginx
            curl local:3304 # 本地运行测试
        docker 配置es的命令
            docker run -d --name elasticsearch -p 9200:9300 -e “discovery.type=single-node” -e ES_JAVA_OPTS="-Xms64m -Xmx51m" elasticsearch:7.6.2
    commit 镜像
         docker commit -a=‘sss’ -m=‘add web’ 容器id tomcat:1.02.容器数据卷
 1.使用数据卷    方式一,直接使用命令挂载 -v
    docker run -it -v /home/ceshi:/home ubutu /bin/bash
    #挂载mysql
    -d 后台运行
    -p 端口
    -v # 卷挂载
    -e #环境配置
    –name 容器的名字
    docker run -d -p 3310:3306 -v /homge/ubuntu/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
2.具名和匿名挂载
    匿名挂载
        docker run -d -P --name nginx01 -v /etc/nginx nginx #-v 容器内路径,
    具名挂载
        docker volume ls
        docker run -d -P --name nginx03 -v juming-Nginx:/etc/nginx nginx
3.初识dockerfile
    dockerfile 就是用来构建docker 镜像构建文件,命令脚本,通过脚本可以生成镜像,镜像是一层一层的,脚本是一个个的命令
        #创建一个dockerfile文件,名字随机,建议dockerfile
        FROM centos
        VOLUME [‘volume01’,‘volume02’]
        CMD echo ‘–end —’
        CMD /bin/bash
        #运行
        docker build -f /home/ubuntu/docker_test_volume/dockerfile -t jayson/ubuntu . # 后面是有点 . 代表当前的路径
    docker 过个容器共用一个存储数据,称为数据卷容器
        #主要是–volumes-from
        docker run -it --name docker02 --volumes-from docker01 jayson_ubuntu
3.dockerfile制作镜像
 1.dockerfile 构建过程    每个保留关键字都是必须大写字母
     执行从上到下顺序执行
     #表示注释
     每一个指令都会创建提交一个新的镜像层,并提交dockerfile都是面向开发的,我们以后发布项目,做镜像,都是编写dockerfile文件,文件十分简单
docker镜像逐渐成为企业交付的标准,必须掌握!
DokerFile :构建文件,定义了一切的步骤,源代码
Dockerimages:通过DockerFile构建生成的镜像,最终发布和运行产品
 DockerFile的指令FROM #基础镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,姓名+邮箱
ADD #步骤,tomcat镜像,添加内容
WORKDIR #镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露的端口配置
CMD #指定容器启动时要运行的命令,只有一个最后的命令生效,可以被替代
ENTRYPOINT # 指的是容器启动时要运行的命令,可以追加
 ONBUILD #当构建一个被继承的dockerfile,这时候会运行onbuild指令
 COPY #类似于ADD,将文件拷贝到镜像当中
 ENV #构建的时候设置环境变量 
实战docker
    创建一个centos,先创建文件
    ubuntu@VM-0-4-ubuntu:~/dockerfile$ vi mydockerfile
     ubuntu@VM-0-4-ubuntu:~/dockerfile$ cat mydockerfile
     FROM centos
     MAINTAINER jayson123@qq.com
     ENV MYPATH /usr/local
     WORKDIR $MYPATH
     RUN yum -y install vim
     RUN yum -y install net-tools
     EXPOST 80
     CMD echo $MYPATH
     CMD echo “–end–”
     CMD /bin/bash    docker history 可以看到镜像的构建过程
        CMD 和ENTRYPOINT的区别
3.docker 网络
    ip addr
     linux可以ping通docker容器内部    原理
    evth-pair是linux虚拟设备接口,成对出现,,docker所有的网络接口都是虚拟的,
    #可以通过ip进行ping通
    docker exec -it tomat02 ping 172.18.0.3
    如果通过非主机名直接ping通,需要通过–link
    docker run -d -P --name tomcat03 --link tomcat02 tomcat
    docker exec -it tomcat04 ping tomcat01
        docker network ls#查看网络
        #直接启动命令 --net bridge ,这个就是我们的docker0
        docker run -d -P --name tomcat01 tomcat
        docker run -d -P --name tomcat01 --net bridge tomcat
        #docker0的特点默认,域名是不能访问,–link可以打通链接
        #我们可以自定义一个网络
        ####下面是自己组建了一个网络,可以保持自己集群的健康,集群之间相互隔离
        docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
        #查询自己的网络
        docker network ls
        #加入到网络
        docker run -d -P --name tomcat-net-01 --net mynet tomcat
        docker run -d -P --name tomcat-net-02 --net mynet tomcat
        #查询到网络可以看到
        docker network inspect mynet
    2.网络连通
    将容器和集群连接
    docker network connect mynet tomcat01
    原理是直接将容器的ip直接加入到自定义的网络当中,暴力计入
3.docker 建立redis集群实战
    环境部署,三主三从,从的是备份机
    docker network create redis --subnet 172.38.0.0/16
     docker network ls
     #创建集群配置文件
     for port in $(seq 1 6); \
     do \
     mkdir -p /mydata/redis/node-${port}/conf
     touch /mydata/redis/node-${port}/conf/redis.conf
     cat << EOF>/mydata/redis/node-${port}/conf/redis.conf
     port 6379
     bind 0.0.0.0
     cluster-enabled yes
     cluster-config-file nodes.conf
     cluster-node-timeout 5000
     cluster-announce-ip 172.38.0.1${port}
     cluster-announce-port 6379
     cluster-announce-bus-port 16379
     appendonly yes
     EOF
     done
     #启动服务
     docker run -p 6371:6379 -p 16371:16379 --name redis-1 -v /mydata/redis/node-1/data:/data -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
     #第二个
     docker run -p 6373:6379 -p 16373:16379 --name redis-3 -v /mydata/redis/node-3/data:/data -v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
     e0ddd2844f8565575f3228ef16308828b14feb508e65dbc7c0eb8e02df870263
     #一共启动了6个
     #接下来创建集群
     进入到sh
     docker exec -it redis-01 /bin/sh
     /data# redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379
      172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
      #显示下面的结果表示成功
      >>> Performing hash slots allocation on 6 nodes...
     Master[0] -> Slots 0 - 5460
     Master[1] -> Slots 5461 - 10922
     Master[2] -> Slots 10923 - 16383
     Adding replica 172.38.0.15:6379 to 172.38.0.11:6379
     Adding replica 172.38.0.16:6379 to 172.38.0.12:6379
     Adding replica 172.38.0.14:6379 to 172.38.0.13:6379
     M: 8742bf66934ec467e43d74c9fd2c9c06d1b0adfe 172.38.0.11:6379
        slots:[0-5460] (5461 slots) master
     M: b9e11f701c7ca13eb9c35d1b786bd4f5c0fa0731 172.38.0.12:6379
        slots:[5461-10922] (5462 slots) master
     M: e5ae04bff43034f04f0dfa23ee66c4563160aa37 172.38.0.13:6379
        slots:[10923-16383] (5461 slots) master
     S: dba613da945914b339adf96a2a7fbc30fb01848e 172.38.0.14:6379
        replicates e5ae04bff43034f04f0dfa23ee66c4563160aa37
     S: 7858895f332bd68775267adf5c3530ab1172fa60 172.38.0.15:6379
        replicates 8742bf66934ec467e43d74c9fd2c9c06d1b0adfe
     S: 3472dc464937a645af57ece9a4ec8769ed6b2fa0 172.38.0.16:6379
        replicates b9e11f701c7ca13eb9c35d1b786bd4f5c0fa0731
     Can I set the above configuration? (type 'yes' to accept): yes
     >>> Nodes configuration updated
     >>> Assign a different config epoch to each node
     >>> Sending CLUSTER MEET messages to join the cluster
     Waiting for the cluster to join
     ..
     >>> Performing Cluster Check (using node 172.38.0.11:6379)
     M: 8742bf66934ec467e43d74c9fd2c9c06d1b0adfe 172.38.0.11:6379
        slots:[0-5460] (5461 slots) master
        1 additional replica(s)
     S: 7858895f332bd68775267adf5c3530ab1172fa60 172.38.0.15:6379
        slots: (0 slots) slave
        replicates 8742bf66934ec467e43d74c9fd2c9c06d1b0adfe
     M: e5ae04bff43034f04f0dfa23ee66c4563160aa37 172.38.0.13:6379
        slots:[10923-16383] (5461 slots) master
        1 additional replica(s)
     S: dba613da945914b339adf96a2a7fbc30fb01848e 172.38.0.14:6379
        slots: (0 slots) slave
        replicates e5ae04bff43034f04f0dfa23ee66c4563160aa37
     S: 3472dc464937a645af57ece9a4ec8769ed6b2fa0 172.38.0.16:6379
        slots: (0 slots) slave
        replicates b9e11f701c7ca13eb9c35d1b786bd4f5c0fa0731
     M: b9e11f701c7ca13eb9c35d1b786bd4f5c0fa0731 172.38.0.12:6379
        slots:[5461-10922] (5462 slots) master
        1 additional replica(s)
     [OK] All nodes agree about slots configuration.
     >>> Check for open slots...
     >>> Check slots coverage...
     [OK] All 16384 slots covered.
相关文章
|
1月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
transition过渡属性 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。 但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化, 让效果显得更加细腻。简单点说,就是通过鼠标经过、获得焦点,被点击或对元素任何改变中触发, 并平滑地以动画效果改变CSS的属性值。 在CSS中创建简单的过渡效果可以从以下几个步骤来实现: 在默认样式中声明元素的初始状态样式; 声明过渡元素最终状态样式,比如悬浮状态; 在默认样式中通过添加
180 0
|
1月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
transform变形 css3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的 功能。 CSS3的变形功能可以对HTML组件执行位移、旋转、缩放、倾斜4种几何变换,这样的变换可以控制HTML组件 呈现出丰富的外观。 借助于位移、旋转、缩放、倾斜这4种几何变换,CSS3提供了transition动画。 transition动画比较简单,只要指定HTML组件的哪些CSS属性需要使用动画效果来执行变化,并指定动画时间,就可保证动画播放。 比transitio
141 1
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
上下文选择器(迭代选择器):基于祖先或同胞元素选择一个元素 ID和类选择器:基于id#和class的属性值进行选择元素。 属性选择器:基于属性的有无和特征进行选择。 ①上下文选择器: 上下文选择器的语法格式:标签1 标签2{属性:值;} //注意:组合选择器和上下文选择器的区别,组合选择器以逗号隔开, 上下文选择器以空格隔开 ②特殊的上下文选择器 子选择器> : 语法格式:标签1>标签2 解释说明:标签1和标签2
207 1
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
336 6
|
2月前
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
178 13
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
326 0
|
11月前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
502 76
|
10月前
|
Dart 前端开发 架构师
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
533 26
|
10月前
|
前端开发 应用服务中间件 nginx
docker安装nginx,前端项目运行
通过上述步骤,你可以轻松地在Docker中部署Nginx并运行前端项目。这种方法不仅简化了部署流程,还确保了环境的一致性,提高了开发和运维的效率。确保按步骤操作,并根据项目的具体需求进行相应的配置调整。
928 25
|
10月前
|
存储 Ubuntu 关系型数据库
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
194 13

热门文章

最新文章