【Docker】学习笔记

1. docker基本操作

  • 镜像搜索
// 直接搜索镜像资源
docker search mysql
// 搜索过滤
docker search --filter "is-official=true"  mysql // 官方发布镜像
  • 拉取镜像
docker pull mysql
  • 查看本地镜像
docker images
  • 删除本地镜像
docker rmi mysql
// 强制删除镜像
docker rmi -f mysql
  • 保存加载镜像
docker save 镜像id > 文件名.tar
// example:
docker save 8da80fe49fcf>./mysql.tar

docker load < 文件名.tar
// example:
docker load < mysql.tar

// 加载的镜像会没有名称和TAG,需要重命名
docker tag [镜像id] [新镜像名称]:[新镜像标签]
  • 创建容器
docker create --name=mysqlContainer mysql
  • 创建并运行容器
docker run -itd --name=mysqlContainer mysql
  • 查看容器信息
// 查看运行中的容器信息
docker ps

// 查看包括已停止运行的所有容器的信息
docker ps -a
  • 停止运行容器
docker stop mysqlContainer
  • 重新运行容器
docker restart mysqlContainer
  • 删除容器
docker rm mysqlContainer
  • 进入退出容器环境:
docker-compose exec -it [容器的name或ID] /bin/bash

// 有时候镜像比较精简,没有bash,使用下面的命令
docker-compose exec -it [容器的name或ID] /bin/sh

// 退出容器终端界面
exit
  • 提交容器修改
docker commit -m "do something" mysqlContainer my_mysql
  • 导入导出容器
// 导出容器为镜像包
docker export mysqlContainer > mysql.tar
// 将镜像tar包导入并命名
docker import mysql.tar mysqlimage

2. docker开发模式

Docker开发模式,然后把代码挂载到容器。
在开发和测试环境中,推荐使用- v 共享文件夹来存储开发人员的
程序代码,避免频繁打包操作。

  • 端口映射
// 将宿主机的33060端口与docker的3306端口进行映射
docker run -itd --name mysqlContainer -p 33060:3306 mysql
  • 文件挂载
// 将宿主机下指定目录与docker容器目录进行关联,":"前是宿主机目录,后面是容器内目录
docker run -itd --name mysqlContainer -v /test_mysql:/usr/mysql_folder
  • 文件拷贝
// 将宿主机下的A.tar 拷贝到容器的/usr/mysql_folder/目录下
docker cp /test_mysql/A.tar mysqlContainer:/usr/mysql_folder/

3. dockerfile

Dockerfile 是一个文本文件,其中包含我们需要运行以构建 Docker 镜像的所有命令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。Docker 使用 Dockerfile 中的指令自动构建镜像。我们可以 docker build 用来创建按顺序执行多个命令行指令的自动构建。
FROM :使用 FROM 为后续的指令建立基础映像。在所有有效的 Dockerfile 中, FROM 是第一条指令。
LABEL: LABEL 指令用于组织项目映像,模块,许可等。在自动化布署方面 LABEL 也有很大用途。在 LABEL 中指定一组键值对,可用于程序化配置或布署 Docker 。
RUN: RUN 指令可在映像当前层执行任何命令并创建一个新层,用于在映像层中添加功能层,也许最来的层会依赖它。
CMD: 使用 CMD 指令为执行的容器提供默认值。在 Dockerfile 文件中,若添加多个 CMD 指令,只有最后的 CMD 指令运行。
作者:JavaPub
链接:https://www.zhihu.com/question/61349295/answer/2543817956
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

补充:

  • MAINTAINER:维护者信息,可选。
MAINTAINER CYK
  • COPY:将dockerfile文件所在目录下的本地文件或目录添加到容器中
    COPY指令中,宿主主机上的目录必须是相对于构建时所用的dockerfile所在的目录。
COPY local_folder/ /usr/mysql_folder/
COPY local_folder/a.tar /usr/mysql_folder/
  • ENTRYPOINT: 只允许一个,如果有多个,会发生覆盖,只执行最后一个。
ENTRYPOINT ["nginx", "-g", "daemon off;"]
  • EXPOSE: 用于指定与外界交互的端口号,但并不会关联,需要在运行容器时通过-p来关联这些端口号
# 声明容器可以使用80和443端口
EXPOSE 80 443
  • VOLUME: 用于指定容器运行时创建的匿名数据卷路径,在启动容器docker run的时候,我们可以通过-v参数修改挂载点。即容器运行时,会创建VOLUME指定的目录,任何向该目录中写入的信息都不会记录进容器存储层,从而保证了容器存储层的无状态化,可以避免容器不断变大。
  • WORKDIR: 工作目录,类似于cd命令,会进入到指定目录下

5. docker-compose up -d --build

docker-compose up -d --build

根据dockerfile重新下载镜像,运行容器,不使用缓存

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一个甜甜的大橙子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值