Docker基本操作

目录

1、初识Docker

1.1、什么是Docker

1.2.Docker和虚拟机的区别

1.3.Docker架构

2、Docker的基本操作

2.1.镜像操作

2.1.1、镜像命令

2.1.2、案例:从DockerHub中拉取一个nginx镜像并查看 ,保存到本地再导入

 2.2.容器操作

2.2.1.容器相关命令

2.2.2.案例-创建并运行一个容器

2.2.3、进入Nginx容器,修改HTML文件内容,添加“rk学Docker”

2.2.4、删除容器

2.2.5、小结


1、初识Docker

1.1、什么是Docker

微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。

  • 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。

  • 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题

Dcoeker解决以下问题:

        1、应用部署的环境问题 2、依赖兼容性问题 3、操作系统环境差异

Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

  • Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像

  • Docker应用运行在容器中,使用沙箱机制,相互隔离

Docker如何解决开发、测试、生产环境有差异的问题?

  • Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行

Docker是一个快速交付应用、运行应用的技术,具备下列优势:

  • 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统

  • 运行时利用沙箱机制形成隔离容器,各个应用互不干扰

  • 启动、移除都可以通过一行命令完成,方便快捷

1.2.Docker和虚拟机的区别

        虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。

        Docker仅仅是封装函数库,并没有模拟完整的操作系统

Docker和虚拟机的差异:

  • docker是一个系统进程;虚拟机是在操作系统中的操作系统

  • docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

1.3.Docker架构

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

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

Docker是一个CS架构的程序,由两部分组成:

  • 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等

  • 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。

Docker基本操作_第1张图片

总结:

镜像:

  • 将应用程序及其依赖、环境、配置打包在一起

容器:

  • 镜像运行起来就是容器,一个镜像可以运行多个容器

Docker结构:

  • 服务端:接收命令或远程请求,操作镜像或容器

  • 客户端:发送命令或者请求到Docker服务端

DockerHub:

  • 一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry

2、Docker的基本操作

2.1.镜像操作

首先来看下镜像的名称组成:

  • 镜名称一般分两部分组成:[repository]:[tag]。

  • 在没有指定tag时,默认是latest,代表最新版本的镜像

Docker基本操作_第2张图片

这里的mysql就是repository,5.7就是tag,合一起就是镜像名称,代表5.7版本的MySQL镜像。

2.1.1、镜像命令

常见的镜像操作命令如图:

Docker基本操作_第3张图片

2.1.2、案例:从DockerHub中拉取一个nginx镜像并查看 ,保存到本地再导入

        1、首先去镜像仓库搜索nginx镜像,比如DockerHub:

Docker基本操作_第4张图片

        2、根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx

        这里没有指定版本,所以默认下载的就是最新版本的镜像

         3、拉取完成后再次查看docker中的镜像

        4、使用docker save导出镜像到磁盘  

               命令格式:docker save -o [保存的目标文件名称] [镜像名称]

Docker基本操作_第5张图片

        5、删除docker中的nginx镜像,然后查看

        docker rmi nginx:latest 

Docker基本操作_第6张图片

        6、加载本地文件到docker

        docker load -i nginx.tar

Docker基本操作_第7张图片

 2.2.容器操作

2.2.1.容器相关命令

Docker基本操作_第8张图片器保护三个状态:

  • 运行:进程正常运行

  • 暂停:进程暂停,CPU不再运行,并不释放内存

  • 停止:进程终止,回收进程占用的内存、CPU等资源

其中:

  • docker run:创建并运行一个容器,处于运行状态

  • docker pause:让一个运行的容器暂停

  • docker unpause:让一个容器从暂停状态恢复运行

  • docker stop:停止一个运行的容器

  • docker start:让一个停止的容器再次运行

  • docker rm:删除一个容器  

2.2.2.案例-创建并运行一个容器

        1、创建并运行nginx容器

         docker run --name mnk -p 80:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器

  • --name : 给容器起一个名字,比如叫做mn

  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

  • -d:后台运行容器

  • nginx:镜像名称,例如nginx

这里的-p参数,是将容器端口映射到宿主机端口。

默认情况下,容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的nginx。

现在,将容器的80与宿主机的80关联起来,当我们访问宿主机的80端口时,就会被映射到容器的80,这样就能访问到nginx了

Docker基本操作_第9张图片

创建并查看容器:

访问容器:

Docker基本操作_第10张图片

2.2.3、进入Nginx容器,修改HTML文件内容,添加“rk学Docker”

        1、进入容器。进入我们刚刚创建的nginx容器的命令为:

                docker exec -it mnk bash

命令解读:

  • docker exec :进入容器内部,执行一个命令

  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

  • mnk :要进入的容器的名称

  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

        2、进入nginx的HTML所在目录 /usr/share/nginx/html

        容器内部会模拟一个独立的Linux文件系统,看起来如同一个linux服务器一样:

         进入 /usr/share/nginx/html,查看目录:

         使用如下命令进行修改index.htlml

sed -i -e 's#Welcome to nginx#rk学Docker#g' -e 's###g' index.html

修改完成后:再次访问容器

Docker基本操作_第11张图片

2.2.4、删除容器

 使用命令:docker rm -f mnk 删除

Docker基本操作_第12张图片

2.2.5、小结

docker run命令的常见参数有哪些?

  • --name:指定容器名称

  • -p:指定端口映射

  • -d:让容器后台运行

查看容器日志的命令:

  • docker logs

  • 添加 -f 参数可以持续查看日志

查看容器状态:

  • docker ps

  • docker ps -a 查看所有容器,包括已经停止的

         

你可能感兴趣的:(微服务,docker,容器,运维)