• Docker镜像操作、容器操作、数据卷及挂载数据卷


    目录

    一、镜像操作

    案例:从DockerHub中拉取一个nginx镜像并查看

    案例:利用docker save将nginx镜像导出磁盘,然后再通过load加载回来

    二、容器操作

    案例:创建运行一个Nginx容器

    案例:创建并进入redis容器,并执行redis-cli客户端命令,存入num=888

    三、数据卷操作

    案例:创建一个数据卷,并查看数据卷在宿主机的目录位置

     四、挂载数据卷

    案例:创建一个nginx容器,修改容器内的html目录内的index.html内容


    一、镜像操作

    镜像名称一般分为两部分组成:[repository]:[tag]

    在没有指定tag时,默认是latest,代表最新版本的镜像

    查看镜像:docker images

    格式:docker images [OPTIONS][REPOSITORY[:TAG]]

    参数:

    -a、--all 显示所有图像(默认情况下隐藏中间图像)
           --digedts 显示摘要
    -f、 --filter filter 根据提供的条件过滤输出
           --format string 使用Go模板精确打印图像
           --no-trunc 不截断输出
    -q、--quiet 仅显示图像ID

    删除镜像docker rmi

    格式:docker rmi [OPTIONS]IMAGE [IMAGE...]

    参数:

    -f、 --force 强制删除图像
           --no-prune不删除未标记的父项

    从服务拉取镜像:docker pull

    格式:docker pull [OPTIONS]NAME[:TAG|@DIGEST]

    参数:

    -a、 --all-tags 下载存储库中的所有标记图像
            --disable-content-trust 跳过图像验证(默认为true)
            --platform string 如果服务器支持多平台,则设置平台
    q、  --quit 抑制详细输出

    推送镜像到服务:docker push

    格式:docker push [OPTIONS]NAME[:TAG]

    参数:

    -a,--all-tags 推送存储库中所有已标记的图像。
           --disable-content-trust 跳过图像签名(默认为True)。
    -q,--quiet 禁止详细输出

    保存镜像为一个压缩包:docker save

    格式:docker save [OPTIONS]IMAGE [IMAGE..]

    参数:

    -o,--output string 写入文件,而不是STDOUT

    加载压缩包为镜像:docker load

    格式:docker load [OPTIONS]

    参数:

    -i、 --input string 读取tar存档文件,而不是STDIN
    -q、--quiet抑制负载输出

    注意:查询对应命令的详细格式和参数在对应参数后面加上--help即可查询

    案例:从DockerHub中拉取一个nginx镜像并查看

    1、首先去镜像仓库搜索nginx镜像,地址:

    Docker Hub Container Image Library | App Containerizationhttps://hub.docker.com/2、根据查看的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx

    93d3e348bfb34635b6b572e1d09e6540.png

     3、通过命令:docker images查看拉取到的镜像

    c0c2df72ce6f4717be7f46dad5497de6.png

    案例:利用docker save将nginx镜像导出磁盘,然后再通过load加载回来

    1、利用docker save导出镜像到磁盘

    docker save -o nginx.tar nginx:latest

    0ed92290ff144952b125e38f5852f707.png

    1.5、利用docker rmi删除本地的nginx:latest

    docker rmi nginx:latest

    4fd92c3089d74bd287f5464662590e55.png

     2、使用docker load加载镜像 

    docker load -i nginx.tar 

     0e31f361e78246a2a164628959dc428d.png

    二、容器操作

    案例:创建运行一个Nginx容器

    去docker hub查看Nginx的容器运行命令

    docker run --name containerName -p 80:80 -d nginx
    

    命令解读:

    ● docker run:创建并运行一个容器

    ● --name:给容器起一个名字,比如叫containeName

    ● -p:将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

    ● -d:后台运行容器

    ● nginx:镜像名称,例如nginx

    查看容器日志的命令:docker logs

    t添加 -f 参数可以持续查看日志

    查看容器状态:docker ps

    添加-a参数查看所有状态的容器

    删除容器:docker rm

    不能删除运行中的容器,除非添加 -f 参数

    进入容器:docker exec

    命令是docker exec -it [容器名][要执行的命令]

    -it:给当前进入容器创建已给标准输入、输出终端,允许我们与容器交互

    exec命令可以进入容器修改文件,但是在容器内修改文件不推荐

    案例:创建并进入redis容器,并执行redis-cli客户端命令,存入num=888

    1、到DockerHub搜索Redis镜像,找到需要的版本,并拉取下来,并利用docker run命令运行Redis容器

    docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
    

    2、进入redis容器

    docker exec -it redis bash
    

    3、执行redis-cli客户端命令

    redis-cli

    4、设置数据num=888

    set num 666
    

    三、数据卷操作

    数据卷(volume):是一个虚拟目录,指向宿主机文件系统中的某个目录

    数据卷的作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

    数据卷操作的基本语法如下:

    docker volume [COMMAND]

    docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

    create   创建一个volume

    inspect  显示一个或多个volume的信息

    ls          列出所有的volume

    prune   删除未使用的volume

    rm        删除一个或多个指定的volume

    案例:创建一个数据卷,并查看数据卷在宿主机的目录位置

    1、创建数据卷

    docker volume create html

    2、查看所有数据

    docker volume ls

    9c7a37b0c480474996c36038846812e5.png

     3、查看数据卷详细信息卷

    docker volume inspect html

    2a40a6c9fb4a4aa5baab5318ecb44f31.png

     四、挂载数据卷

    创建容器时,可以通过-v 参数来挂载一个数据卷到某个容器目录

    docker run \                    创建并运行容器

      --name mn \                  给容器起个名字叫mn

      -v html:/root/html \        把html数据卷挂载到容器内的/root/html这个目录中

      -p 8080:80 \                  把宿主机的8080端口映射到容器内的80端口

      nginx \                          镜像名称

    案例:创建一个nginx容器,修改容器内的html目录内的index.html内容

    1、创建容器并挂载数据卷到容器内的html目录

    docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
    

    2、进入html数据卷所在位置,并修改html内容

    1. # 查看html数据卷的位置
    2. docker volume inspect html
    3. # 进入该目录
    4. cd /var/lib/docker/volumes/html/_data
    5. # 修改文件
    6. vi index.html

    数据卷挂载方式:

    -v volumeName:/targetContainerPath

    如果容器运行时volume不存在,会自动被创建出来

    docker run的命令可以通过-v参数挂载文件或目录到容器:

    1、-v volume名:容器内目录

    2、-v 宿主机文件:宿主内文件

    3、-v 宿主机目录:容器内目录

    数据卷挂载与目录直接挂载

    数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找

    目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看

     

  • 相关阅读:
    OPPO主题组件开发 - 调试与预览
    kmalloc、kzalloc、vmalloc、kmem_cache_alloc的区别
    基于知名微服务框架go-micro开发gRPC应用程序
    进程替换与复制
    【系统设计】S3 对象存储
    驱动开发:内核CR3切换读写内存
    Linux常见的指令合集
    探索云世界的无限可能
    用前端写桌面应用
    软件工程(1、2;5~7小测参考答案)
  • 原文地址:https://blog.csdn.net/m0_61961937/article/details/128001967