前端学习案例-初识docker

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 前端学习案例-初识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.
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
移动开发 前端开发 JavaScript
从零开始学习前端开发:入门指南
本文将介绍从零开始学习前端开发的入门指南。通过学习HTML、CSS和JavaScript等基础知识,读者将了解前端开发的基本概念和工具,并学会如何构建简单的网页应用程序。无论您是初学者还是有一定经验的开发人员,本文都将帮助您打下坚实的前端开发基础。
|
2月前
|
资源调度 前端开发 Shell
[docker] DevContainer高效开发(第二篇):前端开发体验
上面的配置只是最基本的配置,大部分情况我们是需要自定义配置,让容器更符合我们的需求。自定义配置就需要用到 Dockerfile,这个文件是 docker 的配置文件,可以在里面安装软件,配置环境等等。Dockerfile 的语法可以参考 官方文档。然后根据自己的需求编写 Dockerfile# 设置变量,由 .devcontainer.json 中的 args 传入# 指定 node 版本# 设置编码# 设置工作目录# 挂载 volume# 设置 bash 为默认 shell。
|
2月前
|
JavaScript 前端开发 Java
纯前端JS实现人脸识别眨眨眼张张嘴案例
纯前端JS实现人脸识别眨眨眼张张嘴案例
67 0
|
3月前
|
存储 开发框架 前端开发
从零开始学习前端开发
前端开发是现代互联网应用程序开发中不可或缺的一部分。本文将带您从零开始学习前端开发,包括HTML、CSS和JavaScript等核心技术,以及常见的开发框架和工具。
|
3天前
|
前端开发 jenkins 持续交付
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
14 1
|
1月前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
151 0
|
15天前
|
存储 移动开发 JavaScript
学习javascript,前端知识精讲,助力你轻松掌握
学习javascript,前端知识精讲,助力你轻松掌握
|
21天前
|
监控 Docker 容器
Docker从入门到精通:Docker log 命令学习
了解 Docker 日志管理对容器监控至关重要。`docker logs` 命令用于查看和管理容器日志,例如,`docker logs &lt;container_name&gt;` 显示容器日志,`-f` 或 `--follow` 实时跟踪日志,`--tail` 显示指定行数,`--timestamps` 添加时间戳,`--since` 按日期筛选。Docker 支持多种日志驱动,如 `syslog`,可通过 `--log-driver` 配置。有效管理日志能提升应用程序的稳定性和可维护性。
17 0
|
29天前
|
存储 Ubuntu Docker
Docker从入门到精通:Docker pull命令学习
了解Docker镜像下载方法!使用`docker pull`命令从[Docker Hub](https://hub.docker.com/)获取镜像。基本语法是`docker pull NAME[:TAG]`。例如,拉取Python最新镜像的命令是`docker pull python`或`docker pull python:latest`。可选参数包括`-a`(拉取所有标签)和`--quiet`(只显示进度条)。拉取后,用`docker images`检查镜像是否成功存储。开始你的容器化之旅吧!
33 0
|
29天前
|
关系型数据库 MySQL Go
Docker从入门到精通:Docker镜像相关命令学习
本文介绍了Docker中管理镜像的基本命令:`docker images`用于查看镜像列表,`docker search`从Docker Hub搜索镜像,`docker rmi`删除镜像,`docker tag`则用于标记和重命名镜像。通过这些命令,用户能有效管理自己的Docker镜像资源。
28 1