当前位置: 首页 > news >正文

Docker基本操作

目录

Docker基本操作

1、镜像操作

2、容器操作

3、数据卷(容器数据管理)

4、数据卷挂载

5、Dockerfile自定义镜像


Docker基本操作

1、镜像操作

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

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


镜像命令

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

1、首先去镜像仓库搜索nginx镜像,比如DockerHub:Docker

 2、进入官方镜像

 

 

 查看docker命令

docker --help

 复制命令,运行(拉取镜像)

docker pull nginx

 拉去完后查看镜像

docker images

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

利用docker xx --help命令查看docker save和docker load的语法

 

 保存镜像

docker save -o nginx.tar nginx:latest

 

 删除镜像

docker rmi nginx:latest

 加载镜像

docker load -i nginx.tar

示例:去DockerHub搜索并拉取一个Redis镜像

1.去DockerHub搜索Redis镜像

 

2.查看Redis镜像的名称和版本

3.利用docker pell命令拉取镜像

docker pull redis


4.利用docker save命令将redis:latest打包为一个redis.tar包

docker save -o redis.tar redis:latest

 

 5.利用docker rmi删除本地的redis:latest

docker rmi redis:latest


6.利用docker load重新加载redis.tar文件

docker load -i redis.tar

2、容器操作

示例:

Nginx容器运行命令

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

命令解读:

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

--name:给容器起一个名字,比如叫做mn

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

-d:后台运行容器

nginx:镜像名称,例如nginx


 查看创建的容器

docker ps

 访问80端口

 查看日志

docker logs mn  #容器名称

持续跟踪日志:

docker logs -f mn

进入容器

docker exec -it mn bash

命令解读:

docker exec :进入容器内部,执行一个命令

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

mn:要进入的容器的名称

bash:进入容器后执行的命令,bash是一个linux终端交互命令

查看nginx的HTML目录

cd /usr/share/nginx/html

退出容器

exit

 

 停止容器

docker stop mn

 

 启动容器

docker start mn

 删除容器,运行中的容器不能删除

docker rm mn

 强制删除容器

docker rm -f mn

总结:

查看容器状态: docker ps

添加-a参数查看所有状态的容器删除容器:docker rm

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

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

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

示例:创建并运行一个redis容器,并且支持数据持久化


3、数据卷(容器数据管理)

容器与数据耦合的问题

1、不便于修改:当我们要修改Nginx的html内容时,需要进入容器内部修改,很不方便。

2、数据不可复用:在容器内的修改对外是不可见的。所有修改对新创建的容器是不可复用的。

3、升级维护困难:数据在容器内,如果要升级容器必然删除旧容器,所有数据都跟着删除了

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

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

docker volume [COMMAND]

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

create:创建一个volume

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

ls:列出所有的volume

prune:删除未使用的volume

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

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

docker volume create html

 

查看创建的数据卷

docker volume ls

 

 查看数据卷位置

docker volume inspect html

 

 删除数据卷

docker volume rm html

4、数据卷挂载

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

示例:

nginx的html目录所在位置/usr/share/nginx/html,把这个目录挂载到html这个数据卷上,

方便操作其中的内容。

创建容器并挂载数据卷到容器内的HTML目录

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

 查看挂载位置

 

数据卷挂载方式:

-v volumeName: /targetContainerPath

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

总结:

1. docker run的命令中通过-v参数挂载文件或目录到

容器中:
        -v volume名称:容器内目录

        -v宿主机文件:容器内文件

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

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

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

5、Dockerfile自定义镜像

镜像结构

总结:

镜像是分层结构,每一层称为一个Layer

Baselmage层:包含基本的系统函数库、环境变量、文件系统

Entrypoint:入口,是镜像中应用启动的命令

其它:在Baselmage基础上添加依赖、安装程序、完成整个应用的安装和配置

Dockerfile语法

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作

来构建镜像。每—个指令都会形成一层Layer。
 

指令说明示例
 FROM指定基础镜像FROM centos:6
ENV设置环境变量,可在后面指令使用ENV key value
COPY拷贝本地文件到镜像的指定目录COPY ./mysql-5.7.rpm /tmp
RUN执行Linux的shell命令,一般是安装过程的命令RUN yum install gcc
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
ENTRYPOINT镜像中应用的启动命令,容器运行时调用ENTRYPOINT java -jar xx.jar

更新详细语法说明,请参考官网文档:Dockerfile reference

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar# 安装JDK
RUN cd $JAVA_DIR \&& tar -xf ./jdk8.tar.gz \&& mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

相关文章:

Docker基本操作

目录 Docker基本操作 1、镜像操作 2、容器操作 3、数据卷(容器数据管理) 4、数据卷挂载 5、Dockerfile自定义镜像 Docker基本操作 1、镜像操作 镜像名称一般分两部分组成:[repository]:[tag]。 在没有指定tag时,默认是la…...

golang如何使用rocketmq 附加闭坑指南 建议收藏!!!

文章目录前言一、rocketmq是什么?二、rocketmq核心概念三、rocketmq核心应用四、go如何使用rocketmq总结前言 当我们的业务达到一定规模,很多业务需要解耦,以及需要流量削峰的时候,我们需要使用MQ来让我们系统能够正常运转。 一…...

C++实现的二叉树创建和遍历,超入门邻家小女也懂了

目录 二叉树 特点 性质 二叉树的创建 声明 创建 -> 成员运算符 批量创建 二叉树的遍历 先序遍历 中序遍历 后序遍历 层序遍历 树的相关术语 特殊二叉树 满二叉树 完全二叉树 二叉树 树(Tree)是n(n≥0)个节点的有限集。在任意一棵…...

如何写出高质量的业务接口

清晰的需求 需求要有文档;方便后续追溯或交接等需求是基础,必须详细;多和需求沟通确认,不可模糊、模棱两可,否则后续可能越错越远 抽象建模 分析需求;梳理清楚关联关系,建立数据模型和关联画E-R…...

3.8多线程

案例一-线程安全的单例模式(面试)是一种设计模式,设计模式针对写代码时的一些常见场景给出一些经典解决方案单例模式的两种典型实现饿汉模式懒汉模式饿汉的单例模式:比较着急去进行创建实例懒汉的单例模式,是不太着急创建实例,,只是在用的时候,才真正创建这个是类对象,也就是.c…...

图文讲解MongoDB该怎么安装

一、安装前必读 我这里是Centos7 Linux 内核 注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo 二、环境配置 2.1 停止防火墙 systemctl status firewalld #查看firewall systemctl stop firewalld …...

「ML 实践篇」机器学习项目落地

文章目录1. 项目分析1. 框架问题2. 性能指标2. 获取数据1. 准备工作区2. 下载数据3. 查看数据4. 创建测试集3. 数据探索1. 地理位置可视化2. 寻找相关性3. 组合属性4. 数据准备1. 数据清理2. Scikit-Learn 的设计3. 处理文本、分类属性4. 自定义转换器5. 特征缩放6. 流水线5. 选…...

c++面试技巧-基础篇3

1.面试官:什么是函数的重载? 应聘者:函数的重载就是允许使用同一个函数名来定义多个函数,但是这些函数的参数个数和类型不同。 2.面试官:如何引用一个已经定义过的全局变量? 应聘者:可以用引…...

MySQL OCP888题解044-从服务器上导入mysql模式数据后的权限问题

文章目录1、原题1.1、英文原题1.2、中文翻译1.3、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3.1、知识点1:mysqldump的--flush-privileges选项3.2、知识点2:mysqldump的--all-databases选项3.3、知识点3:mysqldump默认不转储的内容…...

实战小项目之视频监控(1-2)

实战小项目之视频监控(1-2) Nginx 移植 前面也给大家提到了,我们可以使用 Nginx 来搭建 RTMP 流媒体服务器,譬如你可以在一台公网 IP 主 机上搭建流媒体服务器,当然,笔者并没有这个条件;这里我…...

人工智能基础--AI作业1-ML基础

1.监督学习和无监督学习都是机器学习中常用的方法。监督学习是一种机器学习方法,其中机器学习算法根据给定的输入数据和其对应的输出标签进行训练,以学习如何预测新的输入数据的输出标签。简单来说,监督学习就是通过已知的数据进行学习&#…...

关于JS中this对象指向问题总结

一、前言 关于JS中this对象指向问题,相信做过项目的小伙伴多多少少都会遇到过,明明感觉代码写的没问题,可是运行的时候,就会报错,比如报错 xxx is not a function。 我最近也遇到了,百度学习了不少前辈对于…...

Codeforces Round 855 (Div. 3) A-E2

比赛链接:Dashboard - Codeforces Round 855 (Div. 3) - Codeforces A:模拟 题意:给定一个字符串,问这个字符串是不是猫叫。定义是猫叫得字符串: 1:必须由大写或小写得M(m),E&…...

Spark Yarn 运行环境搭建

文章目录Spark Yarn 运行环境搭建1、解压缩文件2、修改配置环境文件3、配置历史服务器Spark Yarn 运行环境搭建 1、解压缩文件 将spark3.2.3的压缩包上传到 linux /opt/software 目录下 输入命令: tar -zxvf spark-3.2.3-bin-hadoop3.2-scala2.13.tgz -C /opt/ 解…...

SpringMVC 页面跳转指南:转发和重定向的实现与比较

SpringMVC 是一款非常流行的 Java Web 框架,它提供了丰富的特性和功能,使得开发者可以轻松地开发 Web 应用程序。其中,转发和重定向是 SpringMVC 中非常常见的两个操作,它们可以用于控制请求的流转和页面的跳转。本文将深入探讨 S…...

ModStartCMS v5.9.0 后台浅色模式,系统样式升级

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…...

2020蓝桥杯真题反倍数 C语言/C++

题目描述 给定三个整数 a,b,c,如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍,则这个数称为反倍数。 请问在 1 至 n 中有多少个反倍数。 输入描述 输入的第一行包含一个整数 n。 第二行包含三个整数a,b,c,相邻两个数之…...

PTA:L1-025 正整数A+B、L1-026 I Love GPLT、L1-027 出租(C++)

目录 L1-025 正整数AB 问题描述: 实现代码: L1-026 I Love GPLT 问题描述: 实现代码: L1-027 出租 问题描述: 实现代码: 原理思路: 出租那道题有点意思哈 L1-025 正整数AB 问题描述…...

状态机的Go语言实现版本

一、状态机 1. 定义 有限状态机(Finite-state machine, FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 2. 组成要素 现态(src state):事务当前所处的状…...

第2章 线程安全与共享资源竞争

第2章 线程安全与共享资源竞争 2.1 synchronized同步介绍 synchronized要解决的是共享资源冲突的问题。当共享资源被任务使用时,要对资源提前加锁。所有任务都采用抢占模式,即某个任务会抢先对共享资源加上第一把锁。如果这是一个排他锁,…...

77. writerows写入多行

文章目录1. 目标任务2. 准备工作3. writerow单行写入4. writerows多行写入5. a以追加的模式写入值6. 总结1. 目标任务 新建【各班级成绩】文件夹; 在该文件夹下新建一个【1班成绩单.csv】文件; 在该文件中写入下面的内容: 成绩 姓名 刘一…...

STM32MP157-Linux输入设备应用编程-多点触摸屏编程

文章目录前言多点触摸屏tslib库简介tslib库移植tslib库函数使用打开触摸屏设备配置触摸屏设备打开并配置触摸屏设备读取触摸屏设备多点触摸屏程序编写触点数据结构体定义事件定义计算触点数量判断单击、双击判断长按、移动判断放大、缩小外部调用代码流程图(草图&am…...

mybatis-plus的一般实现过程(超详细)

MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上提供了许多实用的功能,如分页查询、条件构造器、自动填充等。下面是 MyBatis-Plus 的完整代码实现流程: ①、引入 MyBatis-Plus 依赖 在 Maven 中,可以通过以下方式引入 …...

Spark(5):RDD概述

目录 0. 相关文章链接 1. 什么是RDD 2. RDD核心属性 3. 执行原理 0. 相关文章链接 Spark文章汇总 1. 什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类&#x…...

面向对象 - 继承

Hello , 各位同学朋友大家好啊, 今天给大家分享的技术呢, 是面向对象三大特征之一的继承,我们今天主要按照以下几个点, 展开继承的讲解。目录 :* 继承的介绍* 继承的好处和弊端* 继承中成员访问特点 - 成员变量* 继承中成员访问特点 - 成员方法* 方法重写* 继承中成…...

计算机网络的166个概念你知道几个 第十二部分

计算机网络安全安全通信的四大要素:机密性、保温完整性、端点鉴别和运行安全性。机密性:报文需要在一定程度上进行加密,用来防止窃听者截取报文。报文完整性:在报文传输过程中,需要确保报文的内容不会发生改变。端点鉴…...

【RabbitMQ】RabbitMQ各版本的兼容性与技术支持时限

今天在研究RabbitMQ的监控时,发现这个消息队列软件的版本真的很令人崩溃,版本众多,且组件之间还存在版本的兼容性,此外各个组件还对操作系统存在兼容性关系。为了帮大家节省一些查阅官方文档的时间,我把官方文档里面涉…...

【Git】P5 Git 远程仓库(3)pull 发生冲突

pull 发生冲突冲突在什么场景下发生?为什么要先 pull 再 push构建一个冲突场景初始开始操作:程序员2:程序员1:程序员2:发生冲突:查看冲突:解决冲突:冲突在什么场景下发生&#xff1f…...

关于世界坐标系,相机坐标系,图像坐标系,像素坐标系的一些理解

关于世界坐标系,相机坐标系,图像坐标系,像素坐标系的一些理解前言一、各坐标系的含义二、坐标系转换1.世界坐标系与相机坐标系(旋转与平移)2.相机坐标系与图像坐标系(透视)3.图像坐标系与像素坐…...

企业防护ddos的注意事项,你知道吗?

DDoS,分布式拒绝服务攻击,是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。在当下,DDoS 攻击是非常常见的一种攻击方式,大…...