Docker基本操作、相关命令、数据卷挂载、自定义镜像及Docker镜像结构

11 篇文章 0 订阅
9 篇文章 0 订阅

Docker基本操作

镜像相关命令

  • 镜像名称一般分两部分组成:[repository]:[tag] -->[镜像名称]:[版本]

    • docker pull 镜像名称 (拉取镜像)

    • docker images [名称] (查看镜像){名称可加可不加}

    • docker save -o nginx.tar nginx:latest (保存镜像)

    • docker load -i nginx.tar (读取镜像)

    • docker rmi -i/-p redis:latest(-i有日志输出,-p没有日志输出)

容器相关的命令

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

    docker run --name containerName -p 80:80 -d nginx
    
    • docker run:创建并运行一个容器
    • -name:给容器起一个名字,比如叫做cyttest (全局唯一)
    • -p:将宿主机端口与容器端口映射,冒号左侧是宿主机端口(可以随意,只要未被占用),右侧是容器端口
    • -d: 后台运行容器
    • nginx : 镜像名称
    docker run --name cyttestredis -p 6379:6379 -d redis redis-server --appendonly yes
    
    • 创建并运行一个redis容器,并支持数据持久化
  • docker pause (运行 --> 暂停)

  • docker unpause (暂停 --> 运行)

  • docker stop ( 运行 --> 停止)

    docker stop cyttest
    
  • docker start (停止 --> 运行)

  • docker ps (查看所有运行的docker容器及其状态)

    docker ps -a
    
    • -a : 可以查看挂掉的容器
  • docker logs (查看容器运行日志)

    docker logs cyttest
    docker logs -f cyttest
    
    • docker logs 后面添加容器名称
    • -f: 持续跟踪日志
  • docker exec (进入容器执行命令)

    docker exec -it cyttest bash
    
    • docker exec:进入容器内部,执行一个命令
    • -t:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
    • cyttest:要进入的容器的名称
    • bash:进入容器后执行的命令,bash是一个linux:终端交互命令
    • exec虽然可以修改文件,但并不推荐
  • docker rm (删除指定容器)

    docker rm -f
    
    • -f : 加-f可以强制删除运行中的容器

数据卷:

容器与数据耦合问题:

  • 不便于修改
  • 数据不可复用
  • 升级维护困难

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

  • 数据卷的基本操作命令:

    docker volume [COMMAND]
    
    • docker volume 命令是数据卷操作,依据命令后紧跟的command来确定下一步的操作
    • create : 创建一个volume
    • inspect 显示一个或多个volume的信息
    • ls 列出所有的volume
    • prune 删除未使用的volume
    • rm 删除指定的一个或多个volume
  • 挂载数据卷

    • 基于数据卷挂载(示例nginx)

    • 在创建容器时,可以通过 -v 参数来挂载一个数据卷到容器某个目录

      docker run --name mn -p 80:80 -v hml:/root/html -d nginx
      
    • docker run:就是创建并运行容器

      -name mn:给容器起个名字叫mn

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

      -p8080:80:把宿主机的8080端口映射到容器内的80端口

      nginx:镜像名称

    • 基于宿主机文件挂载(示例mysql)

    • 创建mysql的配置文件目录和数据目录

      mkdir -p mysql/data
      mkdir -p mysql/conf
      
    • 在创建容器时通过-v参数分别挂载配置文件目录和数据目录

      docker run --name cytdockermysql -e MYSQL_ROOT_PASSWORD=123 -p 9906:3306 -v /mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /mysql/data:/var/lib/mysql -d mysql:5.7.25
      
    • docker ps验证是否完成创建和启动

自定义镜像:

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。

镜像结构:

入口(Entrypoint): 镜像运行入口,一般是程序启动的脚本和参数

层(Layer)在Baselmage基础上添加安装包、依赖、配置等,每次操作都形成新的一层。

基础镜像(Baselmage):应用依赖的系统函数库、环境、配置文件等

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每
一个指令都会形成一层Layer。

指令说明示例
FROM指定基础镜像FROM centos:6
ENV设置环境变量,可在后面指令使用ENV key value
COPY拷贝本地文件到镜像的指定目录COPY ./mysql-5.7.rpm /tmp
RUN执行Linux的shell命令,一般是安装过程的命令RUN yum install gcc
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
ENTRYPOINT镜像中应用的启动命令,容器运行时调用ENTRYPOINT java -jar xx.jar
  • 生成测试

    • 创建一个文件夹用来放置文件

       mkdir docker-demo
      
    • 上传需要构建的文件并在文件夹内部运行构建代码

      docker build -t javawebtest:1.0 .
      
      • javawebtest:1.0 :构建好之后的镜像名称:版本号
      • . :相对Dockerfile的位置
    • 查看是否构建成功

      docker images
      
    • 创建并运行docker容器

      docker run --name webtest -p 8090:8090 -d javawebtest:1.0
      
    • 测试是否成功

DockerCompose

  • Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!
  • Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值