从零开始学Docker(二):启动第一个Docker容器

宿主机环境:RockyLinux 9

这个章节不小心搞成命令学习了,后面在整理成原理吧

Docker生命周期

拉取并启动Nginx容器

# 查找镜像 例如:nginx
[root@192 ~]# docker search nginx

我们可以看到,第一个时官方认证构建的nginx 

# 拉取下载镜像 docker pull nignx,这个和git很像,git pull xxx
[root@192 ~]# docker pull nginx

如下,这里我们使用的是简单的pull操作,默认下载的是最新版本 latest

 拉取镜像后查看镜像列表 

运行该nginx镜像,创建一个具体的容器,然后在这个容器中,就跑着一个nginx服务了

# 运行镜像的命令,格式:docker run 参数 镜像的名字/ID
# -d:后台运行容器,-p:端口映射,宿主机端口:容器内端口,
# 当我们访问宿主机端口时,也就时访问容器内的端口
[root@192 ~]#  docker run -d -p 80:80 nginx#在我们运行完容器后,会返回一个容器ID
[root@192 ~]# docker run -d -p 80:80 nginx
870be1725361eb35588a55641b9637f6b395741ad642e6afeeeda2edbd23c5c3

 执行命令 docker ps 我们可以查看到当前的容器列表,此时能看到容器80端口已经映射到宿主机上面了 

 在浏览器访问宿主机的80端口,就能看到容器内80端口运行的是什么

 查看宿主机的网络配置,能够看到80端口,这里显示进程名称的并不是nginx,而是docker-proxy,这是docker启动的代理程序,将宿主机的80端口,代理到容器内的80端口

停止容器,docker stop 容器ID,停止容器后再去docker ps查看容器,之前的nginx已经没有了

 进入正在运行的容器内,查看容器的运行系统,执行命令:docker exec -it 容器ID bash

 Docker命令学习

# 默认的docker仓库是dockerhub,有大量优质的镜像,以及用户自己上传的镜像[root@192 ~]# docker search 镜像名:tag,tag就是具体的标签版本# 查看当前docker版本:
[root@192 ~]# docker version#查看当前docker镜像文件:
[root@192 ~]# docker images 或 docker image ls# 查看当前docker运行中的容器:
[root@192 ~]# docker ps# 下载docker镜像:
docker pull 镜像名, # 默认的是 latest,
# 还可以指定版本
[root@192 ~]# docker pull 镜像名:版本号# 查看docker服务信息
[root@192 ~]# docker info# 查看docker的数据目录
[root@192 etc]# docker info | grep RootDocker Root Dir: /var/lib/docker[root@192 ~]# ls /var/lib/docker
buildkit  containers  engine-id  image  network  overlay2  plugins  runtimes  swarm  tmp  volumes# 存放docker镜像文件的目录
[root@192 sha256]# ll /var/lib/docker/image/overlay2/imagedb/content/sha256
total 8
-rw------- 1 root root 8149 Jul 29 08:50 89da1fb6dcb964dd35c3f41b7b93ffc35eaf20bc61f2e1335fea710a18424287
[root@192 sha256]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    89da1fb6dcb9   24 hours ago   187MB# 当我们查看镜像文件时,可以看到是JSON数据类型的文件,其作用是记录 镜像和容器的配置关系
[root@192 sha256]# cat 89da1fb6dcb964dd35c3f41b7b93ffc35eaf20bc61f2e1335fea710a18424287 #-it:开启一个交互式的终端, --rm 容器退出时删除该容器
[root@192 sha256]# docker run -it --rm --name nginx01 nginx bash# 查看镜像列表
[root@192 sha256]# docker images# 查看某个镜像信息
[root@192 sha256]# docker images nginx# 查看某个镜像信息,具体到某个tag
[root@192 sha256]# docker images nginx:tag名# 格式化显示镜像列表,--format后跟docker的模板语言
[root@192 sha256]# docker images --format "{{.ID}}--{{.Repository}}"# 以表格形式显示镜像信息
[root@192 sha256]# docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"# 下载镜像
[root@192 sha256]# docker run hello-world# 查看当前镜像信息
[root@192 sha256]# docker images 
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    89da1fb6dcb9   24 hours ago   187MB
hello-world   latest    9c7a54a9a43c   2 months ago   13.3kB# 删除镜像:名称、ID
[root@192 sha256]# docker rmi hello-world
[root@192 sha256]# docker rmi 9c7a54a9a43c# 导出镜像,并重定向至/opt目录
[root@192 sha256]# docker image save nginx > /opt/nginx001.taz
[root@192 sha256]# ls /opt/
containerd  nginx001.taz# 导入镜像
[root@192 opt]# docker images 
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@192 opt]# docker image load -i /opt/nginx001.taz 
c6e34807c2d5: Loading layer [==================================================>]  77.81MB/77.81MB
24ee1d7d6a62: Loading layer [==================================================>]  113.2MB/113.2MB
4deafab383fa: Loading layer [==================================================>]  3.584kB/3.584kB
8aedfcd777c7: Loading layer [==================================================>]  4.608kB/4.608kB
c88d3a8ff009: Loading layer [==================================================>]   2.56kB/2.56kB
abc3beec4b30: Loading layer [==================================================>]   5.12kB/5.12kB
922d16116201: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest
[root@192 opt]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    89da1fb6dcb9   25 hours ago   187MB# 查看docker镜像详细信息 
[root@192 opt]# docker image inspect 镜像ID

Docker容器管理

# docker run 镜像名,如果镜像不存在本地,则会在线区下载镜像
# 容器内的进程必须处于前台运行状态,否则容器就会直接退出# 运行容器,切进入容器内
[root@192 ~]# docker run -it nginx bash# 查看docker容器的运行日志
[root@192 ~]# docker logs 容器ID
# -f 实时打印日期
[root@192 ~]# docker logs -f 容器ID
# 使用管道符,查看最新的5条日志
[root@192 ~]# docker logs  容器ID| tail  -5# 进入到正在运行的容器内
[root@192 ~]# docker exec -it 容器ID bash# 查看容器的详细信息
[root@192 ~]# docker container inspect 容器ID# 后台运行docker容器,容器名称为nginx001,且端口映射宿主机的85端口,访问到容器内的80端口
[root@192 ~]# docker run -d -p 85:80 --name nginx001 nginx 
6627aa9383d993ed1be7031841daf7cecaefadea8cf1ea678fd3b8121aed2c15
[root@192 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
6627aa9383d9   nginx     "/docker-entrypoint.…"   8 seconds ago   Up 8 seconds   0.0.0.0:85->80/tcp, :::85->80/tcp   nginx001
[root@192 ~]# docker port 6627aa9383d9
80/tcp -> 0.0.0.0:85
80/tcp -> [::]:85# docker 容器提交
[root@192 ~]# docker commit 6627aa9383d9 nginx_hunter
sha256:53807fe50cade428944877195e5db131a0868052770f0b393d424f14fbe3ba03
[root@192 ~]# docker images 
REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
nginx_hunter   latest    53807fe50cad   5 seconds ago   187MB
nginx          latest    89da1fb6dcb9   25 hours ago    187MB

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

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

相关文章

如何能够高效实现表格中的分权限编辑功能

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 在表格类填报需求中,根据当前登录用户的不同等级,能填报的区域会…

图论--最短路问题

图论–最短路问题 邻接表 /* e[idx]:存储点的编号 w[idx]:存储边的距离(权重) */ void add(int a, int b, int c) {e[idx] b;ne[idx] h[a];w[idx] ch[a] idx ; }1.拓扑排序 给定一个 n 个点 m 条边的有向图,点的编号是 11 到 n&#xf…

日常整理的一些前端知识点笔记

整理的一些前端知识点 ECMAScript和JavaScript是什么关系 ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现 (另外的 ECMAScript 方言还有 JScript 和 ActionScript)。日常场合,这两个词是…

Delphi 开发不一样的窗体标题栏:TTitleBarPanel

目录 TTitleBarPanel 的使用 TTitleBarPanel 的使用进阶 一、设置标题栏高度、颜色 二、个性化标题栏的关闭等按键 我们在用Delphi开发程序的时候,窗体的标题栏一般都是标准的windows标题栏,上面包括:程序图标、标题、最小化、最大化、关闭…

Linux中error while loading shared libraries错误解决办法

默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定–prefix,会将库安装在/usr/local/lib目录下 当运行程序需要链接动态库时,提示找不到相关的.so库,会报…

[Python进阶]定制类:属性篇

4.10.2 属性篇 4.10.2.1 getattr、getattribute 通常我们可以通过obj.attr访问某个对象的属性。而__getattr__则是用来处理我们在获取某个不存在的属性时希望的处理。 默认情况下,如果我们获取了一个不存在的属性时,会报错:AttributeError。…

如何做好Code Review:思考、方法和实践 (真实经验总结)

目录 背景 Code Review 目标 系统层面 代码规范 业务逻辑 日志 测试 安全

k8s1.26.6 安装gitlab

Gitlab官方提供了 Helm 的方式在 Kubernetes 集群中来快速安装,但是在使用的过程中发现 Helm 提供的 Chart 包中有很多其他额外的配置,所以我们这里使用自定义的方式来安装,也就是自己来定义一些资源清单文件。 Gitlab主要涉及到3个应用&…

Python爬虫时遇到连接超时解决方案

在进行Python爬虫任务时,经常会遇到连接超时(TimeoutError)错误。连接超时意味着爬虫无法在规定的时间内建立与目标服务器的连接,导致请求失败。为了帮助您解决这个常见的问题,本文将提供一些解决办法,并提…

用合成数据训练托盘检测模型【机器学习】

想象一下,你是一名机器人或机器学习 (ML) 工程师,负责开发一个模型来检测托盘,以便叉车可以操纵它们。 ‌你熟悉传统的深度学习流程,已经整理了手动标注的数据集,并且已经训练了成功的模型。 推荐:用 NSDT设…

【LeetCode】88. 合并两个有序数组

这道题我总共想了三种解法。 1.将nums2中的元素依次放入nums1有效元素的后面&#xff0c;再总体进行排序。 import java.util.*; class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int j 0;for(int i m;i<mn;i){nums1[i] nums2[j];j;}Arrays…

搭建网站 --- 快速WordPress个人博客并内网穿透发布到互联网

文章目录 快速WordPress个人博客并内网穿透发布到互联网 快速WordPress个人博客并内网穿透发布到互联网 我们能够通过cpolar完整的搭建起一个属于自己的网站&#xff0c;并且通过cpolar建立的数据隧道&#xff0c;从而让我们存放在本地电脑上的网站&#xff0c;能够为公众互联…

机器学习分布式框架ray运行xgboost实例

Ray是一个开源的分布式计算框架&#xff0c;专门用于构建高性能的机器学习和深度学习应用程序。它的目标是简化分布式计算的复杂性&#xff0c;使得用户能够轻松地将任务并行化并在多台机器上运行&#xff0c;以加速训练和推理的速度。Ray的主要特点包括支持分布式任务执行、Ac…

vue3单选选择全部传all,否则可以多选

<el-form-item label"发布范围-单位选择"><el-radio-group v-model"formData.unitRadio" change"getUnit"><el-radio label"ALL" click.prevent"radioChange(ALL)">全部</el-radio><el-radio la…

限流简单实例

1、限流算法 &#xff08;1&#xff09;固定窗口计数器算法 固定窗口其实就是时间窗口。固定窗口计数器算法规定了我们单位时间处理的请求数量。 思路如下&#xff1a; 1&#xff09;给定一个变量counter来记录当前接口处理的请求数量&#xff0c;初始值为0&#xff08;代表接口…

微信开发者工具 miniprogram_npm 未找到

背景 微信开发者工具中&#xff0c;打开集成了vant-weapp的项目&#xff0c;构建npm时&#xff0c;报错\miniprogram_npm\ 未找到。 问题 微信开发者工具&#xff0c;工具----->构建npm时&#xff0c;提示 message&#xff1a;发生错误 Error: D:\some\path\miniprogram…

Linux 命令学习:

1. PS命令 ps 的aux和-ef区别 1、输出风格不同&#xff0c;展示的格式略有不同 两者的输出结果差别不大&#xff0c;但展示风格不同。aux是BSD风格&#xff0c;-ef是System V风格。 2、aux会截断command列&#xff0c;而-ef不会&#xff0c;当结合grep时这种区别会影响到结果 …

java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis em

&#xfeff; 工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据…

【C++】STL——list的模拟实现、构造函数、迭代器类的实现、运算符重载、增删查改

文章目录 1.模拟实现list1.1构造函数1.2迭代器类的实现1.3运算符重载1.4增删查改 1.模拟实现list list使用文章 1.1构造函数 析构函数 在定义了一个类模板list时。我们让该类模板包含了一个内部结构体_list_node&#xff0c;用于表示链表的节点。该结构体包含了指向前一个节点…

深度学习入门 ---- 张量(Tensor)

文章目录 张量张量在深度学习领域的定义张量的基本属性使用PyTorch安装PyTorch查看安装版本 创建张量常用函数四种创建张量的方式和区别 四则运算 张量 张量在深度学习领域的定义 张量&#xff08;tensor&#xff09;是多维数组&#xff0c;目的是把向量、矩阵推向更高的维度。…