• docker-day1


    今日内容

    1、docker介绍和传统虚拟机的比较

    2、架构图

    3、安装docker

    4、镜像

    5、容器

    内容详细

    1、docker介绍和传统虚拟机的比较

    1.1什么是虚拟化

    在计算机中虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器,网络,内存及存储等,予以抽象转化后呈现出来,打破实体结构间不可分割的障碍,使用户可以比原本的状态更好的方式使用这些资源。

    1.2什么是docker

    docker的项目目标是实现轻量级的操作系统虚拟化解决方案。docker的基础是linux容器(LXC)等技术。

    go语言实现,开源,很多人用

    docker-ce免费,docker-ee收费

    通过go语言对lxc技术得一个封装

    上手快,简单

    1.3docker和虚拟机的比较

    1,容器是在操作系统层面上实现虚拟化,直接复用本地的操作系统,而传统的方式是在硬件方面实现的。

    2、与传统虚拟机相比,docker的优势体现在启动速度快,占用体积小。

    1.4docker是一个客户端-服务端(c/s)的架构体系(mysql和redis都是cs架构)

    1.5镜像(image)和容器(container)

    镜像运行起来就是容器(真正的执行单位)

    类--->实例

    1.6镜像从哪里来?

    镜像就是一堆文件

    从远程仓库拉取pull

    2、架构图

    我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。 容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。 

    所以Docker容器就是:

    ​ 一个镜像格式;

    ​ 一些列标准操作;

    ​ 一个执行环境。

    ​ Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。

     3、docker安装

    3.1windows安装

    1 windows安装(不建议你装)http://get.daocloud.io/

    3.2ubantu(乌班图)安装

    # 0 卸载
    sudo apt-get remove docker docker-engine docker.io containerd runc
    # 1 安装必要工具
    sudo apt-get update
    sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg-agent \
        software-properties-common
    # 2 安装GPG证书
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    #换成阿里云
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    # 2 写入软件源信息
    #官方
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    #换成阿里云
    sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

    # 3 更新并安装docker-ce
    sudo apt-get -y install docker-ce
    # 4 开启docker服务
     systemctl status docker

    3.3centos安装必须7.0以上

    6.8安装docker,自行搜索,升级内核版本
    docker是在linux3.1以上内核中写出来的,在乌班图下开发的,docker的新特性,乌班图先看到,
    官方建议docker运行在centos7 以上的系统

    安装

    1.更新yum

    yum update

    2.安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

    yum install -y yum-utils device-mapper-persistent-data lvm2

    3.设置yum源为阿里云

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    4.安装

    yum install docker-ce

    5.安装后查看docker版本

    docker -v

    6.卸载docker

    第一种方式:

    remove docker docker-common docker-selinux docker-engin

    rm -rf /var/lib/docker

    第二种方式:

    yum list installed |grep docker

    rpm -qa |grep docker

    yum -y remove docker版本文件包

    rpm -qa |grep docker

    rm -rf /var/lib/docker

    rm -rf /etc/docker

    3.4设置ustc的镜像

    USTC是老牌的linux镜像提供服务者,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。

    编辑该文件

    vi /etc/docker/daemon.json

    在文件中输入如下内容

    { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }

    3.5docker的启动与停止

    systemctl 命令是系统服务管理器命令

    docker的基本命令格式:

     

    启动docker

    systemctl start docker

    停止docker

    systemctl stop docker

    查看docker状态

    sysytemctl status docker

    重启docker

    systemctl restart docker

    开机启动

    systemctl enable docker

    查看docker概要信息

    docker info

    查看docker帮助文档

    docker --help

    4、镜像操作

    4.1docker镜像是什么?

    镜像是docker的一个可执行文件,其中包括运行应用程序所需得所有代码内容,依赖库,环境变量和配置文件等。通过镜像可以创建一个或多个容器。

    一堆文件通过docker跑起来,就是容器。假设centos7镜像跑起来,那么容器就相当于宿主机上跑了一个centos7虚拟机。

    4.2搜索镜像

    docker search 镜像名称

    1. $ docker search ubuntu
    2. #NAME:名称
    3. #DESCRIPTION:基本功能描述
    4. #STARS:下载次数
    5. #OFFICIAL:官方
    6. #AUTOMATED:自动的运行

    4.3获取镜像

    #作用:

    下载远程仓库(如Docker Hub)中的镜像

    #命令格式:

    docker pull [镜像名称]

    #命令演示:

    $ docker pull ubuntu

    $ docker pull nginx

    #注释:

    #获取的镜像在哪里?

    #/var/lib/docker 目录下

    4.4查看镜像

    docker images

    docker iamge ls

    1. #命令演示:
    2. $ docker images
    3. #镜像的ID唯一标识了镜像,如果ID相同,说明是同一镜像。TAG信息来区分不同发行版本,如果不指定具体标记,

    默认使用latest标记信息

    1. #docker images -a 列出所有的本地的images(包括已删除的镜像记录)
    2. #REPOSITORY:镜像的名称
    3. #TAG :镜像的版本标签
    4. #IMAGE ID:镜像id
    5. #CREATED:镜像是什么时候创建的
    6. #SIZE:大小

    4.5镜像重命名

    作用:对本地镜像的NAMETAG进行重命名,并新产生一个命名后镜像

    1. #命令格式:
    2. docker tag [老镜像名称]:[老镜像版本][新镜像名称]:[新镜像版本]
    3. #命令演示:
    4. $ docker tag nginx:latest panda-nginx:v1.0

    4.6删除镜像

    作用:将本地一个或多个镜像删除

    #命令格式:

    docker rmi [命令参数][镜像ID]

    docker rmi [命令参数][镜像名称]:[镜像版本]

    docker image rm [命令参数][镜像]

    #命令演示:

    $docker rmi 3fa822599e10

    $docker rmi mysql:latest

    #注意:

    如果一个image_id存在多个名称,那么应该使用 名称:版本 的格式删除镜像

    #命令参数(OPTIONS)

    -f , --force   强制删除

    4.7导出镜像

    将已经下载好的镜像导出到本地,以备后用。

    作用:将本地的一个或多个镜像打包成本地的tar文件

    1. #命令格式:
    2. docker save [命令参数][导出镜像名称][本地镜像镜像]
    3. #命令参数(OPTIONS)
    4. -o, --output string          指定写入的文件名和路径
    5. #导出镜像
    6. :~$ docker save -o nginx.tar nginx​​​​​​​

    4.8导入镜像

    作用:将save命令打包的镜像导入到本地镜像库中

    #导入镜像命令格式:

    $ docker load [命令参数][被导入镜像压缩文件的名称]

    $ docker load < [被导入镜像压缩文件的名称]

    $ docker load --input [被导入镜像压缩文件的名称]

    #命令参数(OPTIONS)

    -i--input string     指定要打入的文件,如没有指定,默认是STDIN

    #为了更好的演示效果,我们先将nginx的镜像删除掉

    docker rmi nginx:v1.0 docker rmi nginx

    #导入镜像文件:

    $ docker load < nginx.tar

    #注意:

    如果发现导入的时候没有权限需要使用chmod命令修改镜像文件的权限

    4.9查看镜像历史

    docker history 镜像名称:镜像版本

    docker history 镜像ID

    4.10 镜像详细信息

    作用:查看本地一个或多个镜像的详细信息

    docker image 命令参数 镜像名称:镜像版本

    docker inspect 命令参数 镜像ID

    1. #查看镜像详细信息:
    2. $ docker inspect nginx

    4.10 总结

     5、容器

    5.1docker容器技术

    docker容器技术是指Docker是由go语言写的程序运行的“容器”。docker则实现了应用程序级别的隔离,他改变了我们基本的开发,操作单元,由直接操作虚拟主机转换到操作程序运行的“容器”中来。

    5.1查看容器

    docker ps

    1. 作用
    2. 显示docker容器列表
    3. #命令格式:
    4. docker ps
    5. #命令演示:
    6. $ docker ps
    7. #CONTAINER ID 容器ID
    8. #IMAGE 基于那个镜像
    9. #COMMAND  运行镜像使用了哪些命令?
    10. #CREATED多久前创建时间
    11. #STATUS   开启还是关闭
    12. #PORTS端口号
    13. #NAMES容器名称默认是随机的
    14. #注意:
    15. 管理docker容器可以通过名称,也可以通过ID
    16. ps是显示正在运行的容器,     -a是显示所有运行过的容器,包括已经不运行的容器

    5.2删除容器

    docker rm 容器ID/容器名字

    5.3启动并运行容器

    通过centos:centos7镜像,创建一个名为mycentos的容器,并把它运行起来。

    docker run -dt --name=mycentos centos:centos7

    5.4停止容器

    docker stop 容器id/容器名字

    5.5启动容器

    docker start 容器名字/容器id\

    5.6容器的创建和启动

    docker create --name=xxx redis 

    docker start xxx

    5.7创建并启动

      -创建并启动(run)
        -i:表示运行容器
        -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
        -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
        --name :为创建的容器命名。如果不写,会自动分配一个名字(英文人名)
        -v:表示目录映射关系(前者是宿主机目录,后者是容器目录,映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
        -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
        docker run -it --name=myredis redis
            
     # 注意,docker run  镜像 如果本地没有,会先pull,再run

    5.8进入容器的几种方式

    第一种:docker exec -it 容器id /bin/bash

    docker exec 容器id ls

    exec真正的作用是在容器内执行命令

    第二种:ssh连接(容器内部装ssh服务端)

    5.9退出

    exit

    6、文件拷贝

    从宿主机拷贝到容器内部

    docker cp pjq.txt 容器id:/home

    从容器内部拷贝到宿主机

    docker cp 容器id:/home/pjq.txt /app

    7、目录挂载

    docker run -di --name=mycentos -v /home/pjq:/home centos:centos7

    一旦挂载,以后宿主机目录内更改,同样影响容器内部。

    8、端口映射

    docker run -di -p 6377:6379 redis:latest​​​​​​​

    9、 查看容器详细信息


        docker inspect f81
        # 查看ip地址
        docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)

    10、应用部署

    # 在容器内部署mysql


    # -e表示环境变量

    docker run -di --name=mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
    # 官方提供的
    docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
            
    # 在容器内部署redis
    docker run -di -p 6377:6379 redis:latest
            
    # 在容器内部署nginx
    docker run -di --name=mynginx -p 8080:80 nginx

  • 相关阅读:
    善网ESG周报(第一期)
    计算机毕业设计Java大学生学科竞赛管理系统(源码+系统+mysql数据库+lw文档)
    建木DevOps流程梳理
    oh,我这个大佬盆友教我整机器学习
    AI+低代码:开启普惠人工智能时代的新篇章
    代码随想录算法训练营第六十二天 |503.下一个更大元素II、42. 接雨水
    java,mqtt-client开发创建客户端
    day03_基础语法
    51单片机定时器基础知识
    如何在 .NET MAUI 中加载 json 文件?
  • 原文地址:https://blog.csdn.net/m0_59882269/article/details/127640044