docker基础操作,原来这才是正确打开docker的新方式!(代码片段)

DT辰白 DT辰白     2022-12-04     275

关键词:

文章目录


前言

一、Docker操作镜像

首先镜像名称一般分为两个部分:[repository]:[tag],前者是镜像名,后者是版本号。在没有指定tag的情况下,默认是latest,代表的是最新版本。

1、拉取镜像

首先怎么获得镜像呢?你可以从本地构建一个镜像,使用docker build命令,下文我们会说到如何构建自己的镜像,我们先从镜像仓库中拉取镜像,使用docker pull命令进行拉取,如下图所示:

docker pull nginx

首先我们得找到docker的镜像仓库,网址:https://hub.docker.com/ ,输入你要拉取的镜像名称,如下图所示,我们拉取一个Nginx进行安装。


检索到之后,我们选择一个我们需要的版本进行下载:


2、查看镜像

当我们拉取镜像成功之后(下载成功),怎么查看我们的镜像呢?使用docker images命令,如查看我们刚刚拉取的镜像,如下图所示:

docker images

3、删除镜像

列表中列出了我们现有的镜像,比如此时我们不需要这个镜像了,如何删除呢?使用docker rmi命令,如下图所示:

docker rmi nginx
docker rmi 镜像名称 / docker rm 镜像ID

4、保存镜像

如果我们的镜像需要分享给别人,怎么操作呢?使用docker push命令,那么首先我们得有一个镜像文件是吧!其实就类似于把文件分享出去,我们需要处理成一个压缩包的形式,使用docker save命令即可打包成一个tar文件,那么当别人收到这个镜像的时候,如何解压呢?使用docker load命令即可解压,如下图操作所示:

镜像打包:

docker save -o nginx.tar nginx:latest

在这之前,我们先删除镜像后,再做导入操作,以免重复。

5、读取镜像

镜像解压:

使用如下命令进行镜像tar包解压:

docker load -i nginx.tar

5、镜像帮助命令

这么多命令记不住怎么办?使用docker help命令帮助我们查看每个命令的使用方式,如下图操作所示:

docker help


继续使用docker 命令 --help 的命令查看具体命令的使用:

docker images --help

二、Docker容器基础操作

1、创建并运行容器

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

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

–name:给容器起一个名字

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

-d:代表进程以后台方式运行

nginx:镜像全称,没有标签,代表最新版本


2、查看容器运行状态

docker ps -a

3、查看容器启动日志

docker logs 容器名称


如果想查看日志的实时信息,跟踪日志输出:

docker logs -f 容器名称

4、停止容器

docker stop 容器ID


当容器状态为Exited (0):表示退出,Up:表示在线

5、启动容器

docker start 容器ID

6、暂停容器

docker pause 容器ID

7、恢复容器

docker unpause 容器ID

8、进入容器

进入容器,修改Nginx的HTML欢迎页。

docker exec -it mynginx bash

exit  // 退出终端

9、删除容器

docker rm 容器ID


在删除容器之前,必须先停止容器,才能执行删除命令:

三、Docker容器数据卷操作

1.数据卷基础命令

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

1.1 创建数据卷

docker volume create html

1.2 查看数据卷

docker volume inspect
docker volume ls

1.3 删除数据卷

docker volume prune  // 删除未使用的数据卷
docker volume rm html // 更具数据卷名称删除

2.数据卷挂载

修改Nginx启动的默认欢迎页,我们使用数据卷挂载的方式来操作:

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

-v:将html这个数据卷挂载到/usr/share/nginx/html这个目录上,并且当html数据卷不存在的时候,容器会自动创建该数据卷



此时我们nginx启动成功了,我们去查看html数据卷是否创建成功了。


进入数据卷的硬盘存储地址,修改Nginx的html内容。


我们修改一下Nginx的欢迎页面内容:

修改保存成功之后,我们刷新一下web网页,发现动态刷新了,高级,爽啊!!!!!!!!!!!!。

四、Dockerfile自定义镜像

这里我们以部署一个jar文件为例子,简单说一下Dockerfile的使用方式,首先准备好一个普通SpringBoot的jar包,并且上传至Linux服务器。

1、编写Dockerfile文件

# Docker image for springboot file run
# VERSION 0.0.1
# Author: DT辰白
FROM java:8
MAINTAINER 1973984292@qq.com
LABEL description="描述jar包信息"
ADD dt.jar app.jar 
ENTRYPOINT ["java","-jar","app.jar"]

命令解释:

FROM: 表示的是这个dockerfile构建镜像的基础镜像是什么,以哪个镜像作为基础进行制作,比如这里我们要运行java的一个jar包,JDK是整个Java的核心,是java运行的基础环境,所以首先必须有基础镜像java,这里 : 指代版本的意思,如果镜像名称中没有制定TAG,默认为latest。

MAINTAINER: 就是维护者信息了,通常是名字/邮箱格式。

LABEL: 用于为镜像添加元数据,就类似备注信息。

WORKDIR: 工作目录,类似于cd命令

ADD: 顾名思义,就是添加文件的功能了,将jar包添加到容器中并更名为app.jar。

RUN: 就是镜像操作命令,比如特殊的配置,安装等等,RUN命令默认使用/bin/sh,Shell执行,默认为root权限。如果命令过长需要换行,需要在行末尾加\\。

ENTRYPOINT: 就是容器启动命令。

2、构建镜像

注意 . 表示 Dockerfile 文件在当前目录下

docker build -t boot-service .

3、运行镜像

docker run -d -p 8080:9093 boot-service
-d 参数是让容器后台运行 
-p 是做端口映射,此时将服务器中的8080端口映射到容器中的9093(项目中端口配置的是9093)端口

4、访问测试

浏览器输入web地址,访问测试,这里小编随便使用的本地的一个小demo,SpringBoot集成freemarker的简单使用。

跟踪实时日志:

总结

最后文章到这里就结束了,最近小编的最新版Spring Cloud Alibaba微服务架构-Sentinel高可用防护组件篇马上也要发布了,希望大家尝鲜,并且小编之前打造过一个后台管理系统,正在代码重构当中,集成了Activiti工作流,大家可以期待一下,总之不负小伙伴们的支持,后面会越来越多的干货,并且会给大家整体理一下,作为一个新生代农民工,我们应该如何提高我们的技术,这里小编自己创建了一个交流群,感兴趣的同学可以加入,群号在博客主页能看到,大家一起畅聊,无论前端还是后端,运维,都欢迎,职业不限。

本篇文章结束了,后面我们再继续深入研究微服务其他的组件的使用以及原理剖析,创作不易,喜欢的请关注小编CSDN:https://blog.csdn.net/qq_41107231 以及掘金:https://juejin.cn/user/3940246036699848

原来这才是socket(代码片段)

...,进入到协议栈中进行各种报文头的包装,然后操作系统调用网卡驱动程序指挥硬件, 查看详情

别再乱学springcloud微服务了,这才是最新最正确的使用方式!

...操作:点击放大查看高清版微服务课程以电商项目为基础,模拟电商实际应用场景来学习SpringCloudAlibaba&#x 查看详情

原来这才是清理手机内存正确做法!简单几步,每次都能清出几个g

...载,时间长了就会占用大量内存,所以我们要将其关掉。操作方法:微信→设置→通用→照片、视频和文件→关闭自动下载 2.清理微信内存微信占用内存最多,所以我们要经常清理一下。清理方式:微信→设置&rar... 查看详情

原来这才是动态代理!!!(代码片段)

各位小伙伴们大家吼啊!我是cxuan,距离上次更新已经有段时间了,临近过年了,项目这边也比较忙,而且最近很多时间都花在看书、提升自己上面,文章写的比较拖沓,这里我要自我反思(其实我已经筹备了几篇文章,就等结... 查看详情

震惊了!原来这才是kafka!

前阵子跟面试官朋友聊天,说到世界500强中主流的互联网公司,几乎都在用Kafka。同样,大厂面试时,也八成会提问Kafka实战、源码相关的问题,而且不仅要求候选人能深入理解Kafka底层实现原理,还得具备... 查看详情

别再用kill-9了,这才是微服务上下线的正确姿势!(代码片段)

...,如此可避免上游流量进入不健康的机器。优雅下线基础下线(Spring/SpringBoot/内置容器)首先JVM本 查看详情

别再用kill-9了,这才是微服务上下线的正确姿势!(代码片段)

...,如此可避免上游流量进入不健康的机器。优雅下线基础下线(Spring/SpringBoot/内置容器)首先JVM本 查看详情

别乱用了,这才是springboot停机的正确方式!!!

点击关注公众号,实用技术文章及时了解来源:blog.csdn.net/alex_xfboy/article/details/90404691再谈为了提醒明知故犯(在一坑里迭倒两次不是不多见),由于业务系统中大量使用了springBootembeddedtomcat的模式运行,... 查看详情

这才是介绍项目的正确姿势,终于不用害怕面试了

在面试时,经过简单寒暄后,面试官一般先从让候选人自我介绍开始,紧接着就是问候选人简历中所列的项目,让介绍下项目经验。常见的问法是,说下你最近的(或感觉不错的)一个项目。面试中很... 查看详情

redis集群别乱搭,这才是正确的姿势!

点击关注公众号,Java干货及时送达上一篇:一款基于SpringCloud的神仙私活项目,已开源,微服务也能搞定!2022接私活必备!作者:等不到的口琴链接:https://www.cnblogs.com/Courage129/p/14344151.html当我们... 查看详情

这才是使用ps命令的正确姿势

ps命令详解只输出跟当前shell有关的进程当我们在命令行当中直接输入ps命令,那么就只能够看到在当前终端当中启动的进程,即使同一个用户启动其他的终端,在这个终端当中也不能看到同一个用户在其他终端启动的... 查看详情

springboot实现登录拦截器,这才是正确的姿势!!(代码片段)

原文:https://blog.csdn.net/qq_27198345/article/details/111401610对于管理系统或其他需要用户登录的系统,登录验证都是必不可少的环节,在SpringBoot开发的项目中,通过实现拦截器来实现用户登录拦截并验证。1、SpringBoot实... 查看详情

原来这才是socket(代码片段)

...,进入到协议栈中进行各种报文头的包装,然后操作系统调用网卡驱动程序指挥硬件,把数据发送到对端主机。整个过程的大体的图示如下。我们大家知道,协议栈其实是位于操作系统中的一些协议的堆叠,... 查看详情

springboot实现登录拦截器,这才是正确的姿势!!(代码片段)

点击关注公众号,Java干货及时送达对于管理系统或其他需要用户登录的系统,登录验证都是必不可少的环节,在SpringBoot开发的项目中,通过实现拦截器来实现用户登录拦截并验证。1、SpringBoot实现登录拦截原理Spr... 查看详情

同样是上班,为什么程序员的工资那么高?原来这才是原因!

【多选题】一提到程序员,你会想到什么?1工资高2直男思维39964格子衫你选工资高了吗?程序员工资高快成为共识了,但为什么同样上班,有的人每月3500,而程序员出来奋斗几年,年薪几十万?一... 查看详情

guavaratelimiter实现api限流,这才是正确的姿势!(代码片段)

Guava提供的RateLimiter可以限制物理或逻辑资源的被访问速率,咋一听有点像java并发包下的Samephore,但是又不相同,RateLimiter控制的是速率,Samephore控制的是并发量。RateLimiter的原理类似于令牌桶,它主要由许可... 查看详情

rabbitmq延迟队列实现定时任务,这才是正确的方式!(代码片段)

场景开发中经常需要用到定时任务,对于商城来说,定时任务尤其多,比如优惠券定时过期、订单定时关闭、微信支付2小时未支付关闭订单等等,都需要用到定时任务,但是定时任务本身有一个问题。一般来说我们都是通过定... 查看详情

别再kill-9了,这才是服务上下线的正确姿势!(代码片段)

点击上方关注“终端研发部”设为“星标”,和你一起掌握更多数据库知识来源:blog.csdn.net/qq_33220089kill-9pid???kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止... 查看详情