Docker:Docker容器使用

文章目录

  • 容器与宿主机复制
  • 容器环境变量设置
  • 镜像的导出和导入

由于篇幅原因,把后续的使用搬到这篇来

容器与宿主机复制

启动一个nginx服务

root@VM-24-7-ubuntu:~# docker run --name nginx -p 80:80 -d nginx
7a1578bedd97ffc48e9516d03a148c69e216a30f2d18f2624ee569ef62f6c922

在宿主机中创建一个html文件

root@VM-24-7-ubuntu:~# mkdir -p /dockerstudy/myworkdir/container
root@VM-24-7-ubuntu:~# cd /dockerstudy/myworkdir/container/
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# ls
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# echo "hello docker" > index.html
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# ls
index.html
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# cat index.html 
hello docker

拷贝到容器中

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker cp index.html nginx:/usr/share/nginx/html/
Successfully copied 2.05kB to nginx:/usr/share/nginx/html/

进入容器中查看

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker container exec -it 7a1 bash
root@7a1578bedd97:/# cd /usr/share/nginx/html/
root@7a1578bedd97:/usr/share/nginx/html# ls
50x.html  index.html
root@7a1578bedd97:/usr/share/nginx/html# cat index.html 
hello docker

从外部进行访问:

在这里插入图片描述
在容器中更改一下index.html

root@7a1578bedd97:/usr/share/nginx/html# echo " after edit" >> index.html 
root@7a1578bedd97:/usr/share/nginx/html# cat index.html 
hello dockerafter edit

拷贝出来看一下

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# ls
index.html
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# cat index.html 
hello docker    
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker cp nginx:/usr/share/nginx/html/index.html ./
Successfully copied 2.05kB to /dockerstudy/myworkdir/container/./
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# cat index.html 
hello dockerafter edit

把容器资源释放一下

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker stop nginx 
nginx
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker rm nginx 
nginx

容器环境变量设置

启动一个容器,配置环境变量

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker run --name nginx -d -p 80:80 -e TEST=1 nginx
74fb4827d925f7555a07de19cb42ab57fea7a119db2548548f915a1f6740a260

查看环境变量

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker exec -it nginx bash
root@74fb4827d925:/# env | grep TEST
TEST=1

清理信息

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker stop nginx 
nginx
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker rm nginx 
nginx

镜像的导出和导入

创建一个首页信息

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# cat index.html 
hello docker

运行一个nginx镜像,用docker cp把首页拷贝过去

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker run -d --name mynginx -p 80:80 nginx
50081ae378b1a85c427481493d00aea400b462b73dd02db0f7c771dcafe884ec
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker cp /dockerstudy/myworkdir/container/index.html  mynginx:/usr/share/nginx/html/
Successfully copied 2.05kB to mynginx:/usr/share/nginx/html/

此时去运行首页,已经可以看到信息了:

在这里插入图片描述
借助docker export保存镜像

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker export -o mynginx.tar mynginx
root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# ll
total 185624
drwxr-xr-x 2 root root      4096 Jun  9 20:50 ./
drwxr-xr-x 3 root root      4096 Jun  9 19:36 ../
-rw-r--r-- 1 root root        13 Jun  9 20:46 index.html
-rw------- 1 root root 190064128 Jun  9 20:50 mynginx.tar

通过docker import导入镜像

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker import mynginx.tar mynginx:v0.4
sha256:0eea711579d31ae3b284019e01be04255fd1d2cabd729dc6683aae302e0e35fa

把现在容器停止

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker stop 500
500

此时再访问信息,就访问不到了

在这里插入图片描述
使用导出的镜像启动一个新的容器

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker run -d --name mynginx -p 80:80 mynginx:v0.4 nginx -g "daemon off;"
7cfdc6f6da9245f2b2cb369f341c8b508e0dc294002d0aef1da7a043eb0f198f

解释一下这个命令:

这个命令是用于使用Docker来运行一个容器的复合命令,包含了多个参数和选项

  1. docker run: 这是Docker命令行工具中用于创建一个新的容器并启动它的子命令。如果指定的镜像不存在于本地,Docker会尝试从镜像仓库下载。

  2. -d: 这是一个标志选项,表示以“detached”模式运行容器,即后台运行。这意味着容器会在没有与当前终端直接关联的情况下启动,不会直接输出容器的日志信息到当前控制台。

  3. –name mynginx5: 指定新创建的容器的名称为mynginx5。这使得后续管理容器(如停止、启动或删除)时可以通过名字而非容器ID来进行,更加方便。

  4. -p 80:80: 映射端口。这个选项告诉Docker将宿主机(即运行Docker的机器)的80端口映射到容器内部的80端口。这意味着你可以通过访问宿主机的80端口来访问容器中服务的80端口。

  5. mynginx:v0.4: 指定要使用的镜像及其标签。这里是要使用名为mynginx的镜像,版本号为v0.4。Docker会查找本地是否有这个镜像,如果没有,则会尝试从Docker Hub或其他配置的镜像仓库中下载。

  6. nginx -g “daemon off;”: 这部分是在容器启动时执行的命令。具体来说,它指示容器启动nginx服务,并通过-g选项向nginx传递一个配置指令,即daemon off;。这个指令告诉Nginx不要以后台守护进程的方式运行,而是以前台进程运行。这对于希望直接在当前容器中管理Nginx进程,或者查看其输出日志的场景非常有用。不过,由于前面使用了-d让Docker容器后台运行,这里的daemon off;实际上是为了让Nginx的主进程保持在前台,而不是让整个容器保持交互式前台运行,这在某些特定场景下有其用途,比如调试。

综上所述,该命令的完整意义是:以后台模式创建并启动一个名为mynginx5的Docker容器,使用mynginx:v0.4镜像,将宿主机的80端口映射到容器的80端口,并在容器内部启动Nginx服务,且配置Nginx以非守护进程模式运行

此时这个服务就又被搭起来了:

在这里插入图片描述
查询服务,也能看到对应的信息

root@VM-24-7-ubuntu:/dockerstudy/myworkdir/container# docker container ls
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS                               NAMES
7cfdc6f6da92   mynginx:v0.4   "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, :::80->80/tcp   mynginx

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

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

相关文章

【MySQL】复合查询+表的内外连接

复合查询表的内外连接 1.基本查询回顾2.多表查询3.自连接4.子查询4.1单列子查询4.2多列子查询 5.在from子句中使用子查询6.合并查询7.表的内连和外连7.1内连接7.2外连接7.2.1左外连接 7.2.2右外连接 点赞👍👍收藏🌟🌟关注&#x1…

Java程序设计————从控制台输入

向控制台输入信息可以借助Scanner扫描器类来实现 语法: Scanner input new Scanner(System.in); 提示 (1)在使用Scanner类型之前,需要首先指明Scanner类所在的位置,既通过代码 import java.util.Scanner; &…

超强的文本转语音模型ChatTTS,一键打包,免费使用

超强的文本转语音模型ChatTTS,一键打包,免费使用 项目简介项目亮点安装使用python 代码直接引入一键启动包安装部署 ChatTTS webUI 小结一下 文本转语音(TTS)在生活中的应用非常的广泛,比如有声小说、语音导航&#xf…

电脑安全模式怎么进?详细步骤一学就会!

电脑安全模式是一种特殊的启动模式,加载最少的驱动程序和服务,帮助用户解决系统问题,如驱动程序冲突、病毒感染或系统文件损坏。进入安全模式可以帮助您诊断和修复问题,恢复系统的正常运行。本文将介绍电脑安全模式怎么进的三种方…

长期套餐是不是永久套餐?注意:并不是!

当我们在网上选择流量卡时,除了有短期套餐外,还有不少标注着长期套餐的流量卡,那么,长期套餐是不是永久套餐呢?能一直使用吗? ​ 在这里小编要说一下,长期套餐≠永久套餐 长期套餐就是字面意思…

上海斯歌荣获“2023年度杰出数字化转型方案提供商”奖项

为表彰上海斯歌在各行业的数字化转型事业中所做出的突出贡献,经CIO时代、新基建创新研究院专家组评审认定,授予上海斯歌“2023年度杰出数字化转型方案提供商”奖项。荣获该殊荣,不仅是业界对上海斯歌解决方案专业能力及落地实施能力的又一次认…

字符编码字符集那些事

此篇文章仅为网上资料的汇总,方便自己查询使用,原文如下: 参考文章1:一文读懂字符编码 参考文章2:菜鸟教程字符集 参考文章3:百度字符集 参考文章4:一个线上BUG彻底搞懂MySQL字符集,工作也快搞丢了 参考文章5:深入理解MySQL字符集…

Kaggle -- Titanic - Machine Learning from Disaster

新手kaggle之旅:1 . 泰坦尼克号 使用一个简单的决策树进行模型构建,达到75.8%的准确率(有点低,但是刚开始) 完整代码如下: import pandas as pd import numpy as npdf pd.read_csv("train.csv&quo…

我用香橙派做了一个Klipper 3D打印控制器

一个好用的Klipper 3D打印机,一定离不开一个可以稳定进行无线通信,而且性能足够,最重要是价格亲民的上位机。 所谓Klipper,简单来说就是一套可以通过联动上、下位机来有效提升3D打印精度的固件。它拥有高精度的步进电机控制&#…

【图书推荐】《Spark 3.0大数据分析与挖掘:基于机器学习》

本书重点 学习Spark 3.0 ML模块的机器学习算法,用于大数据分析与挖掘。 内容简介 Spark作为新兴的、应用范围广泛的大数据处理开源框架,吸引了大量的大数据分析与挖掘从业人员进行相关内容的学习与开发,其中ML是Spark 3.0机器学习框架使用…

STM32智能家居项目esp8266上云OneNet【附源码+详细教程】

目录 一、硬件选材 二、OneNet使用教程 三、代码修改教程 四、添加数据流方法 五、项目工程(源码元件清单教程) 小白也能做,项目工程在后文可下载。 一、硬件选材 二、OneNet使用教程 拿到代码后肯定是连不上网的,因为源码…

java复习知识点

1.get,set: java 中当定义了一个私有的成员变量的时候,如果需要访问或者获取这个变量的时候,就可以编写set或者get方法去调用,set是给属性赋值的,get是取得属性值的,被设置和存取的属性一般是私有&#xf…

LabVIEW输送机动态特性参数监测系统

开发了一套基于LabVIEW软件和STM32F103ZET6单片机的带式输送机动态特性参数监测系统。该系统通过电阻应变式压力传感器和光电编码器实时采集输送带的张力和带速信息,通过5G模块将数据传输至上位机,实现数据的可视化处理与实时预警,有效提高输…

强大的.NET的word模版引擎NVeloDocx

在Javer的世界里,存在了一些看起来还不错的模版引擎,比如poi-tl看起来就很不错,但是那是人家Javer们专属的,与我们.Neter关系不大。.NET的世界里Word模版引擎完全是一个空白。 很多人不得不采用使用Word XML结合其他的模版引擎来…

计算机网络7——网络安全4 防火墙和入侵检测

文章目录 一、系统安全:防火墙与入侵检测1、防火墙1)分组过滤路由器2)应用网关也称为代理服务器(proxy server), 二、一些未来的发展方向 一、系统安全:防火墙与入侵检测 恶意用户或软件通过网络对计算机系统的入侵或攻击已成为当今计算机安…

【计算机网络基础】OSI七层网络模型 TCPIP四层网络模型

文章目录 ISO介绍网络模型介绍OSI七层模型OSI七层模型介绍OSI七层特点一、TCP/IP四层模型介绍二、TCP/IP四层模型TCP/IP协议簇一次C/S通信 🌈你好呀!我是 山顶风景独好 🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分…

气膜体育馆:现代城市体育设施的新选择—轻空间

在现代城市的建设中,体育设施的需求日益增加,而传统的体育馆建设周期长、成本高,已经难以满足快速发展的城市需求。作为一种新型的体育设施,气膜体育馆以其独特的优势和灵活的设计,正在成为城市体育设施的新选择。那么…

探索乡村振兴新模式:发挥科技创新在乡村振兴中的引领作用,构建智慧农业体系,助力美丽乡村建设

随着科技的不断进步,乡村振兴工作正迎来前所未有的发展机遇。科技创新作为推动社会发展的重要力量,在乡村振兴中发挥着越来越重要的引领作用。本文旨在探讨如何发挥科技创新在乡村振兴中的引领作用,通过构建智慧农业体系,助力美丽…

pnpm : 无法加载文件 C:\Users\xxxxx\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。

vscode中执行pnpm install的时候,直接报了上面的错误。 解决: 然后输入:set-ExecutionPolicy RemoteSigned,按回车,然后根据提示,我们选A。 然后回车。 这样我们再次回到vscode中的我们就会发现可以了。 …

Android程序设计课程教学解决方案

引言 随着信息技术的飞速发展,智能手机和移动应用已成为现代生活不可或缺的一部分。Android作为全球最大的移动操作系统,其开发人才需求量巨大。高职院校作为培养高素质技能人才的重要基地,如何在Android程序设计课程中有效提升学生的实践能力…