docker的基础知识点和使用介绍 docker的使用流程
bigegpt 2024-09-27 00:47 4 浏览
什么是docker
docker是一个容器引擎,提供了一整套完整的容器解决方案。它是在2014年最火热的开源项目,基于Apache2.0开原协议,由Go语言开发。
什么是容器
容器其实历史比较久远,Linux上的LXC、Solaris上的Zones等都是容器的不同实现方式。
容器实质上是一个运行在宿主机上的进程。只不过在这个进程启动之前进行了一些处理,让进程进入了一个全新的虚拟环境,与宿主机的环境分离。所以这个进程认为自身处于一个独立的运行世界中。
一个简单的例子是:在容器中创建的文件在宿主机上是看不到的。
容器的优势
容器创建、删除速度快 容器在运行期间占用的开销比较小,在一个宿主机上,容器运行的数量可以很多
docker的优势
容器管理很方便
安装docker
前提条件
docker已经可以运行在多种操作系统上甚至windows上,这里我采用centos7.3来安装。docker对操作系统要求如下:
- 内核版本大于3.10:可通过uname -r查看
- 系统是64位:可通过uname -i查看
yum安装
在配置好yum源后可直接使用yum命令进行安装:
yum install docker
安装好后启动docker:
service docker start
然后可以运行下面的命令检查docker的版本:
# docker version
Client:
Version: 1.13.1
API version: 1.26
Package version:
Go version: go1.8.3
Git commit: 774336d/1.13.1
Built: Wed Mar 7 17:06:16 2018
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version:
Go version: go1.8.3
Git commit: 774336d/1.13.1
Built: Wed Mar 7 17:06:16 2018
OS/Arch: linux/amd64
Experimental: false
docker启动和停止
docker和其他服务一样,可以通过service命令来控制启动和停止:
'''启动'''
service docker start
'''停止'''
service docker stop
'''查看状态'''
service docker status
'''重启'''
service docker restart
docker架构
docker是一个典型的C/S架构:
docker server
这是一个守护进程,一直运行在后台,其中内嵌有一个web server
docker client
他是一个命令行工具,通过http协议与docker server进行交互
docker server和docker cliebt公用一个可执行文件,通过命令which docker就可以找到。
docker镜像
什么是docker镜像
docker可以理解为一个目录:docker server再启动容器的时候,先根据这个镜像目录复制出一个目录,然后在容器进程启动的时候,让这个进程chroot到这个目录下,这样这个目录就成了这个容器的根文件系统。
查看docker镜像
通过下面的命令可以查看本地有哪些docker镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/httpd latest 2e202f453940 6 weeks ago 179 MB
docker.io/centos latest ff426288ea90 2 months ago 207 MB
docker.io/hello-world latest f2a91732366c 3 months ago 1.85 kB
docker.io/training/webapp latest 6fae60ef3446 2 years ago 349 MB
IMAGE ID:镜像ID,长度为64位,通常用前12位表示就可以了 TAG:每个镜像可以打上多个TAG REPOSITORY:本地镜像存储的仓库(刚装完的docker是空的)
REPOSITORY和TAG可以唯一标识一个镜像
docker容器
运行容器
运行容器可以使用docker run命令,常用选项包括:
-i -t:这两个选项经常一起用,缩写为 -it, 用于创建交互式容器
-d:让容器运行在后台,用于创建守护式容器
--name:为容器指定名称
运行交互式容器
现在我的本地镜像如下:
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/httpd latest 2e202f453940 6 weeks ago 179 MB
docker.io/centos latest ff426288ea90 2 months ago 207 MB
docker.io/hello-world latest f2a91732366c 3 months ago 1.85 kB
docker.io/training/webapp latest 6fae60ef3446 2 years ago 349 MB
现在我通过docker.io/centos这个镜像创建一个交互式容器,命令如下:
docker run -it centos:latest /bin/bash
-it:指定创建交互式容器
centos:latest:以仓库:TAG的方式指定镜像名称
/bin/bash:容器对应的进程,会启动一个新的shell
通过上边的命令,启动了一个新的shell,这个shell是运行在容器环境中的。此时,我们离开了原本的shell,此后我们执行的shell命令都会在虚拟环境中。当我们执行exit就结束了了这个虚拟shell,从而结束了整个容器。
[root@193cbc5e0dbe /]# ls
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
可以看到,在执行了docker run之后产生了一个新的shell,此时的命令提示符前的目录变成了193cbc5e0dbe。当运行这个命令时镜像不存在,则docker会自动从官方镜像仓库拉取镜像并生成容器。
运行守护式容器
交互式容器适合一些临时的任务。大多数情况下,希望创建守护式容器,方法如下:
docker run -d redis
这里创建一个redis的容器,但是我本地闷油redis镜像,所以会从官方拉取镜像并创建容器。
这里,只提供了镜像名称而没有提供TAG,则会使用默认TAG “latest”,同样的没有指定命令,则会使用镜像提供的默认命令。redis镜像的默认命令是:/entrypoint.sh redis-server
守护式容器运行在后台,而shell还是宿主机的shell,这样就可以进行其他工作而不受容器的影响。
查看容器的基本信息
通过下面的命令可以查看容器的基本信息:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f9cb9fe5a189 redis "docker-entrypoint..." 4 minutes ago Up 4 minutes 6379/tcp brave_mccarthy
可以看到容器的ID、使用的镜像、状态等信息
这里看不到之前交互式容器的信息,因为退出了,但是可以添加-a选项查看到:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f9cb9fe5a189 redis "docker-entrypoint..." 4 minutes ago Up 4 minutes 6379/tcp brave_mccarthy
193cbc5e0dbe centos:latest "/bin/bash" 17 minutes ago Exited (0) 8 minutes ago clever_roentgen
可以看到交互式容器的状态为退出。
查看容器详细信息
docker ps命令只能查看到一些基本的内容,想要知道更详细的信息比如:ip、端口等,就需要如下命令:
docker inspect f9cb9fe5a189
其中f9cb9fe5a189是容器的ID。这个命令返回一个json格式的数据,十分详细。有时二次开发需要这个信息。
如果说只想要获取IP地址的话,可以添加如下参数:
docker inspect -f '{{.NetworkSettings.IPAddress}}' f9cb9fe5a189
{{.NetworkSettings.IPAddress}}可以理解为NetworkSettings下的IPAddress字段
停止守护式容器
停止守护式容器可以使用下面的命令:
docker stop f9cb
f9cb是容器ID的缩写,这样也是可以的,此时使用docker ps就看不到这个容器了。
删除容器
停止容器并不会删除容器,删除容器可以使用如下的方式:
docker rm f9cb9
f9cb9是容器ID的缩写,这样在docker ps -a中就看不到这个容器了,它被删除了。
相关推荐
- 有些人能留在你的心里,但不能留在你生活里。
-
有时候,你必须要明白,有些人能留在你的心里,但不能留在你生活里。Sometimes,youhavetorealize,Somepeoplecanstayinyourheart,...
- Python学不会来打我(34)python函数爬取百度图片_附源码
-
随着人工智能和大数据的发展,图像数据的获取变得越来越重要。作为Python初学者,掌握如何从网页中抓取图片并保存到本地是一项非常实用的技能。本文将手把手教你使用Python函数编写一个简单的百度图片...
- 软网推荐:图像变变变 一“软”见分晓
-
当我们仅需要改变一些图片的分辨率、裁减尺寸、添加水印、标注文本、更改图片颜色,或将一种图片转换为另一种格式时,总比较讨厌使用一些大型的图像处理软件,尤其是当尚未安装此类软件时,更是如此。实际上,只需一...
- 首款WP8.1图片搜索应用,搜照片得资料
-
首款WP8.1图片搜索应用,搜照片得资料出处:IT之家原创(天际)2014-11-1114:32:15评论WP之家报道,《反向图片搜索》(ReverseImageSearch)是Window...
- 盗墓笔记电视剧精美海报 盗墓笔记电视剧全集高清种子下载
-
出身“老九门”世家的吴邪,因身为考古学家的父母在某次保护国家文物行动时被国外盗墓团伙杀害,吴家为保护吴邪安全将他送去德国读书,因而吴邪对“考古”事业有着与生俱来的兴趣。在一次护宝过程中他偶然获得一张...
- 微软调整Win11 24H2装机策略:6月起36款预装应用改为完整版
-
IT之家7月16日消息,微软公司今天(7月16日)发布公告,表示自今年6月更新开始,已默认更新Windows1124H2和WindowsServer2025系统中预装...
- 谷歌手把手教你成为谣言终结者 | 域外
-
刺猬公社出品,必属原创,严禁转载。合作事宜,请联系微信号:yunlugongby贾宸琰编译、整理11月23日,由谷歌新闻实验室(GoogleNewsLab)联合Bellingcat、DigD...
- NAS 部署网盘资源搜索神器:全网资源一键搜,免费看剧听歌超爽!
-
还在为找不到想看的电影、电视剧、音乐而烦恼?还在各个网盘之间来回切换,浪费大量时间?今天就教你如何在NAS上部署aipan-netdisk-search,一款强大的网盘资源搜索神器,让你全网资源...
- 使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建
-
前言回顾在上一篇文章《搭建持久化的INFINIConsole与Easysearch容器环境》中,我们详细介绍了如何使用基础的dockerrun命令,手动启动和配置INFINICon...
- 为庆祝杜特尔特到访,这个国家宣布全国放假?
-
(观察者网讯)近日,一篇流传甚广的脸书推文称,为庆祝杜特尔特去年访问印度,印度宣布全国放假,并举办了街头集会以示欢迎。菲媒对此做出澄清,这则消息其实是“假新闻”。据《菲律宾世界日报》2日报道,该贴子...
- 一课译词:毛骨悚然(毛骨悚然的意思是?)
-
PhotobyMoosePhotosfromPexels“毛骨悚然”,汉语成语,意思是毛发竖起,脊梁骨发冷;形容恐惧惊骇的样子(withone'shairstandingonend...
- Bing Overtakes Google in China's PC Search Market, Fueled by AI and Microsoft Ecosystem
-
ScreenshotofBingChinahomepageTMTPOST--Inastunningturnintheglobalsearchenginerace,Mic...
- 找图不求人!6个以图搜图的识图网站推荐
-
【本文由小黑盒作者@crystalz于03月08日发布,转载请标明出处!】前言以图搜图,专业说法叫“反向图片搜索引擎”,是专门用来搜索相似图片、原始图片或图片来源的方法。常用来寻找现有图片的原始发布出...
- 浏览器功能和“油管”有什么关联?为什么要下载
-
现在有没有一款插件可以实现全部的功能,同时占用又小呢,主题主要是网站的一个外观,而且插件则主要是实现wordpress网站的一些功能,它不仅仅可以定制网站的外观,还可以实现很多插件的功能,搭载chro...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)