Docker基础与常用命令

一、概念

Docker是什么:

  • linux容器的封装

解决微服务的部署问题:

  • 微服务的拆分会给部署带来了很大的麻烦。
    • 组件部署冲突,兼容性。

    • 多台服务重复部署环境不一致

如何解决:

  • 依赖兼容性
    • 打包函数库,依赖,配置
    • 每个应用沙箱隔离,独立运行
  • 环境差异
    • 系统程序和所要调用的系统函数库一起打包(完整运行环境),仅依赖Linux内核
    • 直接调用Linux内核来运行
  • 启动和运行都使用命令来完成

和虚拟机的区别:

  • 虚拟机:
    • 模拟硬件
    • 运行操作系统
    • 体积大,?G
    • 性能较差,启动慢
  • Docker
    • 软件虚拟,封装函数库
    • 没有模拟操作系统
    • 体积小,MB
    • 秒级启动

Docker架构

  • 镜像
    • 将应用程序及其所需要的依赖、函数库、环境、配置等文件打包在一起
  • 容器
    • 镜像运行起来形成的进程,Docker会给容器做隔离
  • DockerHub

    • CS 架构
      • 服务端:守护进行,处理指令,管理镜像、容器等
      • 客户端:通过命令向服务端发送指令。
    • Docker Registry
      • 镜像托管平台,
      • 私有,公有(阿里等)

二、基本操作

镜像操作

拉取、查看镜像:

  • 命令:docker pull nginx,DockerHub拉取nginx镜像,
  • 命令:docker images,查看拉取到的镜像

保存镜像:

  • 命令:docker xx --help,查看docker save和docker load的语法
  • 命令:docker save -o [保存的目标文件名称] [镜像名称]
  • 命令:docker save -o nginx.tar nginx:latest,docker save导出镜像到磁盘

导入镜像:

  • 命令:docker rmi nginx:latest,删除本地的nginx镜像
  • 命令:docker load -i nginx.tar,加载本地文件

拉取步骤:

  1. 去DockerHub搜索Redis镜像
  2. 查看Redis镜像的名称和版本
  3. 利用docker pull命令拉取镜像
  4. 利用docker save命令将 redis:latest打包为一个redis.tar包
  5. 利用docker rmi 删除本地的redis:latest
  6. 利用docker load 重新加载 redis.tar文件

容器操作

常用命令:

  • docker run:创建并运行一个容器,处于运行状态
  • docker pause:让一个运行的容器暂停
  • docker unpause:让一个容器从暂停状态恢复运行
  • docker stop:停止一个运行的容器
  • docker start:让一个停止的容器再次运行
  • docker rm:删除一个容器

创建并运行

  • 命令:docker run --name name -p 80:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器
  • --name : 指定容器名称
  • -p :指定端口映射
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx

进入容器,修改文件

  • 命令:docker exec -it mn bash

命令解读:

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

进入目录:

  • cd /usr/share/nginx/html

修改index.html的内容:

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

docker run命令的常见参数有哪些?
- --name:指定容器名称
- -p:指定端口映射
- -d:让容器后台运行

查看容器日志的命令:
- docker logs
- 添加 -f 参数可以持续查看日志

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

数据卷(容器数据管理)

数据卷(volume):

  • 一个虚拟目录,指向宿主机文件系统中的某个目录。
  • 操作虚拟目录等同于操作主机目录

数据卷操作:

基本语法:

docker volume [COMMAND],数据卷操作

command来确定下一步的操作:

  • create 创建一个volume
  • inspect 显示一个或多个volume的信息,查看挂载目录
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume

常用命令

  • docker volume create:创建数据卷
  • docker volume ls:查看所有数据卷
  • docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置
  • docker volume rm:删除指定数据卷
  • docker volume prune:删除所有未使用的数据卷

挂载数据卷

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

手动挂载:

如果宿主机目录不存在docker会自动创建

mysql的数据挂载

docker run \

--name mysql \

-e MYSQL_ROOT_PASSWORD=root \

-p 3306:3306 \

-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \

-v /tmp/mysql/data:/var/lib/mysql \

-d \

mysql:5.7.25

三、DockerFile自定义镜像

结构

镜像

  • 镜像就是将应用程序、系统函数库、环境、配置、依赖打包而成。
  • 镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。
  • 构建镜像,其实就是实现上述打包的过程。

分层结构-Layer

实现复用

  • Baselmage层:包含基本的系统函数库、环境变量、文件系统
  • Entrypoint:入口,是镜像中应用启动的命令
  • 其它:在Baselmage基础上添加依赖、安装程序、配置等

常见指令

运行

镜像构建后应该先运行

  • docker run --name web -p 8090:8090 -d javaweb:1.0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JIE结弦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值