Docker从入门到放弃一

这篇博客介绍了Docker的基础知识,包括Docker的定义、安装、配置和初步使用。作者通过容器的比喻帮助理解Docker的工作原理,并提供了MacOS上配置Docker镜像加速的解决办法。通过拉取和操作镜像、容器,读者可以了解Docker的基本操作流程。
摘要由CSDN通过智能技术生成

全文共4670字,阅读时长约4分钟,感谢阅读

1.前言

原本就仅仅只是想浑水摸鱼地写一篇Docker的简单介绍文章,写好后自己觉得索然无味,像是在制造垃圾,现在重新从头捋一遍自己的学习过程,希望能对你们有所帮助

2.Docker是什么

我想每个人,不管是否可以了解过,你或多或少都有听说过Docker的大名,那么Docker到底是什么呢?

​ A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.

一个容器是一个将依赖环境和代码打包好的标准的软件单元,所以应用可以快速可靠地从一个环境运行到另一个环境,一个Docker容器惊喜哪个是一个轻量级的,独立的可执行的软件包包含着一切你运行应用所需要的,代码。系统库金额设置

Container images become containers at runtime and in the case of Docker containers - images become containers when they run on Docker Engine. Available for both Linux and Windows-based applications, containerized software will always run the same, regardless of the infrastructure. Containers isolate software from its environment and ensure that it works uniformly despite differences for instance between development and staging.

Docker的容器镜像在运行时成为容器,可用于Linux和基于Windows的应用程序,无论运行的设备如何,容器化软件运行效果相同。容器将软件与其环境分离,并确保软件能够一致地工作,尽管在开发和准备阶段存在差异。

Docker containers that run on Docker Engine:

  • Standard: Docker created the industry standard for containers, so they could be portable anywhere
  • Lightweight: Containers share the machine’s OS system kernel and therefore do not require an OS per application, driving higher server efficiencies and reducing server and licensing costs
  • Secure: Applications are safer in containers and Docker provides the strongest default isolation capabilities in the industry

Docker容器运行在Docker引擎上

稳定:Docker为容器制定了工业标准,所以容器可以在任何地方移植

轻量级:容器共享机器的操作系统内核,因此不需要每一个程序一个操作系统,提高服务器效率,降低服务器和认证消耗

安全:应用程序在容器中更安全,Docker提供业界最强大的默认隔离功能

是不是感觉看完了还是一脸懵逼?(至少我是这样的)那我们浅显一点理解,容器就是一个有一个地集装箱,将我们需要的环境都打包安装好了,程序可以直接在这个环境中运行。当然,我现在还没真正接触到开发,但是有一个痛点,之前喜欢折腾,不断的重装系统,那么每一次重装系统过后最痛不欲生的就是重新配置环境了。各种环境配置到想哭。那么之后我们是不是可以将需要的环境直接变成一个容器,那么之后我们再搞事情的时候,只需要再次安装这个容器就OK了,听起来就很NICE!!!当然为了使大家更加容易理解,这里也有一篇讲的十分好的文章,讲Docker与生活进行联系,十分生动形象。

2.安装Docker

说了那么多,还是得先安装Docker,具体的安装过程可以参考菜鸟教程,自己的实际体验,按照菜鸟教程的安装步骤来,需要下载的东西,推荐大家前往 阿里云镜像来进行下载安装,速度十分快。

3.配置Docker

当然下载好了大家都想直接拿去用,我们可以使用Docker pull hello-world尝试拉取一个镜像,

结果直接被速度给劝退了(其实根本下载不下来,网络错误,特殊方法除外)。所以,我们要做的是,更换Docker的源。

其他系统的请参考菜鸟教程Docker镜像加速,但是里面说的方法对Mac不管用!!!MacOS请使用下面的方法(真的花了好长时间)

百度了好长一段时间,都说是在Daemon里面直接改,但我打开Preferences根本就没见Daemon,也不是修改/etc/docker/daemon.json。(真的找了好长一段时间也没找到)
正确做法是sudo vim ~/.docker/daemon.json,编辑这个文件。

{
	"debug":true,
	"experimental":false,
	"registry-mirrors":[
		"https://registry.docker-cn.com",
		"http://hub-mirror.c.163.com",
		"https://docker.mirrors.ustc.edu.cn"
	]
}

修改完毕后,在终端里面输入docker info,如果正常的话,你应该看到如下图所示的样子
在这里插入图片描述
接下来我们再输入docker pull hello-world就可以正常迅速的拉取镜像了

4.Docker初体验

我们通过docker pull +name拉取下来的称为Image(我们先不管这个image究竟是什么,先往下走着)我们可以使用docker images或者docker image ls来查看本地已经拉取的image,
根据上一步,我们应该可以看到里面有一个hello-world的image,docker run hello-world,应该会显示如下:
在这里插入图片描述
恭喜你已经成功地走出了第一步了!这一步的实质就是产生一个Container(这里也先不用去管Container的概念)

5.Container基本操作

首先,我们尝试拉取一个新的Image,这里我们选择拉取tomcat,docker pull tomcat
在这里插入图片描述

这里就可以使用Docker images来查看已经拉取的image

那么我们想到的肯定就是仿照hello-world直接运行Docker,我们这里也可以试着这么做,

在这里插入图片描述

然后就会发现程序华丽丽地卡在了那里,不要惊慌,这代表着我们成功创建了一个Container,并且正在运行。我们Ctrl+C退出来。那么我们刚刚创建的Container跑到哪里去了呢?我们可以使用Docker ps查看当前正在运行的Container,结果显示为空(不要慌)
在这里插入图片描述

想想我们刚刚的操作是直接从正在运行的容器中退出来了,所以正在运行的Container当然不显示了。我们采用另外一种方法Docker ps -a显示所有容器。

在这里插入图片描述

这就显示是我们刚刚的容器了,当然了,这里的NAMES可能有所区别,因为我们运行的时候也没给Container指定名字,所以这里就会随机生成一个名字。每一次都随机生成一个名字,那天天记来记去的这谁受的了,所以我们创建的时候就应该指定一个名字,还有一个问题我们也不希望每一次运行的时候都要按一次ctrl+c,所以我们还要指定后台运行。尝试如下的命令

docker run -d --name firstTry tomcat

再执行一次docker ps

在这里插入图片描述

我们就成功创建了一个正在运行的Container😆

当然我们不是只是光让这个容器自己跑自己的跑着玩,我们还要想办法对这个容器进行操作,那么首先问题就是我们要如何进入这个容器呢?使用下面的命令了

docker exec -it firstTry bash,并输入ls命令

在这里插入图片描述

我们这就成功进入了容器内部了,熟悉的命令,熟悉的文件夹,是不是意识到,我们似乎进入了一个linux系统?是不是有种似曾相识的感觉。那接下来你就可以随便探索了(此处自己随意造就好)。当我们想要退出这个Container的时候,命令行输入exit即可。

我们再用docker ps查看一下

在这里插入图片描述

我们可以看到,即使我们退出了Container也是一直在后台运行着,是不是很担心耗电(笔记本心累),我们可以输入

docker stop firstTry来手动关闭Container,那么同样的我们也可以使用docker start firstTry来启动我们的Container这里就不做演示了。

剩下的一点就是,我们这些练习用的东西,也就只是玩玩,也没什么大用,总不能一直放在那里占我的磁盘吧,要怎么删除Container呢?

我们可以使用Docker rm -f firstTry来删除容器,当然我们要想一下子删除全部容器就需要用

docker rm -f $(docker ps - a)简单方便快捷。基础的使用部分就到这里了

6.最后一个问题

那么玩了这么多,也见到了image和Container了,现在就要说明它们究竟是什么了(以下是我自己的理解),我们可以用一个系统来类比Container,那么image就是我们安装系统需要的iso文件,我们可以在系统安装后,在系统上面使劲造,随时都可以再次通过iso文件再次创建一个新的系统。并且这个系统安装在你电脑上是这样,安装在另一个电脑上也是这样,并不会受到影响。当然这些只是我个人的一点粗浅的理解,帮助我更好地理解image与Container的一个关系,具体详细大家可以参考这个博客(原博现在好像无法访问),转的一个博客

7.一个小小的总结&&下一次的预告

  • 拉取image:docker pull name
  • 查看image:docker images|docker image ls
  • 创建container:docker run -itd --name name imagename,这里与前面不一样的原因是,有一些image(例如centos)用上面的命令运行出来,也是关闭状态的,使用这个命令一定会得到一个开启状态的Container
  • 删除container:docker rm -f name
  • 查看container:docker ps
  • 查看所有container:docker ps -a
  • 运行Container:docker exec -it containername bash
  • 删除全部Container:docker rm -f $(docker ps -a)

下一次会写:

1.我们使劲造完后的Container如何分享给其他人呢?

2.如何让别人清晰的知道我的Container做了哪些工作呢?

3.Container的端口,网络连接状态的设置

感谢你阅读到最后,如果觉得我写的还有点意思,对你还有点帮助,不如留下一个小小的赞,并关注一下一篇文章😆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值