Docker 入门 ------ 基本命令

1. 使用Docker镜像

1.1 获取镜像

主要命令:

docker pull NAME[:TAG]

NAME 为镜像名称,后跟:版本号,如果没有跟后面的版本号,默认拉取最新的稳定版本

例子:
在这里插入图片描述
上述命令相当于:docker.io/library/ubuntu:latest

1.2 查看镜像信息

使用images查看已有镜像

docker images

在这里插入图片描述
支持子命令如下:
在这里插入图片描述

使用tag命令添加镜像标签

docker tag [已有镜像] [新镜像名]

在这里插入图片描述

整体来说,docker tag命令添加的标签实际上起到了类似链接的作用.

使用inspect查看详细信息

docker inspect [镜像名]

在这里插入图片描述
可以使用-f来指定主要获取的属性。

docker inspect -f {{“.Architecture”}}

在这里插入图片描述

使用history查看历史镜像

docker history [镜像名]

在这里插入图片描述

1.3 搜索镜像

docker search [名称]

支持的命令:

名称默认作用
–automatedfalse仅显示自动创建的镜像
–no-truncfalse输出信息不截断
-s,–star0指定星级以上的镜像

1.4 删除镜像

docker rmi [镜像名]

在这里插入图片描述

如果你正在使用一个容器,该镜像无法删除
在这里插入图片描述
在这里插入图片描述

此刻你可以使用-f参数来强行删除,但是这并不正确,默认情况您要先停止容器,删除容器,再删除镜像,

1.5 创建镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS内容:

  • -a,–author=“”,表示作者信息
  • -c,–change=[],表示提交时候执行的DockerFile指令
  • -m,–message=“”,表示消息
  • -p,–pause=true,表示提交时暂停容器运行

首先启动一个容器:
在这里插入图片描述

接着执行:
在这里插入图片描述

查看到有test标签为0.1的镜像即为成功。
在这里插入图片描述

本地模板导入

cat [本地模板] | docker import - [自己定义的镜像名]

1.6 存出和载入镜像

存出镜像

docker save -o [存出的文件名] [IMAGE[:TAG]]
在这里插入图片描述

载入镜像

docker load --input [文件名] 或者 docker load < [文件名]
在这里插入图片描述

1.7 上传镜像

docker push NAME[:TAG] | [REGISTERY_HOST[:REGISTRY_HOST]/]NAME[:TAG]

首先再Docker Hub先创建一个仓库:
https://hub.docker.com/

然后为你需要提交的镜像打一个标签,注意!!这里标签需要对应你所建立的仓库名

在这里插入图片描述
注意如果显示冒号:denied: requested access to the resource is denied
有可能是没有登录,执行:docker login(没有账号的要记得去Docker Hub中创建噢)

2. 使用Docker容器

2.1 创建容器

  1. create

docker create -it ubuntu:latest // 创建,但是并不会运行
docker ps -a // 查看目前存在的容器

在这里插入图片描述

在这里插入图片描述

create命令与容器运行模式相关的选项:
在这里插入图片描述

create命令与容器环境和配置相关的选项:
在这里插入图片描述

create命令与容器资源限制和安全保护相关的选项
在这里插入图片描述

  1. 启动容器

docker start 06
在这里插入图片描述

  1. 新建并且创建容器
    除了创建容器后通过start命令来启动,也可以执行新建并且创建,所需命令主要为docker run 等价于,先docker createdocker start

docker run ubuntu /bin/echo ‘hello world’

重点:所执行的操作:

  • 检查本地是否存在指定的镜像,不存在就从公有镜像中下载
  • 利用镜像创建一个容器,并且启动
  • 分配一个文件系统给容器,并在只读的镜像层外面挂在一个可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中
  • 从网桥的地址池配置一个IP地址给容器
  • 执行用户特定的程序应用
  • 执行完毕后容器被自动终止。

执行:docker run -it ubuntu /bin/bash
其中,-t表示Docker 分配一个伪终端并绑定到容器的标准输出上,-i则表示容器的标准输入保持打开
在这里插入图片描述
运行容器时常见的错误:

  • 125:Docker daemon 执行错误,例如制定了不支持的Docker命令参数
  • 126:所指定命令无法执行,例如权限错误
  • 127:容器内命令无法找到
  1. 守护态运行

docker run -d ubuntu /bin/sh -c “while true;do echo hello world;sleep 1;done” // 会在后台持续运行
docker ps
docker logs [id] // 查看输出信息
在这里插入图片描述
在这里插入图片描述

2.2 终止容器

在Docker中可以使用docker stop来终止一个运行中的容器。

docker stop [id]

注意docker kill 命令会直接发送 SIGKILL信号来强行终止容器

docker restart // 重新启动

2.3 进入容器

2.3.1 attach命令

docker attach [–detach-keys[=[]]] [–no-stdin] [–sig-proxy[=true]] 容器名

描述选项

命令描述
–detach-keys退出attach的快捷键,默认是CTRL-p CTRL-q
–no-stdin是否关闭标准输入,默认true
–sig-proxy是否代理收到的系统信号给进程,默认true

在这里插入图片描述

使用attach命令有时候并不方便,多个窗口同事attach连接到同一个容器的时候,所有窗口都会显示同步,所以当阻塞时,便无法使用了

2.3.2 exec命令

docker exec [OPTIONS] 容器名

这里我们主要说几个重要的OPTIONS

命令描述
-i,–interative打开标准输入接受用户输入命令,默认为false
–privileged是否给执行命令最高权限,默认false
-t,–tty分配伪终端,默认false
-u,–user=“”执行命令的用户名或者ID

在这里插入图片描述

注意:通过指定-it参数来保持标准输入打开,并且分配一个伪终端。通过exec命令对容器执行操作时最为推荐的方式

2.4 删除容器

docker rm [OPTIONS] 容器名|容器ID

这里我们主要说几个重要的OPTIONS

命令描述
-f,–force是否强行终止并且删除一个容器
-l,–link删除容器的链接,但保留容器
-v,–volumes删除容器挂在数据卷

在这里插入图片描述

2.5 导出和导入

2.5.1. 导出容器

docker export [-o | --output[=“”]] 容器名 // -o表示导出的tar文件名

在这里插入图片描述

2.5.2 导入容器

docker import [-c|–change[=“”]] [-m|message[=“”]] file|URL-[REPOSITORY[:TAG]] // -c 可以执行DOCKERFILE指令,后面会说
在这里插入图片描述

**和load的区别:**load来导入镜像存储文件到本地镜像库,import导入一个容器快照到本地镜像库,容器快照文件会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积因此更大。

3. 访问Docker 仓库

仓库是集中存放镜像的地方,分公共仓库和私有仓库

3.1 Docker Hub公共镜像市场

使用步骤:

  1. 登录:docker login,输入用户名密码,可以完成注册或者登录
  2. docker search:可以查找镜像
  3. docker pull:拉取到本地
    在这里插入图片描述
    我们可以通过-s N参数可以指定仅显示评价为N星以上的镜像

自动创建

自动创建功能对于需要经常升级镜像内的程序来说,十分方便。有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像。
而自动创建允许用户通过Docker Hub指定跟踪一个目标网站(目前支持GitHub或者BitBucket)上的项目,一旦项目发生新的提交,则自动执行创建。

操作步骤:

  1. 创建并登录Docker Hub,以及目标网站:*在目标网站中连接帐户到Docker Hub
  2. 在Docker Hub中配置一个“自动创建”
  3. 选取一个目标网站中的项目(需包含Dockerfile)和分支
  4. 指定Dockerfile位置,并提交创建

3.2 搭建本地仓库

可以通过官方提供的:docker run -d -p 5000:5000 register 来搭建
默认仓库创建在容器的/tmp/registry目录下,可以通过-v来修改。

4. Docker 数据管理

容器管理数据的两种主要方式:

  1. 数据卷:容器内数据直接映射到本地主机
  2. 数据卷容器:使用特定容器维护数据卷

4.1 数据卷

4.1.1 在容器内创建

docker run -d -P --name web -v /webapp training/webapp python app.py

-v标记可以创建多个数据卷。上述代码表示使用training/webapp镜像创建一个web容器,并创建一个数据卷挂载到容器的/webapp目录
-P表示容器服务暴露的端口,自动映射到本地的临时端口。

4.1.2 挂载一个主机目录作为数据卷

docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

表示加载主机的/src/webapp目录到容器的/opt/webapp目录

docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py

默认的数据卷是读写模式,可以增加:ro表示为只读

4.1.3 挂在一个本地主机文件作为数据卷

-v 可以从主机挂载单个文件到容器中作为数据卷(**不推荐**)

docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

4.2 数据卷容器

docker run -it -v /dbdata --name dbdata ubuntu // 创建一个dabata数据卷容器 并且创建一个数据卷挂载到/dbdata
ls // 查看/dbdata

可以使用-v在其他容器中来挂载dbdata容器中的数据卷

docker run -it -v dbdata --name db1 ubuntu
docker run -it -v dbdata --name db2 ubuntu

这样三个容器在任何一方在该目录下的写入,其他容器都可以看到。

可以多次使用 --volumes-from|-v 参数来从多个容器挂载多个数据卷,还可以从其他已经挂载了容器卷的容器来挂载数据卷。

最后:注意!如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式使用docker rm -v 命令来指定删除关联的容器

总结

本章主要描述了Docker的基本命令,包括镜像:创建、删除、标签等,并且如何从远程仓库拉取下来,容器的运行如何进入容器等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/226916.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习之K-means聚类

概念 K-means是一种常用的机器学习算法,用于聚类分析。聚类是一种无监督学习方法,它试图将数据集中的样本划分为具有相似特征的组(簇)。K-means算法的目标是将数据集划分为K个簇,其中每个样本属于与其最近的簇中心。 以下是K-means算法的基本步骤: 选择簇的数量(K值)…

彻底理解前端安全面试题(1)—— XSS 攻击,3种XSS攻击详解,建议收藏(含源码)

前言 前端关于网络安全看似高深莫测&#xff0c;其实来来回回就那么点东西&#xff0c;我总结一下就是 3 1 4&#xff0c;3个用字母描述的【分别是 XSS、CSRF、CORS】 一个中间人攻击。当然 CORS 同源策略是为了防止攻击的安全策略&#xff0c;其他的都是网络攻击。除了这…

Prometheus通过consul实现自动服务发现

环境,软件准备 本次演示环境&#xff0c;我是在虚拟机上安装 Linux 系统来执行操作&#xff0c;以下是安装的软件及版本&#xff1a; System: CentOS Linux release 7.6Docker: 24.0.5Prometheus: v2.37.6Consul: 1.6.1 注意&#xff1a;这里为了方便启动 Prometheus、Consul服…

RPC介绍

什么是RPC RPC是远程过程调用&#xff08;Remote Procedure Call&#xff09;的缩写形式。在学校学编程&#xff0c;我们写一个函数都是在本地调用就行了。但是在互联网公司&#xff0c;服务都是部署在不同服务器上的分布式系统。 SAP(System Applications and Products/企业管…

k8s的资源管理

命令行: kubectl命令行工具优点: 90%以上的场景都可以满足 对资源的增&#xff0c;删&#xff0c;查比较方便&#xff0c;对改不是很友好缺点:命令比较冗长&#xff0c;复杂难记 声明方式&#xff1a;k8s当中的yaml文件实现资源管理----声明式GUI:图形化工具的管理。 查看k8s的…

写在2023岁末:敏锐地审视量子计算的当下

本周&#xff0c;《IEEE Spectrum》刊登了一篇出色的文章&#xff0c;对量子计算&#xff08;QC&#xff09;的近期前景进行了深入探讨。 文章的目的并不是要给量子计算的前景泼冷水&#xff0c;而是要说明量子计算的前景还很遥远&#xff0c;并提醒读者量子计算的用例可能很窄…

昇腾910平台安装驱动、固件、CANN toolkit、pytorch

本文使用的昇腾910平台操作系统是openEuler&#xff0c;之前没了解过&#xff0c;不过暂时感觉用起来和centOS差不多。系统架构是ARM&#xff0c;安装包基本都是带aarch64字样&#xff0c;注意和x86_64区别开&#xff0c;别下错了。 安装依赖 cmake 通过yum安装的cmake版本较…

GLTF 编辑器实现逼真3D动物毛发效果

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 要实现逼真的3D动物毛发效果&#xff0c;可以采用以下技术和方法&…

Vue2+element-ui 实现select选择器结合Tree树形控件实现下拉树效果

效果&#xff1a; DOM部分 &#xff1a; // 设置el-option隐藏的下拉选项&#xff0c;选项显示的是汉字label&#xff0c;值是value // 如果不设置一个下拉选项&#xff0c;下面的树形组件将无法正常使用 <el-form-item label"报警区域" prop"monitorId"…

【音视频 ffmpeg 学习】 跑示例程序 持续更新中

环境准备 在上一篇文章 把mux.c 拷贝到main.c 中 使用 attribute(unused) 消除警告 __attribute__(unused)/** Copyright (c) 2003 Fabrice Bellard** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated docu…

Ubuntu 安装MySQL以及基本使用

前言 MySQL是一个开源数据库管理系统&#xff0c;通常作为流行的LAMP&#xff08;Linux&#xff0c;Apache&#xff0c;MySQL&#xff0c;PHP / Python / Perl&#xff09;堆栈的一部分安装。它使用关系数据库和SQL&#xff08;结构化查询语言&#xff09;来管理其数据。 安装…

解析Web自动化测试工具能做什么?

随着互联网的蓬勃发展&#xff0c;Web应用程序在我们生活和工作中扮演着愈发重要的角色。为确保这些Web应用程序的质量、稳定性和安全性&#xff0c;Web自动化测试工具应运而生。本文将介绍Web自动化测试工具的多重功能&#xff0c;以及它们如何在软件开发生命周期中发挥关键作…

【React源码 - ReactDom.render发生了什么】

在React开发中&#xff0c;在入口文件我们都会执行ReactDom.render来讲整个应用挂载在主document中&#xff0c;那其中发生了什么&#xff0c;React是如何讲我们写的JSX代码&#xff0c;一步一步更新Fiber进而挂载渲染的呢。本文主要是基于react17.0.2的源码以及自己的理解来简…

下载和安装AD14 - Altium Designer 14.3.20.54863

这个版本应该还支持XP 系统[doge]&#xff0c;总之就是想安装一下&#xff0c;没什么特别的意义。 下载 资源来自毛子网站&#xff1a;https://rutracker.net/forum/viewtopic.php?t5140739&#xff0c;带上个网页翻译插件就行。要用磁力链接下载&#xff0c;推荐用qbittorr…

UE4开发BIM程序 的 流程

某机构BIM设计研究中心主任马晓龙&#xff0c;他对编程颇有研究。今天他会用通俗易懂的语言来讲解基于游戏引擎UE4的BIM技术可视化应用。对于想要自己开发程序的设计师一定要读一下&#xff01; 1&#xff09;关于UE4——UE4是什么&#xff1f; 可以简单的理解为&#xff0c;一…

c基础学习(一)

学习网站&#xff1a; C语言的过去与未来 - C语言教程 - C语言网 (dotcpp.com)https://www.dotcpp.com/course/c-intros/ C 语言简介 - C 语言教程 - 网道 (wangdoc.com)https://wangdoc.com/clang/intro 变量&#xff1a; #include<stdio.h> /*引入头文件-- 标准…

docker入门概念详解

本篇文章对docker的一些基础概念和周边概念进行了详细解释。帮助你可以很好的理解docker是用来干什么的&#xff0c;docker是怎么工作的。其中有docker所运用到的技术解释&#xff0c;docker的不同发展版本&#xff0c;dokcer的架构&#xff0c;docker的生态等等详解。希望本片…

Unity中Shader裁剪空间推导(透视相机到裁剪空间的转化矩阵)

文章目录 前言一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化1、观察空间&#xff08;右手坐标系、透视相机&#xff09;2、裁剪空间&#xff08;左手坐标系、且转化为了齐次坐标&#xff09;3、屏幕空间&#xff08;把裁剪坐标归一化设置&#xff09;4、从观察空…

Linux文件编程

目录 1、Linux系统提供的文件编程API 1.1打开文件&#xff1a;open 1.2创建文件creat函数 1.3写入文件write函数 1.4读取文件read函数 1.5文件光标位置lseek函数 2、另外一组文件编程API 2.1文件打开函数fopen 2.2读文件函数fread 2.3写文件函数fwrite 2.4文件光标位…

github鉴权失败

问题&#xff1a; 如上图所示 git push 时发生了报错&#xff0c;鉴权失败&#xff1b; 解决方案 Settings->Developer settings->Personal access tokens->Generate new token。创建新的访问密钥&#xff0c;勾选repo栏&#xff0c;选择有效期&#xff0c;为密钥命…