Docker

目录

用Docker的背景

Docker作用

Docker是什么

安装Docker

Docker镜像的操作

拉取镜像

查看镜像

删除镜像

保存镜像为一个压缩包

加载压缩包为镜像

Docker容器的操作

容器保护三个状态:

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

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

Docker数据卷

创建和查看数据卷

挂载数据卷(可以是文件也可以是文件夹)

用Docker的背景

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题,比如依赖关系复杂,容易出现兼容性问题。例如一个项目中,部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。

Docker作用

Docker为了解决依赖的兼容问题的,采用了两个手段

  • 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包

  • 将每个应用放到一个隔离容器去运行,避免互相干扰

Docker是什么

Docker是一个创建容器的工具。他创建的容器可以在各平台上稳定的运行。

镜像:

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

容器:

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

DockerHub:

  • 一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry。在上面可以下载各种需要的软件镜像,例如nginx、redis等。

安装Docker

  • yum install -y docker-ce:安装docker,docker-ce为社区免费版本。
  • systemctl start docker:启动Docker
    • systemctl stop firewalld:启动docker之前需要关闭防火墙。
  • systemctl stop docker  # 停止docker服务
  • systemctl restart docker  # 重启docker服务

Docker镜像的操作

拉取镜像

  • 在拉取镜像之前,先去镜像仓库中搜索镜像,仓库地址:https://hub.docker.com/
  • docker pull nginx(镜像名),拉取镜像,默认是最新的分支版本。

查看镜像

  • docker images 镜像名:查看镜像

删除镜像

  • docker rmi 镜像名:删除镜像

保存镜像为一个压缩包

  • docker save -o nginx.tar nginx:latest
    • docker save -o [保存的目标文件名称] [镜像名称]

加载压缩包为镜像

  • docker load -i nginx.tar

Docker容器的操作

容器保护三个状态:

  • 运行:进程正常运行

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

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

其中:

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

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

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

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

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

  • docker rm:删除一个容器

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

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

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

命令解读:

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

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

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

  • -d:后台运行容器

  • nginx:镜像名称,例如nginx

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

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

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

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

需求:进入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

     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

Docker数据卷

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。 一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了。

数据卷操作的基本语法如下:

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume

  • inspect 显示一个或多个volume的信息

  • ls 列出所有的volume

  • prune 删除未使用的volume

  • rm 删除一个或多个指定的volume

创建和查看数据卷

需求:创建一个数据卷,并查看数据卷在宿主机的目录位置

① 创建数据卷

docker volume create html

② 查看所有数据

docker volume ls

③ 查看数据卷详细信息卷

docker volume inspect html

挂载数据卷(可以是文件也可以是文件夹)

我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:

docker run \
  --name mn \
  -v html:/root/html \
  -p 8080:80
  nginx \

这里的-v就是挂载数据卷的命令:

  • -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值