【云原生 | Docker篇】轻松学会 Docker命令(二)(下)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 【云原生 | Docker篇】轻松学会 Docker命令(二)(下)

二、经典的Docker命令



1、docker run


常用关键参数 OPTIONS 说明:


  • -d: 后台运行容器,并返回容器ID;
  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -P: 随机端口映射,容器内部端口随机映射到主机的端口
  • -p:指定端口映射,格式为:主机(宿主)端口:容器端口
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
  • --name="nginx-lb":为容器指定一个名称;
  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  • -h "mars": 指定容器的hostname;
  • -e username="ritchie": 设置环境变量;
  • --env-file=[]: 从指定文件读入环境变量;
  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
  • -m :设置容器使用内存最大值;
  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  • --link=[]: 添加链接到另一个容器;
  • --expose=[]: 开放一个端口或一组端口;
  • --restart , 指定重启策略,可以写--restart=awlays 总是故障重启
  • --volume , -v: 绑定一个卷。一般格式 主机文件或文件夹:虚拟机文件或文件夹


1)如何使用Docker部署组件


  1. 先去找组件的镜像
  2. 查看镜像文档,了解组件的可配置内容
  3. docker run进行部署


2)常见部署案例


1 、部署 Nginx


# 注意 外部的/nginx/conf下面的内容必须存在,否则挂载会覆盖
docker run --name nginx-app \
-v /app/nginx/html:/usr/share/nginx/html:ro \
-v /app/nginx/conf:/etc/nginx
-d nginx


2、部署MySQL


# 5.7版本
docker run -p 3306:3306 --name mysql57-app \
-v /app/mysql/log:/var/log/mysql \
-v /app/mysql/data:/var/lib/mysql \
-v /app/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
#8.x版本,引入了 secure-file-priv 机制,磁盘挂载将没有权限读写data数据,所以需要将权限透传,或者chmod -R 777 /app/mysql/data
# --privileged 特权容器,容器内使用真正的root用户
docker run -p 3306:3306 --name mysql8-app \
-v /app/mysql/conf:/etc/mysql/conf.d \
-v /app/mysql/log:/var/log/mysql \
-v /app/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--privileged \
-d mysql


3 、部署 Redis


# 提前准备好redis.conf文件,创建好相应的文件夹。如:
port 6379
appendonly yes
#更多配置参照 https://raw.githubusercontent.com/redis/redis/6.0/redis.conf
docker run -p 6379:6379 --name redis \
-v /app/redis/redis.conf:/etc/redis/redis.conf \
-v /app/redis/data:/data \
-d redis:6.2.1-alpine3.13 \
redis-server /etc/redis/redis.conf --appendonly yes


4、部署ElasticSearch


#准备文件和文件夹,并chmod -R 777 xxx
#配置文件内容,参照 https://www.elastic.co/guide/en/elasticsearch/reference/7.5/node.name.html 搜索相关配置
# 考虑为什么挂载使用esconfig ...
docker run --name=elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms300m -Xmx300m" \
-v /app/es/data:/usr/share/elasticsearch/data \
-v /app/es/plugins:/usr/shrae/elasticsearch/plugins \
-v esconfig:/usr/share/elasticsearch/config \
-d elasticsearch:7.12.0


5、部署Tomcat


# 考虑,如果我们每次 -v 都是指定磁盘路径,是不是很麻烦? 
docker run --name tomcat-app -p 8080:8080 \
-v tomcatconf:/usr/local/tomcat/conf \
-v tomcatwebapp:/usr/local/tomcat/webapps \
-d tomcat:jdk8-openjdk-slim-buster


6、重启策略


  • no ,默认策略,在容器退出时不重启容器
  • on-failure ,在容器非正常退出时(退出状态非 0 ),才会重启容器
  • on-failure:3 ,在容器非正常退出时重启容器,最多重启 3 次
  • always ,在容器退出时总是重启容器
  • unless-stopped ,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器


2、docker exec


在运行的容器中执行命令


语法


docker exec [OPTIONS] CONTAINER COMMAND [ARG...]


OPTIONS说明:


  • -d :分离模式: 在后台运行


  • -i :即使没有附加也保持STDIN 打开


  • -t :分配一个伪终端


docker exec -it alpine sh


3、docker build


命令用于使用 Dockerfile 创建镜像。


语法


docker build [OPTIONS] PATH | URL | -


OPTIONS说明:


  • --build-arg=[] :设置镜像创建时的变量;


  • --cpu-shares :设置 cpu 使用权重;


  • --cpu-period :限制 CPU CFS周期;


  • --cpu-quota :限制 CPU CFS配额;


  • --cpuset-cpus :指定使用的CPU id;


  • --cpuset-mems :指定使用的内存 id;


  • --disable-content-trust :忽略校验,默认开启;


  • -f :指定要使用的Dockerfile路径;


  • --force-rm :设置镜像过程中删除中间容器;


  • --isolation :使用容器隔离技术;


  • --label=[] :设置镜像使用的元数据;


  • -m :设置内存最大值;


  • --memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;


  • --no-cache :创建镜像的过程不使用缓存;


  • --pull :尝试去更新镜像的新版本;


  • --quiet, -q :安静模式,成功后只输出镜像 ID;


  • --rm :设置镜像成功后删除中间容器;


  • --shm-size :设置/dev/shm的大小,默认值是64M;


  • --ulimit :Ulimit配置。


  • --squash :将 Dockerfile 中所有的操作压缩为一层。


  • --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。


  • --network: 默认 default。在构建期间设置RUN指令的网络模式


docker build -t imageName -f DockerfileName .


4、docker push


将本地的镜像上传到镜像仓库,要先登陆到镜像仓库


语法


docker push [OPTIONS] NAME[:TAG]


OPTIONS说明:


--disable-content-trust :忽略镜像的校验,默认开启


docker push myapache:v1
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
7天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
28 2
|
4天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
26天前
|
安全 Docker 容器
|
26天前
|
网络安全 数据安全/隐私保护 Docker
|
25天前
|
存储 监控 安全
|
22天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
33 3
|
25天前
|
存储 关系型数据库 MySQL
|
28天前
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。
|
1月前
|
网络协议 Docker 容器
docker pull命令拉取镜像失败的解决方案
docker pull命令拉取镜像失败的解决方案
815 1
|
1月前
|
安全 网络安全 开发者
Docker学习笔记(一):Docker命令总结
本文介绍了Docker的基本概念、优点以及常用命令。Docker是一个开源的应用容器引擎,它通过容器打包应用程序及其依赖项,实现快速部署和迁移。主要优点包括轻量级、可移植性、易于管理、安全性和开源性。文章还区分了镜像和容器的概念,并提供了构建镜像、查看容器、运行容器、停止和删除容器等常用Docker命令的示例。
129 0