Docker入门

Docker的安装请见文章:https://blog.csdn.net/qq_43908235/article/details/124135183
【本文目录】
一、初识docker
二、docker的基本操作

一、初识docker

大型项目存在的问题

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:

  • 依赖关系复杂,容易出现兼容性问题
  • 开发、测试、生产环境有差异

Docker解决依赖兼容问题

而Docker确巧妙的解决了这些问题,Docker是如何实现的呢?
Docker为了解决依赖的兼容问题的,采用了两个手段:

  • 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
  • 将每个应用放到一个隔离容器去运行,避免互相干扰

这样打包好的应用包中,既包含应用本身,也保护应用所需要的Libs、Deps,无需再操作系统上安装这些,自然就不存在不同应用之间的兼容问题了。

虽然解决了不同应用的兼容问题,但是开发、测试等环境会存在差异,操作系统版本也会有差异,怎么解决这些问题呢?

Docker解决操作系统环境差异

在这里插入图片描述
应用于计算机交互的流程如下:
1)应用调用操作系统应用(函数库),实现各种功能
2)系统函数库是对内核指令集的封装,会调用内核指令
3)内核指令操作计算机硬件
Ubuntu和CentOSpringBoot都是基于Linux内核,无非是系统应用不同,提供的函数库有差异:

Docker如何解决不同系统环境的问题?

  • Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
  • Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行
    在这里插入图片描述

docker和虚拟机对比

在这里插入图片描述
【Docker的优势】
在这里插入图片描述

镜像与容器

Docker中有几个重要的概念:
镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。一切应用最终都是代码组成,都是硬盘中的一个个的字节形成的文件。只有运行时,才会加载到内存,形成进程。

在这里插入图片描述
【总结】
在这里插入图片描述
DockerHub地址: https://hub.docker.com/

二、docker基本操作

镜像组成

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

  • 镜名称一般分两部分组成:[repository]:[tag]。
  • 在没有指定tag时,默认是latest,代表最新版本的镜像
    在这里插入图片描述
    这里的mysql就是repository,5.7就是tag,合一起就是镜像名称,代表5.7版本的MySQL镜像。

镜像常用命令

可以通过 docker --help 命令查看命令
在这里插入图片描述

首先启动docker

systemctl start docker
1、拉取镜像

这里以拉取nginx为例, 其他镜像操作与之相同。

docker pull nginx
2、查看镜像
docker images

在这里插入图片描述

3、导出镜像

如果不熟悉save的用法

docker save --help

在这里插入图片描述
把我们刚刚拉取的镜像进行导出

docker save -o nginx.tar nginx:latest

解释说明:
nginx.tar为输出的名称
nginx:latest为要输出的镜像名称
在这里插入图片描述

4、删除镜像
docker rmi nginx:latest

在这里插入图片描述

5、导入镜像

查看如何使用

docker load --help

在这里插入图片描述

docker load -i nginx.tar

解释:
-i 打印日志
-q不会打印日志
nginx.tar 为要导入的镜像名称
在这里插入图片描述

6、docker命令使用图解

在这里插入图片描述

容器相关命令

创建并运行一个nginx容器

可参考dockerhub的文档:https://hub.docker.com/
在dockerhub搜索nginx。
在这里插入图片描述
进入。
在这里插入图片描述

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

【参数详解】
docker run : 运行一个容器
–name:给容器起一个名称
-p 80:80 : 端口映射, 将宿主机端口与容器端口映射, 左边宿主机,右边容器名称
-d: 后台运行
nginx: 镜像名称
在这里插入图片描述
这里的容器名称设置为ng, docker为其生成了一个唯一标识。
查看所有运行的容器以及状态。

docker ps

在这里插入图片描述
访问浏览器,可以访问, 说明服务已经启动。
在这里插入图片描述

查看日志docker logs 容器名称

docker logs 

在这里插入图片描述
【参数】
-f 持续更新日志
在这里插入图片描述
Docker容器命令图解
在这里插入图片描述

进入容器, 修改文件

需求:进入Nginx容器,修改HTML文件内容,添加“hello docker”
提示:进入容器要用到docker exec命令。

进入容器命令:

docker exec -it ng bash

docker exec : 进入到容器内部需要执行的一个命令
-it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
ng:要进入的容器的名称
bash:进入容器后执行的命令,bash是一个linux终端交互命令

ls命令显示目录文件
在这里插入图片描述
此时,容器内部会模拟一个独立的Linux文件系统,看起来如同一个linux服务器一样,我们可以向平时那样按需求修改文件即可。
nginx的环境、配置、运行文件全部都在这个文件系统中,包括我们要修改的html文件。查看DockerHub网站中的nginx页面,可以知道nginx的html目录位置在/usr/share/nginx/html
进入该目录, 使用ls命令
在这里插入图片描述
容器内没有vi命令,无法直接修改,我们用下面的命令来修改:

sed -i -e 's#Welcome to nginx#hello docker#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html

再次访问浏览器, 即可查看已经修改的内容
退出容器

exit

停掉容器

docker stop ng(容器名称)

查看运行的容器

docker ps

查看所有容器

docker ps -a

删除容器

docker rm ng(容器名称)

如果该容器正在运行, 则不可以删除,我们通过命令查看, 可通过-f进行强制删除
在这里插入图片描述

docker rm -f ng

【总结】
在这里插入图片描述

练习

练习1
在这里插入图片描述

参考DockerHub:https://hub.docker.com/_/redis
(1)拉取
(2)创建容器
创建时,选择这个持久化存储的。
在这里插入图片描述

docker run --name  myredis -p 6379:6379 -d redis redis-server  --save 60 1 --loglevel warning

(3)查看运行的容器

docker ps

在这里插入图片描述
(4)测试
在这里插入图片描述
练习2
在这里插入图片描述
进入容器

docker exec -it myredis bash

连接到redis, 存入num=666
在这里插入图片描述
也可直接进入

docker exec -it mr redis-cli

在这里插入图片描述

数据卷

在这里插入图片描述

在这里插入图片描述

查看数据卷相关命令
在这里插入图片描述

Commands:
  create     创建一个数据卷
  inspect    显示一个或多个数据卷的详细信息
  ls         显示所有的数据卷
  prune      删除本地所有未使用的数据卷
  rm         删除一个或多个数据卷

创建一个名为html的数据卷

docker volume create html

显示html的详细信息

docker volume inspect html

在这里插入图片描述

删除html数据卷
docker volume rm html 或者 docker volume prune
在这里插入图片描述

挂载数据卷

在这里插入图片描述

练习
在这里插入图片描述

(1)通过-v参数挂载
-v 数据卷名称:要进行挂载的目录

docker run --name mynginx -v html:/usr/share/nginx/html -p 80:80 -d nginx

(2)使用inspect 命令查看

docker volume inspect html

在这里插入图片描述
数据卷如果不存在则自动创建。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小小码农z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值