docke入门基础知识

news2025/7/8 8:54:32

一、Docker 架构

Docker 包括三个基本概念:

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
在这里插入图片描述
在这里插入图片描述

二、制作自己的docker镜像

制作属于自己的Docker镜像,一般有两种方式,第一种为commit方式,利用已有的镜像,运行后安装定制自己需要的环境,然后生成镜像;另一种就是build方式,通过编写Dockerfile命令脚本进行生成镜像。
准备工作
准备一个用来制作镜像的容器。这里我们使用centos安装nginx的容器。容器的制作方法如下,拉取 CentOS7 镜像

1、docker images 当前镜像空
在这里插入图片描述
2、docker pull centos:centos7 拉取镜像
在这里插入图片描述
3、进入镜像,安装nignx

docker run -it docker.io/centos:centos7 /bin/bash

 安装 wget
yum install wget -y

4、启动容器
在这里插入图片描述
这里能看到我们的容器ID为f244d3271c14,就是用该容器,制作一个自己的镜像。

使用docker commit制作镜像
语法如下:

&docker commit <container的ID> <新的image_name>
1、docker commit f244d3271c14 centos7:wget
在这里插入图片描述
发布镜像
这里将镜像发布到hub.docker.com,docker的官方仓库。需要https://hub.docker.com/注册账号,使用命令行登录到docker hub
在这里插入图片描述
在这里插入图片描述
使用自己的镜像->创建容器
&docker run -it lxshub/centos7:wget /bin/bash
在这里插入图片描述
在这里插入图片描述

docker删除注意点:
 
1. 删除前需要保证容器是停止的  stop
2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID  ,其中 容器(rm)  和 镜像(rmi)
3. 顺序需要先删除容器
 
#暂停所有容器
docker stop $(docker ps -a -q)
 
#删除所有容器
docker rm $(docker  ps -a  -q)
 
#删除所有镜像
docker rmi $(docker images -q)
登录的信息保存在  .docker/config.json 

在这里插入图片描述
方法参考:
https://blog.csdn.net/qq_15371293/article/details/122358178
https://blog.csdn.net/qq_36274515/article/details/87910704

三、docker相关命令详解:

dockerCommands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

查看docker下面的容器(ID可以从dcoker ps -a获取);

&sudo docker ps

在这里插入图片描述
Docker容器的退出操作有两种情况:
1、容器外面,关闭容器,这种情况退出方式多样,存在着是否保存他的运行情况,Ctrl+P和Ctrl+Q分别按,可以退出容器,让容器仍运行,命令Ctrl+D和exist退出容器,不运行、在容器里面退出可以使用docker stop 容器名/id。
2、是关于启动的,我们可以使用 docker attach 容器名/id 连接已经启动的容器 和docker start 容器名/id启动关闭的容器
在这里插入图片描述
实例:
1.查看镜像名(sudo docker images
在这里插入图片描述
2.创建容器
docker run -it (容器的名字) /bin/bash
命令主要为docker run , 等价于先执行docker create命令,在执行docker start命令
数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的/bin/bash。
要退出终端,直接输入 exit:
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式(注在镜像名后面加上对应的tag)
&sudo docker run -itd --name manba nvidia-ai-build:v1
在这里插入图片描述
&docker run -it -d -p 8084:8080 --name=stars stars:v1
查看docker启动状态(最后一个参数star:v1是我们前面制作出来的镜像的REPOSITORYTAG用引号拼接
name=stars 是定义启动的容器的名字,后面使用命令查看容器的时候看到的IMAGE就是
8080使我们在项目中定义的项目访问端口
8084是docker启动的容器的访问端口
(docker不会允许直接访问项目的端口,会给我们做一个映射,就像nginx一样,我们浏览器访问项目的时候使用8084,docker会给我们映射到服务器项目的8080端口上。)

&systemctl status docker
在这里插入图片描述
4.查看docker版本
&docker version
在这里插入图片描述
5.检查加速器是否生效
检查加速器是否生效配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功执行docker info

$ docker info
Registry Mirrors:
    https://reg-mirror.qiniu.com

6.OPTIONS说明:
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
-a指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项。
-d后台运行容器,并返回容器ID。 #使用docker镜像mysql:5.7以后台模式启动一个容器,并将容器命名为mysql。 docker run --name mysql -d mysql:5.7
-e设置环境变量。 #使用docker镜像mysql:5.7以后台模式启动一个容器,并将容器命名为mysql #将容器的3306端口映射到主机3307端口 #将root用户的密码设为root 。
docker run -p 3307:3306 --name mysql\ -e MYSQL_ROOT_PASSWORD=root\ -d mysql:5.7
-h指定容器的hostname。
-i以交互模式运行容器,通常与 -t 同时使用。
-m设置容器使用内存最大值。
-P随机端口映射,容器内部端口随机映射到主机的端口。
使用镜像mysql:5.7以后台模式启动一个容器,并将容器的3306端口映射到主机随机端口。
docker run -P -d mysql:5.7
-p指定端口映射,格式为:主机(宿主)端口:容器端口。 使用镜像mysql:5.7以后台模式启动一个容器,并将容器的3306端口映射到主机3307端口。
docker run -p 3307:3306 -d mysql:5.7
-t为容器重新分配一个伪输入终端,通常与 -i 同时使用。
-v绑定一个卷。 #使用镜像mysql:5.7,以后台模式启动一个容器,将容器的3306端口映射到主机的3306端口 #的容器目录/etc/mysql/data映射到主机的/mydata/myql/data。
docker run -p 3306:3306 -v /mydata/myql/data:/etc/mysql/data -d mysql:5.7
--cpuset绑定容器到指定CPU运行。
--dns指定容器使用的DNS服务器,默认和宿主一致。
--dns-search指定容器DNS搜索域名,默认和宿主一致。
--env-file从指定文件读入环境变量。
--expose开放一个端口或一组端口。
--link添加链接到另一个容器。
--name为容器指定一个名称。 #使用docker镜像mysql:5.7以后台模式启动一个容器,并将容器命名为mysql。 docker run --name mysql -d mysql:5.7
--net指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型。
-volume绑定一个卷。 通过浏览器访问接口即可http://192.168.1.1:8084/test

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

html前端跨域问题的解决方案

前言&#xff1a; 在前端发出Ajax请求的时候&#xff0c;有时候会产生跨域问题&#xff0c;报错如下: Access to XMLHttpRequest at ‘http://127.0.0.1/api/post’ from origin ‘null’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is pre…

WINSOFT ComPort轻松连接到各种串行端口和连接设备

WINSOFT ComPort轻松连接到各种串行端口和连接设备 WINSOFT ComPort是一个Delphi库和CBuilder&#xff0c;通过USB端口连接到输入设备。该库提供CP210x、CP2130、CDC、FTDI、PL2303和CH34x设备。这些标准包括广泛的设备和电气从设备。例如&#xff0c;除了标准输入设备之外&…

Android App开发之利用Glide实现图片的三级缓存Cache讲解及实战(附源码 超详细必看 简单易懂)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、利用Glide实现图片的三级缓存 图片加载框架之所以高效&#xff0c;是因为它不但封装了访问网络的步骤&#xff0c;而且引入了三级缓存的机制。具体来说&#xff0c;是先到内存中查找图片&#xff0c;找到了就直接显示内存图…

国内访问Github超级慢?那是你没有用我这个脚本。直接起飞。

导语 之前很多朋友咨询过国内访问Github较慢的问题&#xff0c;然后我一般让他们自己去知乎上找攻略&#xff0c;但今天我才发现网上竟然没有一个一键配置的脚本&#xff0c;一般都需要我们跟着教程一步步地去做才行。这也太麻烦了&#xff0c;于是自己动手写了个脚本&#xf…

2-1 C++类的转换函数与禁止隐士转换(explicit)

1. 转换函数与explicit关键字 1.1 转换函数 下述代码的第5行operator double()即是一个转换函数&#xff0c;通过这个函数&#xff0c;编译器可以在需要的情况下&#xff0c;直接将Fraction类型的对象转换为double类型。这个函数有两个特点&#xff1a;首先因为转换函数的返回…

FFplay文档解读-50-多媒体过滤器四

32.21 showspectrumpic 将输入音频转换为单个视频帧&#xff0c;表示音频频谱。 过滤器接受以下选项&#xff1a; size&#xff0c;s指定输出的视频大小。 有关此选项的语法&#xff0c;请查阅&#xff08;ffmpeg-utils&#xff09;视频大小语法。 默认值为4096x2048。 mod…

Spring Boot入门必会(基本介绍+依赖管理+自动装配)

目录 一.基础入门 1.Spring Boot 是什么? 2.SpringBoot 快速入门 2.1完成步骤 2.2快速入门小结 3.Spring SpringMVC SpringBoot 的关系 3.1梳理关系 3.2如何理解 -约定优于配置 二.依赖管理和自动配置 1.依赖管理 1.1 什么是依赖管理 1.2 修改自动仲裁/默认版本号 …

论文阅读-Federated Social Recommendation with Graph NeuralNetwork

基于图神经网络的联邦社交推荐 1. 引言 因此&#xff0c;针对社交推荐任务&#xff0c;我们设计了一个联邦学习推荐系统&#xff0c;该系统具有异构性、个性化和隐私保护要求&#xff0c;具有一定的挑战性。为此&#xff0c;设计了一个基于图神经网络(FeSoG)的联邦社交推荐框…

【RHCE】ansible的简单配置

目录 使用静态清单文件指定受管主机 定义主机清单 定义方式 使用静态主机清单指定受管主机&#xff08;默认&#xff09; 验证清单 第一种方式 第二种方式&#xff08;图表形式显示&#xff09; 选择主机和组&#xff1a; 1>匹配所有主机 2>匹配指定的主机或者主…

二叉树与树、森林之间的转换

关于树的概念 树可以称为特殊的森林 &#xff0c; 其中二叉树是树中一些节点度数最大为2 &#xff0c;并且分左右孩子的树 ● 二叉树很重要 • 结构简单 • 存储效率高 • 运算算法相对简单 • 任何森林、树都可以转换成二叉树 ● 讨论 • 二叉树 度为2 的树 ? 答: 树的度就是…

官方盘点 .NET 7 新功能

.NET 7 为C# 11/F# 7、.NET MAUI、ASP.NET Core/Blazor、Web API、WinForms、WPF 等应用程序带来了更高的性能和新功能。使用 .NET 7&#xff0c;您还可以轻松地将 .NET 7 项目容器化&#xff0c;在 GitHub 操作中设置 CI/CD 工作流&#xff0c;并实现云原生可观察性。欢迎下载…

java之Fork/Join框架

文章目录前言工作窃取算法Fork/Join框架的设计Fork/Join框架的异常处理Fork/Join框架的实现原理总结前言 Fork/Join框架是java7提供的一个用于执行并行任务的框架&#xff0c;是一个把大部分任务分割成若干个小任务&#xff0c;最终汇总每个小任务结果后&#xff0c;得到大任务…

4进程地址空间

文章目录前言1. 概念引入2. CPU和物理内存关系3.何为进程地址空间4. 为什么存在地址空间?前言 本节主要是讲解进程地址空间,区分和物理内存地址空间的差别,并且向读者解释四个疑问: 怎样验证地址空间的排布; 进程地址空间是什么; 进程地址空间和物理内存之间的关系; 为什么要…

[附源码]java毕业设计基于web的球类体育馆预定系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

数据链路层(2层 Data Link Layer)

1、数据链路层属于2层 2、传输单元&#xff1a;帧 帧格式&#xff1a; 802.3 有线网卡 802.11 无线网卡&#xff0c;无线路由器都支持802.11 802开头的都是国际标准&#xff0c;是由IEEE国际学术组织制定的标准 3、帧结构的构成&#xff1a;MAC子层&#xff08;帧头&…

MySQL表的增删改查(进阶)

目录1.数据库约束1.1约束类型1.2 NULL约束1.3 UNIQUE&#xff1a;唯一约束1.4 PRIMARY KEY: 主键约束1.5 DEFAULT&#xff1a;默认值约束1.6 FOREIGN KEY&#xff1a;外键约束2. 表的设计3. 新增4. 查询4.1 聚合查询4.1.2 GROUP BY子句4.2 联合查询4.2.1内连接4.2.2外连接4.2.3…

2022 第十四届蓝桥杯模拟赛第一期(题解与标程)

第十四届蓝桥杯模拟赛第一期1. 二进制位数问题描述答案提交参考答案2. 晨跑问题描述答案提交参考答案3. 调和级数问题描述答案提交参考答案程序验证4. 山谷问题描述答案提交参考答案5. 最小矩阵问题描述答案提交参考答案6. 核酸日期问题描述输入格式输出格式样例输入样例输出评…

项目风险管理的5大关键点,你做了几点?

1、全方位科学分析项目风险 为了提高项目抗风险能力&#xff0c;我们需要对项目风险进行科学全面的分析。一般我们从3个维度对风险进行科学分析&#xff1a;影响的严重性、发生的可能性、产生的影响性。 根据风险或机会对项目的影响程度&#xff0c;一般我们会从三个维度将其划…

javascript大作业《web课程设计》用html做一个期末作业网站,梅西足球体育网页,css

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

STING 与 cGAS的结合导致TBK1 激酶募集和活化

来自细菌或病毒的核酸在受感染的细胞中会产生强效的免疫反应&#xff0c;而病原体衍生核酸的检测是宿主感知感染并启动保护性免疫反应的核心策略。cGAS (Cyclic GMP-AMP synthase) 是一种双链 DNA 传感器&#xff0c;可催化 cGAMP&#xff08;cyclic GMP-AMP&#xff09;的合成…