【容器Docker】Docker学习笔记

1、什么是Docker

  • Docker 将程序和程序运行所依赖的所有环境都打包到镜像里。“build once, run anywhere”
  • Docker 是容器的一种实现。

Windows 下如何安装Docker:

  • 官方安装教程:Install Docker Desktop on Windows | Docker Docs
  • 有两种安装套装,需要安装 WSL2 或者开启 Hyper-V and Containers 虚拟化特性。
  • 注意如果你已经装了WSL,不想因为装WSL2破坏了WSL,那么最好选择“开启 Hyper-V and Containers 虚拟化特性”的这个方式。
  • 无论哪种套装,安装“Docker Desktop” 并运行启动。

2、docker image

一个Docker 镜像(image)包含了程序代码和程序运行所依赖的所有环境。 Docker 镜像一般存放在镜像仓库服务(Image Registry)里,默认的镜像仓库服务是Docker Hub。 用户可以制作、构建镜像、将镜像上传到镜像仓库服务,从而可以在其他地方从镜像仓库服务里拉取镜像。

2.1 拉取

例如,从Docker Hub拉取 helloworld 镜像的命令:

docker image pull  library/hello-world

2.1 列举所有镜像

一个镜像的名字也叫镜像的仓库名,英文是REPOSITORY,本地列举所有镜像的命令

docker image ls

2.3、查看某个镜像的配置信息

一个镜像的配置信息可以通过下面的命令查看

docker image inspect hello-world

2.4、移除镜像 

通过命令docker image rm命令可以删除不用的镜像,例如先通过命令查看有哪些镜像。

docker image ls

截图如下,可以看到两个名字为<none>的镜像:

如果镜像没有被启动过,直接之下下面的命令能删除成功:

docker image rm 09d01ed9156b

启动过我们可以批量使用Linux命令批量删除

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm

2.5、查看所有的镜像操作命令

docker image

 3、docker cnontainer

一个Docker镜像(image)运行后,就是一个容器实例,称为container

3.1 运行

以镜像hello-world为例,启动容器:

docker container run -it hello-world

 3.2 运行,进入交互式shell环境

运行容器后可以通过参数指定执行的第一个程序,例如可以先拉取ubuntu的容器镜像

docker image pull  library/ubuntu

下载 ubuntu 镜像成功

接着,启动container 并执行第一个程序bin/bash:

docker container run -it ubuntu bin/bash

可以看到成功进入了ubuntu容器实例的shell环境,并在shell环境里执行了lsll命令。

3.3 kill容器

使用容器的id就可以杀死容器实例

docker container kill ******

 3.4  更多命令

下面的命令可以看到所有的 container 可选操作

docker container

如图所示:

4、 使用Dockerfile制作镜像

4.1 创建仓库

在你自己的 gitcode.net 上创建一个仓库,命名为cloud_native_hello_py,目录结构如下:

.
├── .dockerignore
├── .gitignore
├── Dockerfile
├── README.md
└── src├── main.py└── requirements.txt

4.2 构建容器并发布

上一题准备了代码仓库,并且配置了对应的 Dockerfile, 现在使用 docker 命令来制作镜像:

docker image build -t cloud_native_hello_py:0.0.1 ./

构建如图所示:

构建镜像之后,可以将镜像发布到 DockerHub ,不过需要首先注册下账号

  1. 在 https://hub.docker.com 上注册自己的账号
  2. 使用命令 docker login 在本机登陆,输入自己的用户名和密码

现在,可以使用命令 tag 来修改镜像的标签为用户名/镜像名格式:

docker tag cloud_native_hello_py:0.0.1 long/cloud_native_hello_py

可以用docker image ls验证结果

现在,可以使用镜像的 push 命令来发布

docker push long/cloud_native_hello_py:latest

5、拉取镜像并运行 

上一节创建了一个Python Flask 服务git仓库,然后为它配置了一个Dockerfile,最后构建了镜像并推送到Docker Hub。

现在,可以从 Docker Hub 拉取该镜像并运行。

首先,拉取镜像:

docker pull long/cloud_native_hello_py

其次,运行容器:

docker run -p 1024:1024 -it long/cloud_native_hello_py

这个命令没有指定容器启动后运行的命令,因此容器启动后会执行镜像制作时Dockerfile里指定的CMD命令,可以看到容器启动后执行了Python程序,容器服务在1024端口监听HTTP请求,因为 docker run 配置了参数-p 1024:1024,这里把主机的1024端口映射到了容器里的1024端口。

现在,在浏览器里测试下请求:

请求成功,输出了"Hello World!",到这里你就成功学会了容器镜像制作、发布、拉取和运行一条龙服务。

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

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

相关文章

使用openMVS库,在VS2022中启用c++17标准编译仍然报错

使用openMVS库&#xff0c;在VS2022中启用c17标准编译仍然报错 现象 项目中引用了某些开源库&#xff08;例如openmvs2.1.0&#xff09;&#xff0c;编译时要求启用编译器对c17的支持。 没问题&#xff01;大家都知道在下图所示的位置调整C语言标准&#xff1a; 但是&#…

sqlite3使用中的问题

1、创建自增使用 integer primary key autoincrement 2、注释使用 – 3、创建表时不能同时创建索引&#xff0c;需要create index 4、删除索引使用drop indx 5、在使用soci更新数据库时&#xff0c;数据没有更新&#xff0c;需要使用statement.execute(true) 6、在使用命令查询…

C++常见面试题-进阶部分50题

问题1&#xff1a; 解释C中的模板元编程是什么。 答案&#xff1a; 模板元编程是一种利用C模板来执行编译时计算的技术。它允许程序在编译期间进行复杂的计算&#xff0c;而非运行时。 问题2&#xff1a; C17中的结构化绑定是什么&#xff1f; 答案&#xff1a; 结构化绑定是…

智能优化算法应用:基于类电磁机制算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于类电磁机制算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于类电磁机制算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.类电磁机制算法4.实验参数设定5.算法…

rpc和消息队列区别

RPC 和消息队列都是分布式微服务系统中重要的组件之一&#xff0c;下面我们来简单对比一下两者&#xff1a; 从用途来看&#xff1a;RPC 主要用来解决两个服务的远程通信问题&#xff0c;不需要了解底层网络的通信机制。通过 RPC可以帮助我们调用远程计算机上某个服务的方法&a…

Unity CG内置文件

文档 内置文件 内置文件中的函数 常用宏 变量 CG内置文件位置和作用 位置 Unity安装目录 Editor/Data/CGIncludes中后缀为cginc的文件 作用 类似CG内置函数&#xff0c;提供常用的函数、结构体、变量等&#xff0c;提高开发效率 使用 CG模块中使用 #include “内置文件…

ArcGIS Pro中去除黑边方法汇总

在有些时候&#xff08;比如镶嵌栅格后&#xff09;&#xff0c;我们获取到的影像数据可能会有黑边&#xff0c;这里为大家汇总一下在ArcGIS Pro中去除黑边的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的影像数据&#xff0c;除了…

vmware离线安装docker-compose

vmware离线安装docker-compose 最近安装docker-compose&#xff0c;发现git取拉取&#xff0c;不是拒绝连接就是报443错误&#xff0c;或者其他错误 最后发现用包直接传上去好用&#xff0c;不用git拉取了 离线安装docker-compose 本文章给的docker-compose离线包&#xff0c;…

C语言学习第二十四天(预处理)

1、预处理符号 C语言设置了一些可以直接使用的预处理符号 __FILE__//进行编译的源文件 __LINE__//文件当前的行号 __DATE__//文件被编译的日期 __TIME__//文件被编译的时间 __STOC__//如果编译器遵循ANSI C 其值是1&#xff0c;否则未定义 一个例子&#xff1a; printf(&…

JNDI注入Log4jFastJson白盒审计不回显处理

目录 0x00 前言 0x01 Maven 仓库及配置 0x02 JNDI 注入简介 0x03 Java-第三方组件-Log4J&JNDI 0x04 Java-第三方组件-FastJson&反射 0x05 白盒审计 - FastJson 0x06 白盒审计 - Log4j 0x07 不回显的处理方法 0x00 前言 希望和各位大佬一起学习&#xff0c;如果…

多线程面试题

文章目录 1. 如何停止正在运行的线程2. 请你谈谈JMM&#xff08;java内存模型&#xff09;3. AQS4. ReentrantLock实现原理5. 死锁怎么检测 1. 如何停止正在运行的线程 设置一个共享变量作为线程退出的标记&#xff0c;当这个标记不满足时while循环&#xff0c;线程一直运行&a…

uniapp图片上传说明

目录 1.文件上传组件 2.单文件上传 3.多文件上传 4.注意点 1.文件上传组件 前端上传组件使用uni-file-picker&#xff0c;可以自行进行下载使用。默认上传到绑定的服务空间&#xff0c;配置属性auto-upload为false关闭自动上传&#xff0c;可以限定上传的是图片还是文件&am…

Databend 开源周报第 124 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 新增对 Delta 和…

使用Python编写简单网络爬虫实例:爬取图片

&#x1f34e;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 ​编辑 简介 步骤 1. 安装依赖库 2. 创建目录 3. 发送HTTP请求并解析页面 4. 查找图片标签并下载图片 注意事项 结语 我的其他博客 简介 网络爬虫是一种…

等保测评主要保护哪些方面的安全?

等保测评是经公安部认证的具有资质的测评机构&#xff0c;依据国家信息安全等级保护规范规定&#xff0c;受有关单位委托&#xff0c;按照有关管理规范和技术标准&#xff0c;对信息系统安全等级保护状况进行检测评估的活动。那么企业做等保“保”的是什么呢&#xff1f; 等保主…

【js文件】谷歌地图 markerclusterer.js

谷歌地图,点聚合,所使用的js function MarkerClusterer(map, opt_markers, opt_options) {this.extend(MarkerClusterer, google.maps.OverlayView);this.map_ map;/*** type {Array.<google.maps.Marker>}* private*/this.markers_ [];/*** type {Array.<Cluster&…

(自适应手机版)全屏滚动装修装潢公司网站模板

(自适应手机版)全屏滚动装修装潢公司网站模板 PbootCMS内核开发的网站模板&#xff0c;该模板适用于装修公司网站、装潢公司网站类等企业&#xff0c;当然其他行业也可以做&#xff0c;只需要把文字图片换成其他行业的即可&#xff1b; 自适应手机版&#xff0c;同一个后台&a…

SQL Server 安装教程

安装数据库 1、启动SQL Server2014安装程序&#xff0c;运行setup.exe文件&#xff0c;打开”SQL Server安装中心“对话框&#xff0c;单击左侧 的导航区域中的”安装“选项卡。 2、选择”全新SQL Server独立安装或向现有安装添加功能“&#xff0c;启动SQL Server2014安装向导…

自动驾驶技术入门平台分享:百度Apollo开放平台9.0全方位升级

目录 平台全方位的升级 全新的架构 工具服务 应用软件&#xff08;场景应用&#xff09; 软件核心 硬件设备 更强的算法能力 9.0版本算法升级总结 更易用的工程框架 Apollo开放平台9.0版本的技术升级为开发者提供了许多显著的好处&#xff0c;特别是对于深度开发需求…

.gitignore和git lfs学习

The ninth day——12.18 1. .gitignore 忽略规则优先级 从命令行中读取可用的忽略规则当前目录定义的规则父级目录定义的规则&#xff0c;依次递推$GIT_DIR/info/exclude 文件中定义的规则core.excludesfile中定义的全局规则 忽略规则匹配语法 空格不匹配任意文件&#xff…