Docker学习笔记 - 常用命令
目录
- 基本概念
- 常用命令
- 使用docker compose启动脚本
- 创建自己的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
持续更新中
相关文章:
Docker学习笔记 - 常用命令
目录 基本概念常用命令使用docker compose启动脚本创建自己的image Docker命令文档 1. 下载一个image 从hub.docker.com下载一个image。 docker pull [image name]下载时指定image的tag。 docker pull [image name]:<tag>举例,下载postgre的tag为alpine…...
数学建模(Topsis python代码 案例)
目录 介绍: 模板: 案例: 极小型指标转化为极大型(正向化): 中间型指标转为极大型(正向化): 区间型指标转为极大型(正向化): 标准化处理: 公式: Topsis(优劣解距离法): 公式: 完整代码: 结果: 介绍: 在数学建模中,Topsis方法是一种多准则决策分…...
gateway网关指定路由响应超时时间
gateway网关指定路由响应超时时间 spring:cloud:gateway:httpclient:responseTimeout: 10000这个配置用于设置HttpClient的响应超时时间,单位是毫秒。具体来说,这个配置表示当Gateway向后端服务发出请求后,如果在10秒内没有收到后端服务的响…...
docker 和K8S知识分享
docker知识: 比如写了个项目,并且在本地调试没有任务问题,这时候你想在另外一台电脑或者服务器运行,那么你需要在另外一台电脑或者服务器配置相同的软件,比如数据库,web服务器,必要的插件和库等…...
MySQL--select count(*)、count(1)、count(列名) 的区别你知道吗?
MySQL select count(*)、count(1)、count(列名) 的区别? 这里我们先给出正确结论: count(*),包含了所有的列,会计算所有的行数,在统计结果时候,不会忽略列值为空的情况。count(1),忽略所有的列…...
使用verilog设计实现16位CPU及仿真
这是一个简单的16位CPU(中央处理单元)的设计实验。这个CPU包括指令存储器、数据存储器、ALU(算术逻辑单元)、寄存器文件和控制单元。 设计一个简单的16位CPU的实验通常可以分为以下几个步骤: 指令集设计:首先确定CPU支持的指令集架构,包括指令格式、寄存器组织、地址模…...
Python将字符串转换为datetime
有这样一些字符串: 1710903685 20240320110125 2024-03-20 11:01:25 要转换成Python的datetime 代码如下: import functools import re from datetime import datetime, timedelta from typing import Union# pip install python-dateutil from date…...
Vue 3 + TypeScript + Vite的现代前端项目框架
随着前端开发技术的飞速发展,Vue 3、TypeScript 和 Vite 构成了现代前端开发的强大组合。这篇博客将指导你如何从零开始搭建一个使用Vue 3、TypeScript以及Vite的前端项目,帮助你快速启动一个性能卓越且类型安全的现代化Web应用。 Vue 3 是一款渐进式Jav…...
浏览器强缓存和弱缓存的主要区别
浏览器强缓存与弱缓存 浏览器的缓存机制主要分为两种:强缓存与协商缓存(也称弱缓存)。 强缓存 强缓存是指浏览器在请求一个资源时,不与服务器发生通信,直接从本地缓存中获取资源。如果存在有效的强缓存,…...
深度学习-2.9梯度不稳定和Glorot条件
梯度不稳定和Glorot条件 一、梯度消失和梯度爆炸 对于神经网络这个复杂系统来说,在模型训练过程中,一个最基础、同时也最常见的问题,就是梯度消失和梯度爆炸。 我们知道,神经网络在进行反向传播的过程中,各参数层的梯…...
地宫取宝dfs
分析: 矩阵里的每一个位置都有标记,要求的问题是:有几种方法能完成这个规定。 那么,我们只需要计算从开始(1,1)到最后(n,m)的深度优先搜索中,有几个是满足要求的即为正确答案。 有个要求是,如果一个格子中…...
Ollama 运行 Cohere 的 command-r 模型
Ollama 运行 Cohere 的 command-r 模型 0. 引言1. 安装 MSYS22. 安装 Golang3. Build Ollama4. 运行 command-r 0. 引言 Command-R Command-R 是一种大型语言模型,针对对话交互和长上下文任务进行了优化。它针对的是“可扩展”类别的模型,这些模型在高…...
2024年C语言最新经典面试题汇总(11-20)
C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程…...
arm linux应用程序crash分析一般方法
目录: 前言一、定位问题的基本方法论1.1 生产环境下系统崩溃的日志信息示例 二、 分析这类什么都没有的app crash的一般方法论:附录:附录1 pmap -p 进程PID 查看进程的内存分配情况附录2 cat /proc/pid/maps 总结 前言 linux的应用程序app开…...
Web安全防护技术解决方案
1、防止爆破 限制请求ip访问次数,超过设定访问次数后,拒绝访问或锁定N分钟后可再次请求 2、调用短信验证码时 加入验证码采用防爆破策略 3、上传后的文件防止被猜出爬取 保存在物理磁盘可进行加密防护文件不能存储在站点目录,防止通过ur…...
流畅的 Python 第二版(GPT 重译)(十一)
第二十章:并发执行器 抨击线程的人通常是系统程序员,他们心中有着典型应用程序员终其一生都不会遇到的用例。[…] 在 99%的用例中,应用程序员可能会遇到的情况是,生成一堆独立线程并将结果收集到队列中的简单模式就是他们需要了解…...
Blender 3D建模要点
3d模型可以为场景的仿真模拟带来真实感,它还有助于更轻松地识别场景中的所有内容。 例如,如果场景中的所有对象都是简单的形状,如立方体和圆形,则很难在仿真中区分对象。 1、碰撞形状与视觉形状 像立方体和球体这样的简单形状&a…...
网络安全实训Day8
写在前面 网络工程终于讲完了。这星期到了网络安全技术部分。 网络安全实训-网络安全技术 网络安全概述 信息安全:所有保障计算机硬件、系统、软件、数据不因有意或无意的行为导致的服务中断、数据损坏或丢失等安全事件的保障技术 网络安全:基于计算机…...
GB28181 —— 5、C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)
被测试的USB摄像头 效果 源码说明 主要功能模拟设备端,完成注册、注销、心跳等,同时当服务端下发指令播放视频时 设备端实时读取USB摄像头视频并通过OpenCV处理后实时转ps格式后封包rtp进行推送给服务端播放。 源码 /****@remark: pes头的封装,里面的具体数据的填写已经占…...
Git工具的详细使用
一、环境说明 [rootgit ~]# getenforce Disabled [rootgit ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (d…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
JS红宝书笔记 - 3.3 变量
要定义变量,可以使用var操作符,后跟变量名 ES实现变量初始化,因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符,可以创建一个全局变量 如果需要定义…...
leetcode_69.x的平方根
题目如下 : 看到题 ,我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历,我们是整数的平方根,所以我们分两…...
表单设计器拖拽对象时添加属性
背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...
