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

docker 基础命令

Images
映像是⼀个只读模板,其中包含有关创建 Docker 容器的说明。通常,⼀个映像基于另⼀个映像,并进⾏⼀些额外的⾃定义。例如,您可以构建⼀个基于 ubuntu 映像的映像,但会安装 Apache Web 服务器和您的应⽤程序,以及使应⽤程序运⾏所需的配置详细信息。
Container
容器是映像的可运⾏实例。可以使⽤DockerAPI或CLI创建、启动、停⽌、移动或删除容器。可以将容器连接到⼀个或多个⽹络,将存储附加到该⽹络,甚⾄根据其当前状态创建新映像。
默认情况下,容器之间及其主机的隔离相对较好。也可以控制容器的⽹络、存储或其他底层

⼦系统与其他容器或主机的隔离程度。

容器由其映像以及创建或启动容器时提供的任何配置选项定义。删除容器后,未存储在持久存储中的任何更改状态都将消失。
CMD
Images
# 查看本地镜像
docker images # 搜索
docker search <keyword># 下载指定镜像(Dockerfile)到本地
docker pull <NAME[:TAG|@DIGEST]># 上传指定镜像(Dockerfile)到本地
docker push <NAME[:TAG|@DIGEST]># 删除指定images # -f:强制删除
docker rmi -f <image_id># 保存(导出)镜像⽂件
# -o:指定保存的镜像的名字
docker save -o <file_name> <image_id_or_name> 
# -或-
docker save <image_id_or_name> > <file_name># 载⼊镜像
docker load --input <file_name> 
# -或-
docker load < <file_name>
Containers
# 查看正在运⾏的容器,不加-l则只列出正在运⾏的container(⽐如后台任务)
docker ps# 查看所有的容器
docker ps -a# 查看指定容器内运⾏进程
# <container>:可以是容器的ID或名称(启动时 --name指定) 
docker top <container># 从指定image⾥⽣成⼀个container并在其中运⾏⼀个命令
docker run# 查看容器⽇志
# -f:查看最新⽇志并监控 docker logs [-f] <container># 查看container详情
docker inspect <container># 从容器内拷⻉⽂件到主机上
docker cp <container:path> <local_path># 再次运⾏某个container docker start <container># 中⽌后台任务container docker stop <container># Kill指定容器
# --signal:信号量
docker kill [--signal=X] <container># 在指定容器内运⾏命令
docker exec <container> <command [cmd_options] ...># 将本地标准输⼊、输出和错误流附加到正在运⾏的容器
# 把后台(-d选项运⾏)的容器,调⽤到前台
docker attach <container> # 把容器中的对象转成镜像
docker commit <container> <image_name># 删除指定container 
docker rm <container>
DockerFile
# 常⻅Dockerfile指令
FROM # 基础镜像, ⼀切从这⾥开始构建 MANTAINER # 镜像是谁写的, 姓名+邮箱 RUN #镜像构建的时候需要运⾏的命令
ADD # 步骤, tomcat镜像,压缩包! 添加内容
WORKDIR # 镜像的⼯作⽬录 VOLUME # 挂载的⽬录 EXPOSE # 暴露端⼝配置 RUN #运⾏
CMD # 指定这个容器启动的时候要运⾏的命令,只有最后⼀个会⽣效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运⾏的命令,可以追加命令
ONBUILD # 当构建⼀个被继承 DockerFile 这个时候就会运⾏ONBUILD的指令,触发指令
COPY # 类似ADD,将我们⽂件拷⻉到镜像中
ENV	# 构建的时候设置环境变量!示例
FROM fedora # 使⽤fedora Linux系统 MAINTAINER jzg<infotech@126.com> # 声明作者 ENV MYPATH /usr/local # 声明构建环境变量 WORKDIR $MYPATH # 设置镜像的⼯作⽬录
RUN yum -y install vim # 安装vim
RUN yum -y install net-tools # 安装⽹络⼯具EXPOSE 80 # 暴露80端⼝CMD echo $MYPATH # 执⾏echo命令,输出环境变量值
CMD echo "---end---" # 输出字符串# 构建镜像
# -f:指定⽂件路径
# -t:指定镜像名称和tag
docker build -f <dockerfile_path> -t <name:tag>
Volume
# 查看Docker数据卷
docker volume ls# 创建Docker数据卷
docker volume create <volume_name># 删除所有未使⽤数据集
docker volume prune# 删除Docker数据卷
# -f:强制删除
docker volume rm [-f] <volume_name># 查看数据卷详情
docker volume inspect <volume_name>
Network
# 查看Docker⽹络
docker network ls# 创建Docker⽹络
docker network create <network_name># 删除所有未使⽤⽹络
docker network prune# 删除Docker⽹络
# -f:强制删除
docker network rm [-f] <network_name># 断开指定容器的某⽹络连接
docker network disconnect <network_name> <container># 指定容器连接某⽹络
docker network connect <network_name> <container>
Into container
docker exec -it <container> /bin/bash
docker compose
### 插件或独⽴程序⽅式运⾏ 
# 查看Compose版本 插件⽅式 
docker compose version#或查看Compose版本 独⽴⽅式
docker-compose version### 启动所有服务
# -d:后台运⾏服务
# [service_name]:启动指定服务
docker-compose up [-d] [service_name]### 关闭所有服务
# [service_name]:启动指定服务 docker-compose down [service_name]### 列出所有服务容器
docker-compose ps### 查看服务⽇志
docker-compose logs# 启动指定服务
docker compose start [service_name]# 停⽌指定服务
docker compose stop [service_naop]# 重启指定服务
docker compose restart [service_name]
docker container demo
  1. mysql
# -d:后台运⾏
# -p:映射容器3306端⼝到主机3306端⼝ 
# --name:指定容器名mysql
# -e MYSQL_ROOT_PASSWORD=123456 设置Mysql密码
# docker desktop下
docker run -d \--name mysql \-p 13306:3306 \-v mysql-conf:/etc/mysql/conf.d \-v mysql-data:/var/lib/mysql \-v mysql-logs:/var/log/mysql \-e MYSQL_ROOT_PASSWORD=13306 \mysql:latest
# linux dcoekr 下
docker run -d \--name mysql \-p 13306:3306 \-v /home/mysql/conf:/etc/mysql/conf.d \-v /home/mysql/data:/var/lib/mysql \-v /home/mysql/logs:/var/log/mysql \-e MYSQL_ROOT_PASSWORD=123456 \mysql:latest
  1. redis
# //---启动容器后执⾏【redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123abc】--//
# 使⽤ /etc/redis/redis.conf配置⽂件启动 
# –appendonly yes 开启redis 持久化
# --requirepass 123abc 使⽤认证密码
docker run --restart=always \--log-opt max-size=100m \--log-opt max-file=2 \-p 6379:6379 \--name redis \-v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf \-v /home/redis/myredis/data:/data \-d redis:latest redis-server /etc/redis/redis.conf \--appendonly yes \--requirepass 123abc
# docker desptop
docker run --restart=always \--log-opt max-size=100m \--log-opt max-file=2 \-p 6379:6379 \--name redis \-v redis-conf:/etc/redis/redis.conf \-v redis-data:/data \-d redis:latest redis-server /etc/redis/redis.conf \--appendonly yes \--requirepass 123abc
  1. RabbitMQ
# 拉取镜像
docker pull rabbitmq:3.13-management# -d 参数:后台运行 Docker 容器
# --name 参数:设置容器名称
# -p 参数:映射端口号,格式是“宿主机端口号:容器内端口号”。5672供客户端程序访问,15672供后台管理界面访问
# -v 参数:卷映射目录
# -e 参数:设置容器内的环境变量,这里我们设置了登录RabbitMQ管理后台的默认用户和密码
docker run -d \
--name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-v rabbitmq-plugin:/plugins \
-e RABBITMQ_DEFAULT_USER=guest \
-e RABBITMQ_DEFAULT_PASS=123456 \
rabbitmq:3.13-management#延迟队列插件安装 下载
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.13.0/rabbitmq_delayed_message_exchange-3.13.0.ez#将下载的文件移动到RabbitMQ /plugins目录下
#在下载目录下
docker mv rabbitmq_delayed_message_exchange-3.13.0.ez /var/lib/docker/volumes/rabbitmq-plugin/_data 
# 启用插件
# 登录进入容器内部
docker exec -it rabbitmq /bin/bash
# rabbitmq-plugins命令所在目录已经配置到$PATH环境变量中了,可以直接调用
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
# 退出Docker容器
exit
# 重启Docker容器
docker restart rabbitmq  如果创建新交换机时可以在type中看到x-delayed-message选项,那就说明插件安装好了
  1. ElasticSearch
#创建网络
docker network create es-net
# -e "cluster.name=es-docker-cluster":设置集群名称
# -e "http.host=0.0.0.0":监听的地址,可以外网访问
# -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
# -e "discovery.type=single-node":非集群模式
# -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
# -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
# -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
# --privileged:授予逻辑卷访问权
# --network es-net :加入一个名为es-net的网络中
# -p 9200:9200:端口映射配置docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \-v es-logs:/usr/share/elasticsearch/logs \--privileged \--network es-net \-p 9200:9200 \-p 9300:9300 \elasticsearch:7.12.1# 查看日志docker logs -f es
  1. Kibana
# --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
# -e ELASTICSEARCH_HOSTS=http://es:9200":
#设置elasticsearch的地址,
#因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
# -p 5601:5601:端口映射配置docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601  \
kibana:7.12.1# 查看日志
docker logs -f kibana
  1. IK分词器
# 在线安装
docker exec -it es ./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
# 重启
docker restart es#离线安装
# 将下载解压的文件elasticsearch-analysis-ik-7.12.1.zip 重命名 为ik 执行以下命令
docker mv ik /var/lib/docker/volumes/es-plugins/_data
# 重启
docker restart es

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 免费听书TV版v1.0.1
  • 31. 1049. 最后一块石头的重量 II, 494.目标和,474.一和零
  • 问题清除指南|Dell OptiPlex 7070 升级 win11 开启 TPM 2.0 教程
  • c#的几种通信
  • MybatisPlus 一些技巧
  • 透明加密软件哪个好?这5款好用的加密软件尽在你眼前!
  • InspireFace-商用级的跨平台开源人脸分析SDK
  • Spring框架:核心概念与Spring Boot微服务开发指南
  • 地理信息科学在交通规划中的应用:GIS绘制智慧出行新蓝图
  • 【益起童行】为“来自星星的孩子”点亮希望之光
  • 【LeetCode】有效的数独
  • Python考前复习
  • 微信小程序:rpx详解,使用 tailwindcss最佳方案rem转rpx
  • 一文1500字从0到1搭建 Jenkins 自动化测试平台
  • DDOS 攻击原理
  • Electron入门介绍
  • JAVA SE 6 GC调优笔记
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • quasar-framework cnodejs社区
  • Rancher如何对接Ceph-RBD块存储
  • socket.io+express实现聊天室的思考(三)
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 离散点最小(凸)包围边界查找
  • 聊聊hikari连接池的leakDetectionThreshold
  • 聊聊redis的数据结构的应用
  • 微服务框架lagom
  • 一个SAP顾问在美国的这些年
  • 与 ConTeXt MkIV 官方文档的接驳
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ‌移动管家手机智能控制汽车系统
  • #162 (Div. 2)
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (1)Hilt的基本概念和使用
  • (AngularJS)Angular 控制器之间通信初探
  • (day6) 319. 灯泡开关
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (NSDate) 时间 (time )比较
  • (pojstep1.3.1)1017(构造法模拟)
  • (Python第六天)文件处理
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .dwp和.webpart的区别
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net Signalr 使用笔记
  • .NET 使用 XPath 来读写 XML 文件
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net和jar包windows服务部署
  • /etc/fstab和/etc/mtab的区别
  • @JSONField或@JsonProperty注解使用
  • @vue/cli 3.x+引入jQuery