ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【Docker第一课】docker的根本命令和试启动容器(详细图解) [打印本页]

作者: 篮之新喜    时间: 2024-8-2 21:32
标题: 【Docker第一课】docker的根本命令和试启动容器(详细图解)
目录
知识梗概
docker的初步相识
相识docker常用命令
试开启容器(这里演示nginx、python3和mysql)
1、nginx容器的启动
2、python3容器的启动
docker的作用
捏造机与容器的区别


   写在前面:
  本专栏你将相识docker一些入门知识,大概有七篇,此篇是第一篇详细的操作和命令在Linux上的实现都会截图,清晰的展示给各位看客,带您零基础相识docker,小编也只是docker爱好者,如有任何问题欢迎留言或私信探讨,期待与您的相关技术栈交换!
  注:docker完整头脑导图关注留言后可分享给您!
  知识梗概


docker的初步相识

Docker是什么?
简单来说,docker是一个开源应容器引擎,它允许开发者将他们的应用以及依靠包打包到一个可以移植到容器中,发布到Linux或者windows这些盛行的操作系统机器上。Docker容器完全使用沙箱机制,相互之间不会有任何接口。
Docker的构成部门包括Docker Client客户端、Docker Daemon守护进程、Docker Image镜像和Docker Container容器。Docker的起源可以追溯到PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,其源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。
官方学习网站:Docker: Accelerated Container Application Development
docker是一个容器软件,理解成一个轻量级的捏造机。将软件装入docker中,docker可以限定该软件使用的cpu、内存等资源;它是一种捏造化的隔离技术。
说了这么多,接下来我们安装一下docker吧!
先准备一台新的centos7捏造机(我给了4核8G内存100G磁盘,为docker容器预留充足的空间),然后按照如下官方文档安装docker(把命令输进去就行,虽然是全英文件,但是操作很简单):
安装方法:Install Docker Engine on CentOS | Docker DocsInstall Docker Engine on CentOS | Docker DocsInstall Docker Engine on CentOS | Docker Docs
相识docker常用命令

Docker的常用命令有哪些?
先对一些操作指令稍稍相识,之后也会有演示什么的:
  1. 查看docker版本:[root@docker ~]# docker version
  2. 查看运行的容器:[root@docker ~]# docker ps
  3. 查看容器,包括未运行的:[root@docker ~]# docker ps -a
  4. docker命令帮助:[root@docker ~]# docker --help
  5. 查看镜像:[root@docker ~]# docker images
  6. 拉取nginx镜像:[root@docker ~]# docker pull nginx
  7. 启动一个容器:[root@docker ~]# docker start sc-nginx-1(sc-nginx-1是给nginx容器取的容器名)
  8. 关闭一个运行的容器:[root@docker ~]# docker stop sc-nginx-1
  9. 删除一个容器:[root@docker ~]# docker rm sc-nginx-1
  10. 删除容器:[root@docker ~]# docker rm sc-nginx-1
  11. 查询go相关的镜像:[root@docker ~]# docker search go
  12. 查看容器启用的日志:[root@docker ~]# docker logs sc-mysql-1
  13. 删除镜像(镜像文件的容器要停止以及删掉才能删除他的镜像):[root@docker ~]# docker rmi nginx
  14. 查看容器的详细信息:[root@docker ~]# docker inspect sc-nginx-1
复制代码
以及运行容器就是docker run xxxxxxx;容器之间的文件共享:docker cp xxxxxx;
如果有肯定Linux基础的话,这些命令都很好懂的。
试开启容器(这里演示nginx、python3和mysql)

已经知道这么多东西了,那容器到底是怎么运行的呢?
下面我准备演示一下启动nginx和mysql的容器!
1、nginx容器的启动

在捏造机上执行如下操作:
  1. 拉取nginx镜像:[root@docker ~]# docker pull nginx
  2. 查看镜像:[root@docker ~]# docker images
  3. 设置nginx的容器:[root@docker ~]# docker run --name sc-nginx-1 -d -p 8080:80 --cpu-shares 100 --cpus 1 --cpuset-cpus 0 -m 10000000 nginx
  4. 查看运行的容器:[root@docker ~]# docker ps
复制代码
此时就可以看到有一个叫sc-nginx-1的容器运行起来了。
这些命令让我们产生了一些疑问:
镜像是啥?跟容器有什么关系呢?运行容器时docker run命令后面的选项都是什么意思?
Docker镜像是Docker容器的构建块,是一种轻量级、独立的可执行软件包。它包罗了运行应用步伐所需的所有代码、运行时、库、环境变量、设置参数以及依靠项等。把这个镜像放到docker中就可以运行起来。镜像可以被视为一个只读的模板,用于创建容器实例。在Docker中,镜像可以用来创建容器,并作为Docker运行容器的条件。
镜像与容器的关系:镜像里是步伐的源代码(二进制步伐)-->静态;
容器:是运行镜像的地方-->动态的;
一旦容器运行起来后,在操作系统里就对应产生一个进程;
杀死容器对应的进程,容器就停止运行了:

对于docker run的那条指令的意思在此解读一下:
[root@docker ~]# docker run --name sc-nginx-1 -d -p 8080:80 --cpu-shares 100 --cpus 1 --cpuset-cpus 0 -m 10000000 nginx
--name:指定容器名字,一个nginx镜像可以启动多个nginx容器,但是容器名和端口不能重复。如果还要再启动一个nginx容器,就可以叫sc-nginx-2、sc-nginx-3……你就可以通过这个名字来引用和管理这个容器了,而不是使用自动生成的容器ID。
-d:容器在后台运行
-p:将容器的某个端口映射到宿主机的某个端口,这里将容器的80端口映射到宿主机的8080端口,这样,任何发送到宿主机 8080 端口的流量都会被转发到容器内的 80 端口。
--cpu-shares:这个选项用于设置CPU共享权重。在Docker中,--cpu-shares 并不直接限定容器可以使用的CPU百分比,而是设置了一个权重,用于在多个容器间分配CPU资源。
--cpus:这个选项用于限定容器可以使用的CPU核心数,这里可以用1个。
--cpuset-cpus:这个选项用于限定容器只能在特定的CPU核心上运行,这里指定名为“cpu0”这块cpu。
-m:这个选项用于限定容器可以使用的内存量。在这个例子中,容器被限定为只能使用10MB(即10,000,000字节)的内存。
  1. 查看容器的详细信息:[root@docker ~]# docker inspect sc-nginx-1
  2. 查看容器状态:[root@docker ~]# docker stats
复制代码
访问宿主机的地址,指定8080端口,就能看到运行成功的nginx:

2、python3容器的启动

  1. [root@docker ~]# docker pull python:3
  2. [root@docker ~]# docker images
  3. [root@docker ~]# docker run -it --rm --name sc-python3-1 python:3
  4. #(这里的--rm表示,当我们退出容器时,自动删除容器)
  5. #(-it表示进入一个容器时,开启一个终端,能进行交互)
复制代码
运行效果如下:

docker的作用

启动了这么多容器,我们可以看到docker的很多优点:
最明显的一点就是降本升效。Docker完全打破了我们原有的安装软件的方法,简化了安装步骤;其次就是docker可以控制分配给容器的资源,以是可以提高资源的利用率;Docker容器应用直接运行于宿主内核,无需启动完整的操作系统,因此大大节省了开发、测试和摆设的时间……
随着相识的深入,我们会认识到docker的更多优点。
使用Docker安装软件和直接使用操作系统安装软件存在显著的区别:
1、隔离性:Docker容器提供了隔离的运行环境,这意味着每个容器都拥有本身独立的运行环境和依靠项。这种隔离性有助于防止不同应用步伐之间的版本辩论和其他潜伏问题。相比之下,直接在操作系统上安装软件时,不同软件可能会共享系统资源,并可能产生依靠辩论。
2、管理和摆设:使用Docker可以更轻松地管理和摆设多个服务。
3、版本控制:通过Docker镜像,你可以轻松控礼服务的版本。你可以选择特定版本的nginx或MySQL镜像来开启容器,并在需要时方便地升级或回退。
4、资源占用:Docker容器相对于传统捏造机更为轻量级,因为它们共享主机系统的内核(这一点后面镜像制作时会讲)。这意味着Docker容器在资源占用方面更加高效,启动速度也更快。而直接在操作系统上安装软件时,可能会占用更多的系统资源,并且启动速度可能会较慢。
5、可移植性:Docker容器打包了应用步伐及其所有依靠项,使其在任何支持Docker的环境中运行一致。这使得从开发到生产环境的迁徙变得更加简单和高效。而直接在操作系统上安装的软件可能受到特定操作系统和设置的限定,因此在不同环境之间的迁徙可能会更加困难。
6、数据备份和迁徙:使用Docker举行数据备份和迁徙更加方便和强大。你可以轻松地将Docker容器和镜像导出为文件(之后镜像导入导出也会演示),并在需要时将其导入到其他环境中。而直接在操作系统上安装的软件可能需要更复杂的步骤来举行数据备份和迁徙。
稍微提一下容器技术:

之后对这些会有更深刻的理解。
捏造机与容器的区别

容器是一个软件运行的标准单元,打包好代码和它依靠的库快速运行在该单元里;
容器和捏造机都要安装在硬件系统上;但是捏造机的封装布局更复杂,安全性更高,隔离性更强;
容器的启动速度更快,资源消耗也更少;容器公用宿主机的内核,资源可控;
捏造机的镜像比较大,容器的镜像小;
两者在布局上的区别:

知乎上看到一个总结比较美满的图:

此次分享就到这里,如有问题,欢迎留言;关注可分享docker头脑导图

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4