Docker安装

本文详细介绍了Docker如何解决不同环境下的版本依赖和兼容性问题,对比了与虚拟机的区别,包括性能、大小和启动速度。还涵盖了Docker的安装、镜像操作(拉取、查看、导出和导入)、容器操作(创建、运行、暂停、停止和删除),以及数据卷的概念和使用。
摘要由CSDN通过智能技术生成

1.Docker解决的问题

不同环境:   
    生产环境,  测试环境,  开发环境 
​
​
解决不同环境下,版本依赖的问题,不兼容的问题.
​
解决: 环境隔离(沙箱环境)

1.1. Docker和虚拟机的区别

性能: 接近原生,

大小: 以MB为计算

启动速度: 快

Docker是一个软件, 虚拟机是一个系统, 启动软件的速度肯定比系统快

Docker可以让一个应用在任何操作系统中非常方便的运行。而以前我们接触的虚拟机,也能在一个操作系统中,运行另外一个操作系统,保护系统中的任何应用。 mysql+lib+dev 虚拟机软件 创建虚拟机 win7 win10 centos

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

Docker和虚拟机的差异:

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

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

1.2.Docker安装

命令:

社区CE , 专业版本,

安装流程:

  1. 安装yum工具

      

  1. 卸载电脑上已有的docker

  2. 配置docker的国内镜像库(为了下载镜像更快)

  3. 安装docker

  4. 关闭防火墙 systemctl stop firewalld

  5. 禁止开机启动关闭 systemctl disable firewalld

  6. 启动docker命令 sytemctl start docker

  7. 查看docker启动状态 sysatemctl status docker

  8. 停止docker systemctl stop docker

2.1.2.镜像命令---拉取、查看镜像

01. 从DockerHub中拉取一个nginx镜像并查看

命令--- 如:docker pull nginx

02. 命令:docker images 查看拉取到的镜像

03. docker xx --help命令查看docker save和docker load的语法 命令: docker save --help

命令格式:

docker save -o [保存的目标文件名称] [镜像名称]

04.使用docker save导出镜像到磁盘

运行命令 --- 如:

docker save -o nginx.tar nginx:latest

使用docker load加载镜像时, 先删除本地的nginx镜像: docker rmi nginx:latest

然后再运行命令,加载本地文件: docker load -i nginx.tar

2.2.容器操作

2.2.1.容器相关命令

容器保护三个状态:

  • 运行:进程正常运行

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

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

其中:

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

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

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

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

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

  • docker rm:删除一个容器

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

创建并运行nginx容器的命令:

docker run --name containerName -p 81:80 -d nginx

命令解读:

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

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

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

  • -d:后台运行容器

  • nginx:镜像名称,例如nginx

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

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

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

2.2.3.案例-进入容器,修改文件

需求:进入Nginx容器,修改HTML文件内容,添加“传智教育欢迎您”

提示:进入容器要用到docker exec命令。

步骤

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

docker exec -it mn bash

命令解读:

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

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

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

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

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

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

nginx的环境、配置、运行文件全部都在这个文件系统中,包括我们要修改的html文件。

查看DockerHub网站中的nginx页面,可以知道nginx的html目录位置在/usr/share/nginx/html

我们执行命令,进入该目录:

cd /usr/share/nginx/html

查看目录下文件:

3)修改index.html的内容

容器内没有vi命令,无法直接修改,我们用下面的命令来修改:

sed -i -e 's#Welcome to nginx#北京欢迎您#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html

在浏览器访问自己的虚拟机地址,例如我的是:http://192.168.150.101,即可看到结果.

2.2.4.小结

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

  • --name:指定容器名称

  • -p:指定端口映射

  • -d:让容器后台运行

查看容器日志的命令:

  • docker logs

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

查看容器状态:

  • docker ps

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

2.3.数据卷(容器数据管理)

2.3.1.什么是数据卷

  • 数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录

  • 一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。

    这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了

数据卷的作用:

  • 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

数据卷操作:

  • docker volume create:创建数据卷

  • docker volume ls:查看所有数据卷

  • docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置

  • docker volume rm:删除指定数据卷

  • docker volume prune:删除所有未使用的数据卷

2.3.2.小结

docker run的命令中通过 -v 参数挂载文件或目录到容器中:

  • -v volume名称:容器内目录

  • -v 宿主机文件:容器内文

  • -v 宿主机目录:容器内目录

数据卷挂载与目录直接挂载的

  • 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找

  • 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值