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

Docker基本介绍

最近需要将项目做成一个web应用并部署到多台服务器上,于是就简单学习了一下docker,做一下小小的记录。

1、简单介绍一下docker

我们经常遇到这样一个问题,自己写的代码在自己的电脑上运行的很流畅,在其他人电脑上就各种bug,这其中的问题肯定是方方面面的,比如环境依赖,版本问题,操作系统不同等。于是,需要重新在其他电脑或服务器上配置环境,很是麻烦。

因此,需要这样一种软件,让我们只需要配置一次环境后就可以在各个平台上运行,不存在缺少环境依赖,版本以及操作系统等问题。这就是docker存在的意义。

你可以这样理解,当代码能在你电脑上跑通时,docker相当于把你整个电脑上的东西一起打包,发送给别人,因此就不存在版本,操作系统等问题。但是可能存在运行内存过低的问题,毕竟计算资源这玩意儿不能打包。

docker的下载安装网址:http://www.docker.com。如果是windows系统,安装dockertodesktop。

2、镜像(image)与容器(container)

**镜像:**Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

容器:镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。

通俗来说,我们需要从中下载镜像[dockerhub]](https://hub.docker.com/),然后通过容器创建镜像,根据需求手动diy这个容器,让其能完成我们的目标需求。在对容器进行diy的过程(比如安装python),并不会对原始镜像产生影响。

因此,由同一个镜像生成的容器是相互独立的(安装的软件不会互通)。有点像类与对象的关系,通过镜像new一个容器。

以django部署到docker为例,大致步骤为:

  1. 下载ubuntu镜像(通常会使用linux操作系统的镜像)
  2. 根据镜像创建容器
  3. 进入容器,安装需要的环境(比如anaconda,python以及各种包)
  4. 上传本地文件到容器
  5. 测试代码是否能跑通,反复修改
  6. 将容器生成一个新的镜像,发布到dockerhub,供别人下载

以上就是我部署django的大致流程,还有很多细节没有涉及到,比如容器开机自启动,开放端口号等。

3、docker基本命令

3.1 帮助启动类命令

启动docker(linux系统)

systemctl start docker

停止docker(linux系统)

systemctl stop docker	

重启docker(linux系统)

systemctl restart docker

查看docker状态(linux系统)

systemctl status docker

开机启动(linux系统)

systemctl enable docker

查看docker概要信息

docker info

查看docker总体帮助文档

docker --help

查看docker命令帮助文档

docker 具体命令 --help  (例如:docker exec --help,查看exec命令的帮助文档)

3.2 镜像命令

列出本地主机上的镜像

docker images

ppPGa7j.png

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建的时间
SIZE:镜像大小

在dockerhub上查找镜像

docker search [OPTIONS] 镜像名字

例如,想要查找ubuntu镜像:

ppPGNng.png

默认是最多展示25个镜像,可以通过–limit来指定数量。例如:

docker search --limit 5 ubuntu

下载镜像

docker pull 镜像名字[:TAG]

没有TAG就是最新版latest,例如:

docker pull ubuntu

删除镜像

docker rmi 某个XXX镜像名字ID
删除单个:docker rmi -f 镜像ID
删除多个:docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部:docker rmi -f $(docker images -qa)

虚悬镜像(了解)

仓库名、标签都是   的镜像,俗称虚悬镜像(dangling image)。

3.3 容器命令

新建+启动容器

docker run [OPTIONS] IMAGE [COMMAND][ARG...]

OPTIONS 常用说明:

参数说明
–name=“容器新名字”为容器指定一个名称
-d后台运行容器并返回容器ID,也即启动守护式容器
-i以交互模式运行容器
-t为容器重新分配一个伪输入终端,也即启动交互式容器
-P随机端口映射
-p指定端口映射(-p 8080:80 -p 443:443)

例如,为上文中的ubuntu镜像创建容器:

docker run -it --name="test" ubuntu

ppPGYjS.png

列出当前所有正在运行的容器

docker ps [OPTIONS]

OPTIONS 常用说明:

参数说明
-a列出当前所有正在运行的容器+历史上运行过的容器
-l显示最近创建的容器
-n显示最近n个创建的容器
-q静默模式,只显示容器编号

ppPGUBQ.png

在上图中的STATUS 一栏中,Up表示容器正在运行。

退出容器

两种退出方式:

  1. run进去容器,exit退出,容器停止
  2. run进去容器,ctrl+p+q退出,容器不停止

启动已停止运行的容器

docker start 容器ID或容器名

重启容器

docker restart 容器ID或容器名

重新进入容器

docker exec -it 容器ID或容器名 /bin/bash

拷贝文件(容器->主机)

docker cp 容器ID:容器内路径 目的主机路径

停止容器

docker stop 容器ID或容器名

强制停止容器

docker kill 容器ID或容器名

删除已停止的容器

docker rm 容器ID

查看容器日志

docker logs 容器ID

查看容器内运行的进程

docker top 容器ID

查看容器内部细节

docker inspect 容器ID

容器生成镜像

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

相关文章:

Docker基本介绍

最近需要将项目做成一个web应用并部署到多台服务器上,于是就简单学习了一下docker,做一下小小的记录。 1、简单介绍一下docker 我们经常遇到这样一个问题,自己写的代码在自己的电脑上运行的很流畅,在其他人电脑上就各种bug&…...

可用于标记蛋白质216699-36-4,6-ROX,SE,6-羧基-X-罗丹明琥珀酰亚胺酯

一.6-ROX,SE产品描述:6-羧基-X-罗丹明琥珀酰亚胺酯(6-ROX,SE)是一种用于寡核苷酸标记和自动DNA测序的荧光染料,可用于标记蛋白质,寡核苷酸和其他含胺分子的伯胺(-NH2)。西…...

高数:极限的定义

目录 极限的定义: 数列极限的几何意义: 由极限的定义得出的极限的两个结论: ​编辑 极限的第三个结论: 例题 方法1: ​编辑 方法2: ​编辑 方法3: ​编辑 极限的定义: 如何理…...

大数据技术之Hadoop

第1章 Hadoop概述1.1 Hadoop是什么1.2 Hadoop发展历史(了解)1.3 Hadoop三大发行版本(了解)Hadoop三大发行版本:Apache、Cloudera、Hortonworks。Apache版本最原始(最基础)的版本,对于…...

一文带你搞懂Go语言函数选项模式,Go函数一等公民。

前言 通过这篇文章《为什么说Go的函数是”一等公民“》,我们了解到了什么是“一等公民”,以及都具备哪些特性,同时对函数的基本使用也更加深入。 本文重点介绍下Go设计模式之函数选项模式,它得益于Go的函数是“一等公民”&#…...

Window.location 详细介绍

如果你需要获取网站的 URL 信息,那么 window.location 对象就是为你准备的。使用它提供的属性来获取当前页面地址的信息,或使用其方法进行某些页面的重定向或刷新。 https://www.samanthaming.com/tidbits/?filterJS#2 window.location.origin → htt…...

js侧滑显示删除按钮

效果图&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalableno"><title>js侧滑显示删…...

Python - DIY - 使用dump取json某些键值对合成新的json文件

Python - Json处理前言&#xff1a;应用场景&#xff1a;基本工具&#xff1a;文件操作&#xff1a;打开文件&#xff1a;写文件&#xff1a;读文件&#xff1a;关闭文件并刷新缓冲区&#xff1a;Json字符串和字典转换&#xff1a;json.loads()&#xff1a;json.dumps():Json文…...

深度剖析指针(中)——“C”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容仍旧是深度剖析指针噢&#xff0c;在上一篇博客中&#xff0c;我已经写过了字符指针、数组指针、指针数组、数组传参和指针传参的知识点&#xff0c;那么这篇博客小雅兰会讲解一下函数指针、函数指针数组 、指向函数指针数组…...

论文阅读 | Video Frame Synthesis using Deep Voxel Flow

前言&#xff1a; 视频帧生成方法&#xff08;视频插帧/视频预测&#xff09;ICCV2017 oral Video Frame Synthesis using Deep Voxel Flow 引言 当下进行视频帧合成的方法分为两种&#xff0c;第一种是光流法&#xff0c;光流准确的话效果好&#xff0c;光流不准确的话则生…...

我所理解的生活

诞生 人真正意义上的诞生应该是社会学意义上的&#xff0c;是一种意识到自我、自我与社会关系的存在&#xff0c;只有这种诞生&#xff0c;才是完整人生的基点&#xff0c;大千世界中&#xff0c;唯有人类以生活作为自己的存在方式&#xff0c;除人类以外&#xff0c;从无机界…...

debian 部署nginx https

我是flask 处理请求单进程&#xff0c; 差点意思 &#xff0c; 考虑先flask 在往下走 一&#xff1a;安装nginx 因为我是debian 系统&#xff0c;所以我的建议是直接 sudo apt-get install nginx 你也可以选择在官网下载&#xff0c; 但是我搭建ssl 的时候安装openssl非常的麻…...

SQL 层功能改进 - lookupJoin 的优化

一、传统 join 算法lookupJoin 是 join 查询的一种&#xff0c;传统 join 算法为&#xff1a;1. 遍历 A 表&#xff0c;读取一条数据 r2. 遍历 B 表&#xff0c;对于每条数据&#xff0c;与 r 进行 join 操作3. 重复 1、2 操作&#xff0c;直到 A 表遍历完所有数据二、lookupJo…...

动态规划:鸣人的影分身

在火影忍者的世界里&#xff0c;令敌人捉摸不透是非常关键的。我们的主角漩涡鸣人所拥有的一个招数——多重影分身之术——就是一个很好的例子。影分身是由鸣人身体的查克拉能量制造的&#xff0c;使用的查克拉越多&#xff0c;制造出的影分身越强。针对不同的作战情况&#xf…...

如何为三星active2手表安装自己DIY的表盘

一、步骤介绍 Step 1. 下载Galaxy watch studio&#xff1b; Step 2. 按照up主“隔壁张师傅2022”的文章进行安装。 二、安装流程简单说明&#xff1a; ① 电脑端官网下载并安装Galaxy Watch Designer或者Galaxy Watch Studio程序。 ② 关闭手表蓝牙连接&#xff0c;并打开调…...

Android 项目必备(四十二)-->Android 多窗口模式

简介 自由窗口模式: 该模式类似于常见的桌面操作系统&#xff0c; 应用界面的窗口可以自由的拖动和修改大小。 分屏模式 该模式可以在手机上使用&#xff0c; 该模式将屏幕一分为二&#xff0c; 同时显示两个应用界面。 画中画模式: 该模式主要用于TV&#xff0c; 在该模式下…...

OpenHarmony的未来和如何做好一个开源社区

今天要分享的文章&#xff0c;可能更多只是作为一种观点。主要包括2个内容。OpenHarmony的未来和如何做好一个开源社区&#xff0c;好的&#xff0c;接下来开始今天的内容。 你对OpenHarmony的未来如何看待&#xff1f; OpenHarmony的未来看起来非常光明&#xff0c;因为它具…...

二叉搜索树实现

树的导览 树由节点&#xff08;nodes&#xff09;和边&#xff08;edges&#xff09;构成&#xff0c;如下图所示。整棵树有一个最上端节点&#xff0c;称为根节点&#xff08;root&#xff09;。每个节点可以拥有具有方向的边&#xff08;directed edges&#xff09;&#xf…...

解决Spring Data Jpa 实体类自动创建数据库表失败问题

先说一下我遇到的这个问题&#xff0c;首先我是通过maven创建了一个spring boot的工程&#xff0c;引入了Spring data jpa&#xff0c;结果实体类创建好之后&#xff0c;运行工程却没有在数据库中自动创建数据表。 找了半天发现是一个配置的问题! hibernate.ddl-auto节点的配…...

Elasticsearch:创建一个简单的 “你的意思是?” 推荐搜索

“你的意思是” 是搜索引擎中一个非常重要的功能&#xff0c;因为它们通过显示建议的术语来帮助用户&#xff0c;以便他可以进行更准确的搜索。比如&#xff0c;在百度中&#xff0c;我们进行搜索时&#xff0c;它通常会显示一些更为常用推荐的搜索选项来供我们选择&#xff1a…...

urllib之ProxyHandler代理以及CookieJar的cookie内存传递和本地保存与读取的使用详解

处理更高级操作时(Cookies处理&#xff0c;代理设置)&#xff0c;需要一个强大的工具Handler&#xff0c;可以理解成各种处理器&#xff0c;有处理登录认证的、有处理Cookies的、有处理代理设置的。利用这些几乎可以做到HTTP请求中所有事情。当中urllib.request模块里的 BaseHa…...

华为造车锚定智选模式, 起点赢家赛力斯驶入新能源主航道

文|螳螂观察 作者| 易不二 近日&#xff0c;赛力斯与华为的一纸联合业务深化合作协议&#xff0c;给了频频猜测赛力斯与华为之间关系的舆论一个明确的定调&#xff1a;智选模式已成为华为与赛力斯共同推动中国新能源汽车产业高质量发展的坚定选择。 自华为智能汽车业务开启零…...

[oeasy]python0096_游戏娱乐行业_雅达利_米洛华_四人赛马_影视结合游戏

游戏娱乐行业 回忆上次内容 游戏机行业从无到有 雅达利 公司 一枝独秀并且带领 行业 发展起来 雅达利公司 优秀员工 乔布斯 在 朋友 帮助下完成了《pong》 Jobs 黑了 Woz 一部分收入 然后拿着钱 去印度禅修了 游戏行业 会如何继续 呢&#xff1f;?&#x1f914; 灵修 乔布…...

使用python测试框架完成自动化测试并生成报告-实例练习

练习一: 使用unittest 完成自动化测试并使用HttpTestRunner生成报告 1、写个简单的计算器功能&#xff0c;大小写转换功能&#xff0c;随机生成字符串功能 2、编写测试用例&#xff0c;不同的数据&#xff08;你能想到的所有测试用例&#xff09;&#xff0c;并进行断言。除0的…...

JavaWeb 实战 01 - 计算机是如何工作的

计算机是如何工作的1. 计算机发展史2. 计算机的基本组成2.1 冯诺依曼体系结构2.2 CPU的内部结构2.3 指令2.3.1 指令表2.3.1.1 寄存器2.3.2 CPU的工作流程2.4 小结3. 操作系统3.1 核心功能3.2 操作系统的软硬件结构3.3 什么是进程 / 任务3.4 进程管理3.4.1 管理3.4.2 PCB : 进程…...

线性代数学习-1

线性代数学习-1行图像和列图像行图像列图像总结本文转载于https://herosunly.blog.csdn.net/article/details/88698381 该文章本人认为十分有用&#xff0c;便自己敲一遍笔记加固印象原文链接 原文这个笔记感觉比我老师讲的更加透彻&#xff0c;清晰。很好的展示了线性代数的原…...

人工智能写的十段代码,九个通过测试了

“抢走你工作的不会是 AI &#xff0c;而是先掌握 AI 能力的人” 编程测试 1. 我想用golang实现二叉树前序&#xff0c;请你帮我写一下代码。 // 定义二叉树节点 type TreeNode struct {Val intLeft *TreeNodeRight *TreeNode }// 前序遍历 func PreOrderTraversal(root *Tre…...

巴塞尔问题数值逼近方法

巴塞尔问题&#xff1a;计算所有平方数的导数和 ∑n1∞1n2lim⁡n→∞(112122⋯1n2)\sum_{n1}^{\infty} \frac{1}{n^{2}}\lim _{n \rightarrow\infty}\left(\frac{1}{1^{2}}\frac{1}{2^{2}}\cdots\frac{1}{n^{2}}\right)n1∑∞​n21​n→∞lim​(121​221​⋯n21​) 其理论解为…...

【深度学习环境】Docker

1. Docker 相关安装配置 1.1 docker 安装 参考&#xff1a;https://www.runoob.com/docker/ubuntu-docker-install.html 1.2 nvidia-docker 安装 参考&#xff1a;https://zhuanlan.zhihu.com/p/37519492 1.3 代理加速 参考&#xff1a;https://yeasy.gitbook.io/docker_…...

基于vscode开发vue项目的详细步骤教程 2 第三方图标库FontAwesome

1、Vue下载安装步骤的详细教程(亲测有效) 1_水w的博客-CSDN博客 2、Vue下载安装步骤的详细教程(亲测有效) 2 安装与创建默认项目_水w的博客-CSDN博客 3、基于vscode开发vue项目的详细步骤教程_水w的博客-CSDN博客 目录 六、第三方图标库FontAwesome 1 安装FontAwesome 解决报…...

北京住房与城乡建设厅网站首页/网站收录查询代码

湖北松滋历史上十二大李氏家族 数据来源&#xff1a;《松滋县志》&#xff08;民国版&#xff09; 湖北松滋历史上十二大李氏家族地理分布&#xff0c;来源说明&#xff0c;祠堂信息&#xff0c;家族名人。一、李家桥二、朱家铺子三、瓦屋场四、李家冲五、界溪河六、界溪河七、…...

好看网电影网站模板免费下载/产品线上营销有哪些方式

C语言mkstemp()函数&#xff1a;建立临时文件头文件&#xff1a;#include 定义函数&#xff1a;int mkstemp(char * template);函数说明&#xff1a;mkstemp()用来建立唯一的临时文件. 参数template 所指的文件名称字符串中最后六个字符必须是XXXXXX. Mkstemp()会以可读写模式和…...

网站个人备案步骤/推广网站源码

实现线程安全总结来说存在四种方法&#xff1a;1. 使用ThreadLocal----主要用于数据的传递2. synchronized----JVm来实现的3. lock----cpu的硬件指令4. 使用Atomic类型----使用CPU的指令来实现5. 并发包中读写分离CopyOnWriteArrayList等...6 ......package J…...

wordpress 图片 二级域名/企业整站seo

作者&#xff1a;白介素2大家好&#xff0c;我是白介素2同学&#xff0c;想必小伙伴们早已开工了&#xff0c;白介素同学这个春节实在是没怎么学习呀(所谓人在江湖&#xff0c;身不由己&#xff0c;容我甩个锅)&#xff0c;惭愧惭愧&#xff0c;悟已往之不谏&#xff0c;知来者…...

织梦如何做中英文网站/湖南网络优化

MD项目地址&#xff1a;jiangzehui/MD简介&#xff1a;此项目基于 Retrotfit2.1Material Designijkplayer 开发的一个 APP。目前已有的功能是 新闻&#xff0c;gif 动图&#xff0c;视频播放更多&#xff1a;作者 提 Bug 标签&#xff1a;Retrotfit2.1-ijkplayer-此项目基于…...

网站图片上的水印怎么做/免费模板

Win11 安装 WSA&#xff08;安卓子系统&#xff09;教程 参考&#xff1a;http://www.xitongzhijia.net/xtjc/20211008/228813.html 上手需要一些 “命令行” 基础&#xff0c;大概了解 WSL WSA Hyper-V 等概念 微软尚未正式推送 WSA&#xff0c;之前看了下需要测试通道就没…...