Docker学习笔记 - 常用命令

目录

  1. 基本概念
  2. 常用命令
  3. 使用docker compose启动脚本
  4. 创建自己的image

Docker命令文档

1. 下载一个image

从hub.docker.com下载一个image。

docker pull [image name]

下载时指定image的tag。

docker pull [image name]:<tag>

举例,下载postgre的tag为alpine3.19的image

docker pull postgre:alpine3.19

2. 载入一个Image

启动一个新的container并载入指定的image。

docker run -d [image name]
2.1 映射端口

启动redis镜像,把实际服务器上的port 6000绑定到docker container 的 6379 port。

docker run -p 5432:5432-d postgre
2.2 指定redis的镜像tag

下面命令指定运行tag为alpine3.19,tag可以简单的理解为类似版本号的东西。

docker run -p 5432:5432 -d postgre:alpine3.19
2.3 指定volume来达到数据的持续性

即container被停止时,里面被修改过的数据不会丢失。

docker run -p 6000:6379 -d postgre:alpine3.19 \
-v postgre_data:/var/lib/postgresql/data

指定volume的三种方式:

  • Host Volume :指定在host上的存储位置和在image里的目录的对应关系,称为主机卷
    -v [path in host]:[path in image]
  • Anonymous Volume :指定在image里需要被映射的目录,但不指定在host上的存储位置,使用docker的默认设置,称为匿名卷
    -v [path in image]
  • Name Volume:指定在image里需要被映射的目录,使用docker的默认存储位置, 但给该存储的数据命名,称为命名卷,推荐使用。
    -v [volume name]:[path in image]
2.4 使用环境变量
docker run -p 6000:6379 -d postgre:alpine3.19 \
-v postgre_data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=password
-e POSTGRES_USER=admin

使用-e来指定环境变量的值,每个环境变量都要用-e来标识。每个image的环境变量定义都不同,因此需要到hub.docker.com上查询该image的文档。

2.5 指定使用的虚拟网络名字

如下命令,将启动的image连接到虚拟网络postgre-network。

docker run -p 6000:6379 -d postgre:alpine3.19 \
-v postgre_data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=password
-e POSTGRES_USER=admin
--net postgre-network 
2.6 指定container名字
docker run -p 6000:6379 -d postgre:alpine3.19 \
-v postgre_data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=password
-e POSTGRES_USER=admin
--net postgre-network 
--name postgre_db 

3. 重启一个container

重启一个docker container.

docker start [container name]

举例,启动名为my_container的容器。

docker start my_container

4. 暂停一个container

暂停一个docker container.

docker stop [container name]

举例,停止名为my_container的容器。

docker stop my_container

5. 列出现有container

以下命令效果都一样

docker ps
docker container ls
docker container ps

默认情况下,该命令只列出目前运行中的container,要列出停止的container,可以使用以下参数。

docker ps -a

如果要显示出container的大小,可以使用以下参数。

docker ps -s

6. 在运行中的Container中执行命令行

docker exec [container name]

举例,查看在叫mycontainer的容器中,工作目录下的文件

docker exec mycontainer ls

在叫mycontainer的容器中,在/tmp目录下生产一个名为execWorks的文件。

docker exec -d mycontainer touch /tmp/execWorks

7. 实时显示Container的资源使用情况

docker stats

这个命令默认只显示当前运行中的container的资源使用情况,要查看所有container的情况,可以使用以下参数

docker stats -a

8. 移除指定Container

docker rm [container name]

在移除container之前,首先要停止container的运行。如果要移除运行中的container,请使用以下参数。

docker rm -f mycontainer.

移除container同时,也要移除相关联的volumes,使用以下参数。

docker rm -v mycontainer

要释放所有的已停止的container,可以使用以下命令:

 docker container prune

9. 查看现存的image, image的属性

docker images

执行这条命令后,系统就会列出所有现存的images,如下图。
在这里插入图片描述
由上图可见,每个image有repository, tag, image id三个属性。repository 属性在图形界面里又被称为name。
这里,要讲一下image的 image id和name/repository的区别。
image name/repository 是你在创建image是给他起的名字。不同的image是允许使用同样的image name的。比如,你可以重复生成叫做MyImage的image, 但是只有最后生成的那个才会获得latest的tag。你也可以通过给他们打上不同的tag以示区别。

image id 是你在创建image时系统自动为它生成的id,每个image id都是独一无二的,标识唯一的一个image。

9. 移除image

移除image时可以使用image id也可以使用image name。

docker image rm [image name] or [image id]
docker rmi [image name] or [image id]

举例,移除名字叫myimage的最新生成的image。

docker rmi myimage:latest

要注意的是,一个image可以被tag两个不同的name,着这种情况下,需要解除image和name和tag的绑定,才可以移除image。

举例,Image ID为5164fcc90073的image同时被tag了两个不同的名字,image1:latest和image2:latest, 当我们执行以下命令,仅解除了这个image和image1:latest.

docker rmi image1:latest

此时,这个image仅于image2:latest绑定,执行以下命令,会解绑该image和image2:latest并删除这个image。

docker rmi image2:latest

持续更新中

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

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

相关文章

CPP容器vector和list,priority_queue定义比较器

#include <iostream> #include <bits/stdc.h> using namespace std; struct VecCmp{bool operator()(int& a,int& b){return a>b;/*** 对于vector和list容器&#xff0c;这里写了&#xff1e;就是从大到小* 对于priority_queue容器&#xff0c;这里写…

配置java8和java11以及输入version命令没反应问题

电脑重置重新安装java8和java11记录一下供自己观看 安装过程掠过我自己能看懂就行 需要记录一下 因为JDK11以后Oracle把JRE集成到了JDK中&#xff0c;在安装JDK11及更高版本的JDK时&#xff0c;默认是不会自动安装JRE的。在jdk11的安装目录下打开命令行窗口或者shift鼠标右键…

婚恋小程序开发的资质需要哪些?维护成本高吗?

随着互联网的高速发展&#xff0c;人们的生活方式也在发生着翻天覆地的变化。在这个变化中&#xff0c;婚恋市场也逐渐走向了线上&#xff0c;婚恋小程序应运而生。那么&#xff0c;开发一款婚恋小程序需要哪些资质呢&#xff1f;维护成本又高不高呢&#xff1f;本文将从这两个…

2024年新算法!PCA+CPO+K-means聚类,冠豪猪优化器(CPO)优化K-means,适合学习,也适合发paper

2024年新算法&#xff01;PCACPOK-means聚类&#xff0c;冠豪猪优化器&#xff08;CPO)优化K-means&#xff0c;适合学习&#xff0c;也适合发paper。 一、冠豪猪优化器 摘要&#xff1a;受冠豪猪(crest Porcupine, CP)的各种防御行为启发&#xff0c;提出了一种新的基于自然…

【C语言】结构体与位段

一、前言 我们之前学习过定义一个整型类型的变量又或者定义一个浮点型类型的变量...&#xff0c;这些变量可以描述一个整数又或者描述一个小数...&#xff0c;可无论是整数还是小数...&#xff0c;它们也只是简单对象。如果我们想要描述像一本书&#xff0c;一个人这种复杂对象…

【算法与数据结构】深入二叉树实现超详解

文章目录 &#x1f4dd;前言&#x1f320; 接口函数✏️ 实现函数&#x1f309;创建树的新节点&#x1f320;通过前序遍历的数组构建二叉树&#x1f309;包装通过前序遍历的数组构建二叉树&#x1f320;二叉树的销毁&#x1f320;层次遍历&#x1f320;第一种实现&#xff1a;不…

Android: Gradle 命令

一、查看整个项目依赖传递关系 x.x.x (*) 该依赖已经有了&#xff0c;将不再重复依赖。x.x.x -> x.x.x 该依赖的版本被箭头所指的版本代替。x.x.x -> x.x.x(*) 该依赖的版本被箭头所指的版本代替&#xff0c;并且该依赖已经有了&#xff0c;不再重复依赖。 1. gradlew ap…

002 高并发内存池_定长内存池设计

​&#x1f308;个人主页&#xff1a;Fan_558 &#x1f525; 系列专栏&#xff1a;高并发内存池 &#x1f339;关注我&#x1f4aa;&#x1f3fb;带你学更多知识 文章目录 前言一、设计整体框架二、New操作&#xff08;申请空间&#xff09;三、Delete操作&#xff08;用自由链…

奇舞周刊第523期:来自 rust 生态的强烈冲击?谈谈 Leptos 在语法设计上的精妙之处...

奇舞推荐 ■ ■ ■ 来自 rust 生态的强烈冲击&#xff1f;谈谈 Leptos 在语法设计上的精妙之处 过去很长一段时间&#xff0c;前端框架们都在往响应式的方向发展。同时又由于 React hooks 的深远影响&#xff0c;函数式 响应式成为了不少前端心中最理想的前端框架模样。Solid …

设计模式-初步认识

目录 &#x1f6fb;1.什么是设计模式 &#x1f69a;2.设计模式的优点 &#x1f68d;3.设计模式6大原则 &#x1f6f4;4.设计模式类型 1.什么是设计模式 设计模式代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开…

Yocto学习笔记1-下载与首次编译

Yocto学习笔记1-下载与首次编译 1、基础环境介绍2、注意点3、安装依赖3.1 yocto常规系统构建所需依赖库&#xff08;较全&#xff09;3.2 龙芯适配时的最小依赖库&#xff08;最小&#xff09; 4、下载4.1 通过git克隆4.2 查看所有远程分支4.3 签出一个长期支持的稳定版本4.4 查…

从边缘设备丰富你的 Elasticsearch 文档

作者&#xff1a;David Pilato 我们在之前的文章中已经了解了如何丰富 Elasticsearch 本身和 Logstash 中的数据。 但如果我们可以从边缘设备中做到这一点呢&#xff1f; 这将减少 Elasticsearch 要做的工作。 让我们看看如何从具有代理处理器的 Elastic 代理中执行此操作。 E…

Redis如何删除大key

参考阿里云Redis规范 查找大key&#xff1a; redis-cli --bigkeys 1、String类型&#xff1a; Redis 4.0及以后版本提供了UNLINK命令&#xff0c;该命令与DEL命令类似&#xff0c;但它会在后台异步删除key&#xff0c;不会阻塞当前客户端&#xff0c;也不会阻塞Redis服务器的…

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的…

MySQL:表的操作

文章目录 创建表查看表结构修改表删除表 前面对于库的操作有了认识后&#xff0c;下面进行表的操作 创建表 以下图为例 创建表其实和定义结构体有点类似&#xff0c;总的来说就是先定义列名&#xff0c;然后后面跟着是列的数据类型&#xff0c;之后在定义结束后可以带上对应的…

【数据挖掘】实验4:数据探索

实验4&#xff1a;数据探索 一&#xff1a;实验目的与要求 1&#xff1a;熟悉和掌握数据探索&#xff0c;学习数据质量分类、数据特征分析和R语言的主要数据探索函数。 二&#xff1a;实验内容 1&#xff1a;数据质量分析 2&#xff1a;统计量分析 3&#xff1a;贡献度分析…

Redis常见数据类型(1)

Redis提供了5种数据结构, 理解每种数据类型的特点对于Redis开发运维非常重要, 同时掌握每种数据类型的常见命令, 会在使用Redis的时候做到游刃有余. 内容如下: 预备知识: 几个全局命令, 数据结构和内部编码, 单线程机制解析. 5种数据类型的特点, 命令使用, 应用场景示例. 键遍历…

uniapp微信小程序_购物车_下单页面

先说下整体逻辑以方便总体理解 1、首先画出下单页面 2、此次画出结算价格页面 3、怎么点击下完单变成结算页面&#xff1f;其实就是把下单页面的信息传递给结算页面就行 问题难点&#xff1f; 点击加号的时候把物品加入一个数组传到下单页面&#xff0c;但是点击的时候不能…

2024-03-24 需求分析-智能问答系统-调研

一. 需求列表 基于本地知识库的问答系统对接外围系统 数字人语音识别二. 待调研的公司 2.1 音视贝 AI智能外呼_大模型智能客服系统_大模型知识库系统_杭州音视贝 (yinshibei.com) 2.2 得助智能 智能AI客服机器人-智能电话机器人客服-电话电销机器人-得助智能 (51ima.com) 2…

LabVIEW比例流量阀自动测试系统

LabVIEW比例流量阀自动测试系统 开发了一套基于LabVIEW编程和PLC控制的比例流量阀自动测试系统。通过引入改进的FCMAC算法至测试回路的压力控制系统&#xff0c;有效提升了压力控制效果&#xff0c;展现了系统的设计理念和实现方法。 项目背景&#xff1a; 比例流量阀在液压…