当前位置: 首页 > news >正文

docker入门

命令

镜像命令

  • 镜像信息 docker images
    在这里插入图片描述
    repository 镜像名字
    tag 镜像标签
    image id 镜像id
    create 镜像创建时间
    size 镜像大小
    -a 显示所有镜像
    -q 只现实镜像id
  • 镜像搜索 docker search xxx
  • 镜像下载 docker pull xxx:版本
  • 镜像删除 docker rmi -f $(docker images -q mysql)

容器命令

  • 运行 docker run [可选参数] xxx
    • d 后台方式运行
    • it 交互式运行,进入容器内查看命令
    • p 指定容器端口
    • --name="Name" 设置容器名字,用来区分容器
  • 从容器中返回主机 exit(容器停止退出)
  • 容器不停止退出(CTRL+P+Q)
  • 列出所有运行的容器 docker ps(同样支持-a -q)
  • 移除容器 docker rm (-f 强制删除)
  • 启动重启停止杀死 docker start/restart/stop/kill 容器id

常见命令

如果前台没有服务,那么后台自动关闭、

  • 查看进程 docker top 容器id
  • 进入正在运行的容器
  • docker exec -it ceebc81e4789 /bin/bash #进入容器后开启一个新的终端
  • docker attach #不会启动新的进程
  • 将容器中的文件复制到主机中
    docker cp 容器id:容器中的文件 主机中的目录

实例:安装docker

docker pull nginx
# -d后台运行
# --name 为容器起名
# -p  外端口和内端口
# 外端口是宿主机端口
# 内端口是容器中的端口
docker run -d --name nginx01 -p 1234:80 nginx #注意内端口是80,不然不能访问

提交镜像(commit)

容器 --> 镜像

# -a 创建者
# -m 提交信息
 docker commit -a "chen" -m "add" 容器名字或者id 提交的镜像名

容器数据卷

将容器中的文件和宿主的文件双向绑定,只需要修改外部文件就可以修改容器中的文件,无需进入容器

# -v 外部目录:容器中目录 (双向绑定)【卷挂载】
# -e 配置环境 MYSQL_ROOT_PASSWORD=密码 (设置mysql密码)
 docker run --name mysql01 -d -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql

如果没有指明具体路径,默认在 /var/lib/docker/volumes

  • 具名挂载-v 卷名:容器内路径
  • 匿名挂在-v 容器内路径【不推荐】
  • ro/rw 只读(容器只读)/ 读写
    在这里插入图片描述

Dockerfile

就是命令脚本,通过Dockerfile来构建镜像

  • FROM 指定基础镜像
  • RUN 构建镜像时执行的命令 例RUN yum -y install vim
  • ADD 将本地文件加载到容器中
  • CMD 文件镜像构建完成后执行CMD ["ls","-a"]
  • ENV 设置环境变量
  • EXPOSE 暴露端口
  • WORKDIR 工作目录,构建时的目录都在这个目录下进行
  • CMD和ENTRYPOINT
    cmd 追加命令会替换cmd
    entrypoint 追加命令会直接追加在cmd后面
  • 构建命令
# add的本地文件在url中
# t tag
# Dockerfile 的具体路径 默认PATH/Dockerfile
docker build -f 指定目录 -t 名字:版本号 创建的位置 url

Docker网络

  • docker0 作为路由
    在这里插入图片描述
    每产生一个容器,就会生成一对网卡 负责容器和docker0互联,容器之间的连接时通过docker0之间的桥接实现
  • –自定义网络
    解决docker0无法ping名字的问题
# --subnet 设置子网
# --gatway 设置网关
docker network create --driver bridge --subnet 180.1.0.0/16 --gateway 180.1.0.1 网络名字
# 启动时使用自定义网络
# -P 随机选择一个端口号
# --net 使用特定网络
docker run -d -P --name tom03 --net mynet tomcat
  • 解决两个网络的容器相互连接问题
    通过给一个容器多个ip实现 docker network connect 网络名 容器名,这样网络会给容器分配一个ip,容器就可以来和这个网络建立连接

springboot打包docker

  1. 利用maven打jar包 mvn package
  2. 建立Dockerfile
FROM openjdk:8
COPY *.jar /app.jar
CMD ["--server.port=8000"]
EXPOSE 8000
ENTRYPOINT ["java","-jar","/app.jar"]

注意:

  • java:8拉取失败,最后使用了openjdk:8,
  • Dockerfile中设置的端口号需要和springboot中的配置文件一致
  1. docker build
  2. docker run

测试

  • curl localhost:port

相关文章:

  • 【NodeJs-5天学习】第四天存储篇① ——安装使用mysql 8.0
  • 【Verilog 流水线设计】以全加器为例阐述流水线设计的影响
  • spring boot 使用Mybatis-plus的查询方法
  • nginx中root和alias的区别
  • pytorch深度学习训练模板
  • 【Qt+FFMPEG】 - 封装 解码音视频 线程
  • Arduino框架下最便宜的开发芯片-CH552初探
  • Java高并发编程实战5,异步注解@Async自定义线程池
  • 前端进阶——ES6
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • 【Python+大数据】第一天:安装VMware及Centos,配置虚拟机网络,学习Linux命令。研究生开学10天的感受。
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • JAVA代码操作HDFS
  • web前端开发基础教程一
  • 原子尺度仿真对材料设计效率的提升,是未来材料研发的关键核心竞争力
  • Brief introduction of how to 'Call, Apply and Bind'
  • css布局,左右固定中间自适应实现
  • CSS实用技巧
  • Java多态
  • js作用域和this的理解
  • linux安装openssl、swoole等扩展的具体步骤
  • Mysql5.6主从复制
  • socket.io+express实现聊天室的思考(三)
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • ubuntu 下nginx安装 并支持https协议
  • webgl (原生)基础入门指南【一】
  • 阿里云应用高可用服务公测发布
  • 少走弯路,给Java 1~5 年程序员的建议
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 最近的计划
  • #、%和$符号在OGNL表达式中经常出现
  • #单片机(TB6600驱动42步进电机)
  • $.ajax()方法详解
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (2)nginx 安装、启停
  • (4)logging(日志模块)
  • (二)linux使用docker容器运行mysql
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (过滤器)Filter和(监听器)listener
  • (三)elasticsearch 源码之启动流程分析
  • (已解决)什么是vue导航守卫
  • .NET BackgroundWorker
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net 代码性能 - (1)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .netcore 获取appsettings
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • /var/spool/postfix/maildrop 下有大量文件
  • @vue/cli 3.x+引入jQuery
  • [1204 寻找子串位置] 解题报告
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...