• 前端开发从 0 到 1 掌握 docker


    • 对 docker 不是很清楚,但是有对docker感兴趣的同学建议可以看一看该文。.
    • 强烈建议跟着 “ 实战操作 ” 部分一起动手操作,自己亲自操作理解会更加深刻。

    前端从 0 到 1 掌握 docker

    一、docker 的一些基础概念

    概念定义

    1. Docker images:
      Docker 镜像,容器运行的只读模板,操作系统+软件运行环境+用户程序

    2. Docker containers:
      Docker 容器,包含某个应用运行所需要的全部环境

    3. Docker Stash:
      Docker 仓库,用来保存镜像,有公有和私有仓库

    question:什么是docker? 为什么要使用docker?

    • 什么是Dokcer
      百科:一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    • 简单来说:
      就是可以快速部署启动应用,实现虚拟化,完整资源隔离。
      一次编写,四处运行

    二、实战操作 (墙裂建议读者实操一遍)

    • 笔者在梳理相关命令时按实操情况,理解难易,简单分类了一下。关键的操作步骤会提供截图参考,希望大家也能小手动起来!(QAQ)

    Part1 - Linux CentOS 服务安装 Docker

    # 更新yum源。
    yum update
    
    # 安装Docker
    yum install docker-io -y
    
    # 运行Docker
    systemctl start docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    Part2 - 启动、使用、查看等命令

    # 运行Docker守护进程
    systemctl start docker
    
    # 查看Docker状态
    systemctl status docker
    
    # 查看Docker信息
    docker info
    
    # 停止Docker守护进程
    systemctl stop docker
    
    # 重启Docker守护进程
    systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    Part3 - 示例:docker 容器运行

    # 运行 nginx 镜像的容器
    docker run --name mydocker-nginx -p 8080:80 -d nginx
    
    # 其中:
    --name mydocker-nginx:容器的名字叫做mydocker-nginx,名字自己定义
    -p: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
    -d:容器启动后,在后台运行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 运行 nginx 镜像容器 命令行截图:
      在这里插入图片描述
    • 验证结果截图:
      在这里插入图片描述
      成功访问nginx容器
    # 运行 mysql 镜像的容器
    
    docker run --name mysql5.7 --restart always -p 3307:3306 -e MYSQL_ROOT_PASSWORD=12345 -v /home/vagrant/mysql5.7/data:/var/lib/mysql -d mysql:5.7
    
    • 1
    • 2
    • 3
    • 运行 mysql 镜像容器 命令行截图:
      在这里插入图片描述

    • 连接容器中的 mysql 数据库 截图:
      请添加图片描述
      访问成功哦!

    • 我们可以发现,其实本地开发环境如果需要用到 mysql、ng等等是不是可以直接用 docker 启动对应容器呢,这样可以随时迁移我们的开发环境。

    Part4 - 自己写 Dockerfile 创建镜像

    • 一、 创建目录 DockerStudy

    • 二、 目录中创建一个 index.html 文件,内容如下

    ...
    
    

    Hello docker

    Hello docker

    Hello docker

    ...
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 三、 再在目录中创建一个 Dockerfile 文件,内容如下
    FROM nginx
    
    COPY ./index.html /usr/share/nginx/html/index.html
    
    EXPOSE 80
    
    • 1
    • 2
    • 3
    • 4
    • 5

    此时 DockerStudy 目录如下

    DockerStudy
      |____index.html
      |____Dockerfile
    
    • 1
    • 2
    • 3
    • 四、 打包镜像
    cd /usr/local/DockerStudy
    
    docker image build ./ -t docker-study:1.0.1
    
    docker images
    
    • 1
    • 2
    • 3
    • 4
    • 5

    index.html 和 dockerfile 的内容:
    在这里插入图片描述
    我是本地写好再上传到 Linxu 终端

    进入对应目录,打包镜像,查看镜像的命令行截图:
    在这里插入图片描述

    • 五、 根据镜像创建容器
    docker container create -p 12555:80 docker-study:1.0.1
    
    # 刚刚使用 Dockerfile 创建了一个镜像,根据刚刚创建的镜像,创建一个容器
    
    docker start a18bd2a88d14
    
    # 运行容器, a18bd2a88d14 为你自己的容器 id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    根据镜像创建容器 的截图:
    在这里插入图片描述去对应端口验证一下我们自己写的 DockerFile创建的镜像容器是否运行成功
    在这里插入图片描述

    三、Docker 常见命令汇总

    • 搜索镜像:
      docker search xxx

    • 列出当前系统存在的镜像:
      docker images

    • 拉取镜像:
      docker pull xxx

    • 运行容器

    docker run --name xdclass-nginx -p 8080:80 -d nginx
    ​
    docker run - 运行一个容器, name 或者 containerId
          -d 后台运行
          -p 端口映射
          --name "xxx"  容器名称
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 列举当前正在运行的容器:
      docker ps

    • 列举全部容器:
      docker ps -a

    • 检查容器内部信息:
      docker inspect name/containerId

    • 删除镜像:
      docker rmi IMAGE_NAME/containerId

    • 停止某个容器:
      docker stop 容器名称

    • 启动某个容器:
      docker start 容器名称

    • 移除某个容器:
      docker rm 容器名称 (容器必须是停止状态)

    • 查看容器启动日志
      docker logs -f 容器 id

  • 相关阅读:
    LeetCode 146:LRU 缓存
    web前端期末大作业 html+css+javascript火影忍者网页设计实例 动漫网站制作
    【QML】警告Name is declared more than once
    如何在 Mac 上卸载 Java?
    url自动编码问题,包含; / ? : @ & = + $ , #的密文Http url请求问题
    合并k个已排序的链表
    Logo设计教程:从入门到精通的全程指导
    使用 Arduino 和电位器控制直流电机速度
    JDK 17 营销初体验 —— 亚毫秒停顿 ZGC 落地实践
    481. 神奇字符串
  • 原文地址:https://blog.csdn.net/qq_42778289/article/details/132725851