• 【云原生kubernetes从入门到实践系列教程 ] 二.docker操作


    基础教程

    1.相关知识

    (1) docker构成

    • 镜像(Image): 文件生成的容器实例,本身也是一个文件,称为镜像文件。
    • 容器(Container):运行承载一种服务,相当于给你写的服务套了一层壳,可以通过docker客户端创建一个对应的运行实例。等学会docker后,部署服务简直不要太简单。
    • 仓库(Registry):保存用户创建的镜像,仓库分共有和私有两种。Docker公司自己提供了最大的公有仓库Docker Hub。

    (2). 在操作docker之前我们要了解一下docker hub一个类似于github的镜像管理网站。如下图所示
    在这里插入图片描述
    基本上docker的镜像都是从这个地方拉取的,接下来我们实际操作一下。

    2.案例讲解

    我们先将镜像(Image)和容器(Container)。以实际搭建一个nginx的静态页网站为例。下面是实例教程:

    (1). 创建Dockerfile

    vim Dockerfile写入一下内容

    #告诉docker使用哪个基础镜像作为模板,后续命令都以这个镜像为基础
    FROM nginx:alpine
    LABEL maintainer="linming"
    # 设置编码
    ENV LANG en_US.UTF-8
    ENV LC_ALL en_US.UTF-8
    
    # 设置镜像源
    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories \
        && apk update \
        && apk add --no-cache tzdata \
        && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
        && echo "Asia/Shanghai" > /etc/timezone
    
        
    # 设置时区
    ENV TZ Asia/Shanghai
    
    # 开启80端口
    EXPOSE 80
    # docker执行命令
    CMD ["nginx", "-g", "daemon off;"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    (2). 本地构建镜像
    $ docker build . -t nginx:v1 -f Dockerfile
    
    • 1
    • docker build -- docker 命令
    • . -- 当前路径
    • nginx:v1 -- 镜像的名称,可以自定义
    • -f Dockerfile -- 当前Dockerfile文件

    在这里插入图片描述
    构建完毕。可以用docker images 查看当前构建的镜像,如果不想本地构建,可以直接使用docker pull nginx:alpine 拉取最新镜像

    (3).创建镜像容器
    $ docker run --name my-nginx-alpine  -p 8080:80 -d nginx:v1
    
    • 1
    • docker run -- docker 命令
    • --name my-nginx-alpine -- 容器名称
    • -p 8080:80 --宿主机与容器的映射端口
    • -d nginx:v1 -- 使用的镜像

    至此,容器构建完毕,可以使用docker ps 查看当前容器。
    注:如果容器启动失败,可使用 docker logs 容器ID查看日志
    在这里插入图片描述
    最后防火墙开8080端口,浏览器访问docker机器所在的ip,port ,http://ip:8080,你就可以看到一个熟悉的nginx的index页面。至此容器的简单操作完毕,其他命令的使用我们会在后续的课程中详细讲解。
    在这里插入图片描述

    (4).进入容器
    $ docker exec -ti my-nginx-alpine /bin/sh
    
    • 1
    • docker exec -- docker 命令
    • -ti my-nginx-alpine -- 容器名称
    • /bin/sh -- 命令的后缀,有时可以写/bash
    3.个人笔记
    (1).拉取镜像
    $ docker pull images-name #images-name镜像名
    $ docker images #列举当前系统镜像
    
    • 1
    • 2
    (2).创建镜像容器
    $ docker run --name my-nginx-alpine -d nginx:alpine
    
    • 1
    (3).进入容器
    $ docker exec -ti my-nginx-alpine /bin/sh
    
    • 1
    (5). 创建Dockerfile
    #告诉docker使用哪个基础镜像作为模板,后续命令都以这个镜像为基础
    FROM ubuntu
    #RUN命令会在上面指定镜像中执行
    RUN apt-get update && apt install -y nginx
    #告诉docker,启动容器是执行如下命令
    CMD ["/usr/sbin/nginx","-g","daemon off;"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    (6). 本地构建
    $ docker build . -t my-nginx:ubuntu -f Dockerfile
    
    • 1
    (7). 宿主机访问
    #删除旧服务,重新启动
    $ docker rm -f my-nginx-alpine
    $ docker run --name my-nginx-alpine -d -p 8080:80 nginx:alpine
    $ docker run -d -p 5000:5000 --restart always --name registry registry:2
    $ curl ip:80
    
    • 1
    • 2
    • 3
    • 4
    • 5
    (8).导出/导入镜像
    #导出
    $ docker save -o nginx-alpine.tar nginx:alpine
    #导入
    $ docker load -i nginx-alpine.tar
    
    • 1
    • 2
    • 3
    • 4
    (9).docker镜像内文件和宿主机互相拷贝

    将本地文件拷贝到docker 镜像内

    # docker cp 本地路径 容器Id或name:容器目录 
    $ docker cp /home/jackson.jar elasticsearch:/opt/soft/jars/
    
    • 1
    • 2

    将docker内文件拷贝到本地文件夹内

    # docker cp 容器Id或name:镜像路径 本地路径
    $ docker cp elasticsearch:/opt/soft/jars/jackson.jar  /home/alex/jars/ 
    
    • 1
    • 2

    ------------------------------------------------------------------------------------------------------

    课程链接

    docker基础操作

    【云原生kubernetes从入门到实践 ] 一.docker安装

    【云原生kubernetes从入门到实践 ] 二.docker操作

    【云原生kubernetes从入门到实践 ] 三.docker私有镜像源
    【云原生kubernetes从入门到实践 ] 四.docker volumes 持久化
    【云原生kubernetes从入门到实践 ] 五.docker网络介绍
    【云原生kubernetes从入门到实践 ] 六.docker应用容器实践

    k8s 基础操作

    【云原生kubernetes从入门到实践 ] 一.k8s 集群介绍
    【云原生kubernetes从入门到实践 ] 二.k8s 集群理解
    【云原生kubernetes从入门到实践 ] 三.k8s yaml编写即开发
    【云原生kubernetes从入门到实践 ] 四.k8s deploy介绍
    【云原生kubernetes从入门到实践 ] 五.k8s service访问
    【云原生kubernetes从入门到实践 ] 六.k8s etcd数据库操作
    【云原生kubernetes从入门到实践 ] 七.k8s 网络配置
    【云原生kubernetes从入门到实践 ] 八.k8s 认证授权

    k8s 运维监控

    【云原生kubernetes从入门到实践 ] 一.k8s Rancher部署
    【云原生kubernetes从入门到实践 ] 二.Prometheus监控
    【云原生kubernetes从入门到实践 ] 三.k8s Grafana展示
    【云原生kubernetes从入门到实践 ] 四.k8s Alertmanager告警

    k8s Devops自动化部署

    【云原生kubernetes从入门到实践 ] 一.k8s DevOps平台实践
    【云原生kubernetes从入门到实践 ] 二.k8s Pipline流水线
    【云原生kubernetes从入门到实践 ] 三.k8s 多分支流水线
    【云原生kubernetes从入门到实践 ] 四.k8s Jenkins容器集成
    【云原生kubernetes从入门到实践 ] 五.k8s SonarQube代码扫描
    【云原生kubernetes从入门到实践 ] 六.k8s RobotFramework集成
    【云原生kubernetes从入门到实践 ] 七.k8s SharedLibrary进行CICD
    【云原生kubernetes从入门到实践 ] 八.k8s sharedLibrary集成K8S服务部署
    【云原生kubernetes从入门到实践 ] 九.k8s 多环境部署

    k8s 项目交付

    【云原生kubernetes从入门到实践 ] 一.k8s Python Flask项目交付
    【云原生kubernetes从入门到实践 ] 二.k8s Vue项目交付
    【云原生kubernetes从入门到实践 ] 三.k8s Springcloud项目交付

  • 相关阅读:
    PHP设计模式初探 以前写的完整PPT!!!!!
    TypeScript 快速入门之基础语法(一篇文章精通系列)(我的第一个TS程序【一】)【WebStorm版本】
    单片机实验——水塔自动抽水系统设计(基于Proteus仿真)
    CE修改植物大战僵尸-关卡基址(小宇特详解)
    RabbitMQ 消息中间件 消息队列
    避坑丨一次看懂软著软件著作权登记避免「补正」的“方法”……
    区块链跨链技术
    一个简单的HTML网页 个人网站设计与实现 HTML+CSS+JavaScript自适应个人相册展示留言博客模板
    React: 组件介绍 Components
    文件上传 upload 组件 on-success 事件,添加自定义参数
  • 原文地址:https://blog.csdn.net/llm765800916/article/details/126557499