docker 基础命令

打印 上一主题 下一主题

主题 523|帖子 523|积分 1569

Images

映像是⼀个只读模板,其中包罗有关创建 Docker 容器的阐明。通常,⼀个映像基于另⼀个映像,并进⾏⼀些额外的⾃定义。比方,您可以构建⼀个基于 ubuntu 映像的映像,但会安装 Apache Web 服务器和您的应⽤程序,以及使应⽤程序运⾏所需的配置详细信息。

Container

容器是映像的可运⾏实例。可以使⽤DockerAPI或CLI创建、启动、停⽌、移动或删除容器。可以将容器连接到⼀个或多个⽹络,将存储附加到该⽹络,甚⾄根据其当前状态创建新映像。

默认情况下,容器之间及其主机的隔离相对较好。也可以控制容器的⽹络、存储或其他底层

⼦系统与其他容器或主机的隔离程度。
容器由其映像以及创建或启动容器时提供的任何配置选项定义。删除容器后,未存储在恒久存储中的任何更改状态都将消失。

CMD

Images

  1. # 查看本地镜像
  2. docker images
  3. # 搜索
  4. docker search <keyword>
  5. # 下载指定镜像(Dockerfile)到本地
  6. docker pull <NAME[:TAG|@DIGEST]>
  7.        
  8. # 上传指定镜像(Dockerfile)到本地
  9. docker push <NAME[:TAG|@DIGEST]>
  10. # 删除指定images # -f:强制删除
  11. docker rmi -f <image_id>
  12. # 保存(导出)镜像⽂件
  13. # -o:指定保存的镜像的名字
  14. docker save -o <file_name> <image_id_or_name>
  15. # -或-
  16. docker save <image_id_or_name> > <file_name>
  17. # 载⼊镜像
  18. docker load --input <file_name>
  19. # -或-
  20. docker load < <file_name>
复制代码
Containers

  1. # 查看正在运⾏的容器,不加-l则只列出正在运⾏的container(⽐如后台任务)
  2. docker ps
  3. # 查看所有的容器
  4. docker ps -a
  5. # 查看指定容器内运⾏进程
  6. # <container>:可以是容器的ID或名称(启动时 --name指定)
  7. docker top <container>
  8. # 从指定image⾥⽣成⼀个container并在其中运⾏⼀个命令
  9. docker run
  10. # 查看容器⽇志
  11. # -f:查看最新⽇志并监控 docker logs [-f] <container>
  12. # 查看container详情
  13. docker inspect <container>
  14. # 从容器内拷⻉⽂件到主机上
  15. docker cp <container:path> <local_path>
  16. # 再次运⾏某个container docker start <container>
  17. # 中⽌后台任务container docker stop <container>
  18. # Kill指定容器
  19. # --signal:信号量
  20. docker kill [--signal=X] <container>
  21. # 在指定容器内运⾏命令
  22. docker exec <container> <command [cmd_options] ...>
  23. # 将本地标准输⼊、输出和错误流附加到正在运⾏的容器
  24. # 把后台(-d选项运⾏)的容器,调⽤到前台
  25. docker attach <container>
  26. # 把容器中的对象转成镜像
  27. docker commit <container> <image_name>
  28. # 删除指定container
  29. docker rm <container>
复制代码
DockerFile

  1. # 常⻅Dockerfile指令
  2. FROM # 基础镜像, ⼀切从这⾥开始构建 MANTAINER # 镜像是谁写的, 姓名+邮箱 RUN #镜像构建的时候需要运⾏的命令
  3. ADD # 步骤, tomcat镜像,压缩包! 添加内容
  4. WORKDIR # 镜像的⼯作⽬录 VOLUME # 挂载的⽬录 EXPOSE # 暴露端⼝配置 RUN #运⾏
  5. CMD # 指定这个容器启动的时候要运⾏的命令,只有最后⼀个会⽣效,可被替代
  6. ENTRYPOINT # 指定这个容器启动的时候要运⾏的命令,可以追加命令
  7. ONBUILD # 当构建⼀个被继承 DockerFile 这个时候就会运⾏ONBUILD的指令,触发指令
  8. COPY # 类似ADD,将我们⽂件拷⻉到镜像中
  9. ENV        # 构建的时候设置环境变量!
  10. 示例
  11. FROM fedora # 使⽤fedora Linux系统 MAINTAINER jzg<infotech@126.com> # 声明作者 ENV MYPATH /usr/local # 声明构建环境变量 WORKDIR $MYPATH # 设置镜像的⼯作⽬录
  12. RUN yum -y install vim # 安装vim
  13. RUN yum -y install net-tools # 安装⽹络⼯具
  14. EXPOSE 80 # 暴露80端⼝
  15. CMD echo $MYPATH # 执⾏echo命令,输出环境变量值
  16. CMD echo "---end---" # 输出字符串
  17. # 构建镜像
  18. # -f:指定⽂件路径
  19. # -t:指定镜像名称和tag
  20. docker build -f <dockerfile_path> -t <name:tag>
复制代码
Volume

  1. # 查看Docker数据卷
  2. docker volume ls
  3. # 创建Docker数据卷
  4. docker volume create <volume_name>
  5. # 删除所有未使⽤数据集
  6. docker volume prune
  7. # 删除Docker数据卷
  8. # -f:强制删除
  9. docker volume rm [-f] <volume_name>
  10. # 查看数据卷详情
  11. docker volume inspect <volume_name>
复制代码
Network

  1. # 查看Docker⽹络
  2. docker network ls
  3. # 创建Docker⽹络
  4. docker network create <network_name>
  5. # 删除所有未使⽤⽹络
  6. docker network prune
  7. # 删除Docker⽹络
  8. # -f:强制删除
  9. docker network rm [-f] <network_name>
  10. # 断开指定容器的某⽹络连接
  11. docker network disconnect <network_name> <container>
  12. # 指定容器连接某⽹络
  13. docker network connect <network_name> <container>
复制代码
Into container

  1. docker exec -it <container> /bin/bash
复制代码
docker compose

  1. ### 插件或独⽴程序⽅式运⾏
  2. # 查看Compose版本 插件⽅式
  3. docker compose version
  4. #或查看Compose版本 独⽴⽅式
  5. docker-compose version
  6. ### 启动所有服务
  7. # -d:后台运⾏服务
  8. # [service_name]:启动指定服务
  9. docker-compose up [-d] [service_name]
  10. ### 关闭所有服务
  11. # [service_name]:启动指定服务 docker-compose down [service_name]
  12. ### 列出所有服务容器
  13. docker-compose ps
  14. ### 查看服务⽇志
  15. docker-compose logs
  16. # 启动指定服务
  17. docker compose start [service_name]
  18. # 停⽌指定服务
  19. docker compose stop [service_naop]
  20. # 重启指定服务
  21. docker compose restart [service_name]
复制代码
docker container demo


  • mysql
  1. # -d:后台运⾏
  2. # -p:映射容器3306端⼝到主机3306端⼝
  3. # --name:指定容器名mysql
  4. # -e MYSQL_ROOT_PASSWORD=123456 设置Mysql密码
  5. # docker desktop下
  6. docker run -d \
  7.   --name mysql \
  8.   -p 13306:3306 \
  9.   -v mysql-conf:/etc/mysql/conf.d \
  10.   -v mysql-data:/var/lib/mysql \
  11.   -v mysql-logs:/var/log/mysql \
  12.   -e MYSQL_ROOT_PASSWORD=13306 \
  13.   mysql:latest
  14. # linux dcoekr 下
  15. docker run -d \
  16.   --name mysql \
  17.   -p 13306:3306 \
  18.   -v /home/mysql/conf:/etc/mysql/conf.d \
  19.   -v /home/mysql/data:/var/lib/mysql \
  20.   -v /home/mysql/logs:/var/log/mysql \
  21.   -e MYSQL_ROOT_PASSWORD=123456 \
  22.   mysql:latest
复制代码

  • redis
  1. # //---启动容器后执⾏【redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123abc】--//
  2. # 使⽤ /etc/redis/redis.conf配置⽂件启动
  3. # –appendonly yes 开启redis 持久化
  4. # --requirepass 123abc 使⽤认证密码
  5. docker run --restart=always \
  6.   --log-opt max-size=100m \
  7.   --log-opt max-file=2 \
  8.   -p 6379:6379 \
  9.   --name redis \
  10.   -v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf \
  11.   -v /home/redis/myredis/data:/data \
  12.   -d redis:latest redis-server /etc/redis/redis.conf \
  13.   --appendonly yes \
  14.   --requirepass 123abc
  15. # docker desptop
  16. docker run --restart=always \
  17.   --log-opt max-size=100m \
  18.   --log-opt max-file=2 \
  19.   -p 6379:6379 \
  20.   --name redis \
  21.   -v redis-conf:/etc/redis/redis.conf \
  22.   -v redis-data:/data \
  23.   -d redis:latest redis-server /etc/redis/redis.conf \
  24.   --appendonly yes \
  25.   --requirepass 123abc
复制代码

  • RabbitMQ
  1. # 拉取镜像
  2. docker pull rabbitmq:3.13-management
  3. # -d 参数:后台运行 Docker 容器
  4. # --name 参数:设置容器名称
  5. # -p 参数:映射端口号,格式是“宿主机端口号:容器内端口号”。5672供客户端程序访问,15672供后台管理界面访问
  6. # -v 参数:卷映射目录
  7. # -e 参数:设置容器内的环境变量,这里我们设置了登录RabbitMQ管理后台的默认用户和密码
  8. docker run -d \
  9. --name rabbitmq \
  10. -p 5672:5672 \
  11. -p 15672:15672 \
  12. -v rabbitmq-plugin:/plugins \
  13. -e RABBITMQ_DEFAULT_USER=guest \
  14. -e RABBITMQ_DEFAULT_PASS=123456 \
  15. rabbitmq:3.13-management
  16. #延迟队列插件安装 下载
  17. wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.13.0/rabbitmq_delayed_message_exchange-3.13.0.ez
  18. #将下载的文件移动到RabbitMQ /plugins目录下
  19. #在下载目录下
  20. docker mv rabbitmq_delayed_message_exchange-3.13.0.ez /var/lib/docker/volumes/rabbitmq-plugin/_data
  21. # 启用插件
  22. # 登录进入容器内部
  23. docker exec -it rabbitmq /bin/bash
  24. # rabbitmq-plugins命令所在目录已经配置到$PATH环境变量中了,可以直接调用
  25. rabbitmq-plugins enable rabbitmq_delayed_message_exchange
  26. # 退出Docker容器
  27. exit
  28. # 重启Docker容器
  29. docker restart rabbitmq  
  30. 如果创建新交换机时可以在type中看到x-delayed-message选项,那就说明插件安装好了
复制代码

  • ElasticSearch
  1. #创建网络
  2. docker network create es-net
复制代码
  1. # -e "cluster.name=es-docker-cluster":设置集群名称
  2. # -e "http.host=0.0.0.0":监听的地址,可以外网访问
  3. # -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
  4. # -e "discovery.type=single-node":非集群模式
  5. # -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
  6. # -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
  7. # -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
  8. # --privileged:授予逻辑卷访问权
  9. # --network es-net :加入一个名为es-net的网络中
  10. # -p 9200:9200:端口映射配置
  11. docker run -d \
  12.   --name es \
  13.   -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
  14.   -e "discovery.type=single-node" \
  15.   -v es-data:/usr/share/elasticsearch/data \
  16.   -v es-plugins:/usr/share/elasticsearch/plugins \
  17.   -v es-logs:/usr/share/elasticsearch/logs \
  18.   --privileged \
  19.   --network es-net \
  20.   -p 9200:9200 \
  21.   -p 9300:9300 \
  22.   elasticsearch:7.12.1
  23. # 查看日志
  24.   docker logs -f es
复制代码

  • Kibana
  1. # --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
  2. # -e ELASTICSEARCH_HOSTS=http://es:9200":
  3. #设置elasticsearch的地址,
  4. #因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
  5. # -p 5601:5601:端口映射配置
  6. docker run -d \
  7. --name kibana \
  8. -e ELASTICSEARCH_HOSTS=http://es:9200 \
  9. --network=es-net \
  10. -p 5601:5601  \
  11. kibana:7.12.1
  12. # 查看日志
  13. docker logs -f kibana
复制代码

  • IK分词器
  1. # 在线安装
  2. 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
  3. # 重启
  4. docker restart es
  5. #离线安装
  6. # 将下载解压的文件elasticsearch-analysis-ik-7.12.1.zip 重命名 为ik 执行以下命令
  7. docker mv ik /var/lib/docker/volumes/es-plugins/_data
  8. # 重启
  9. docker restart es
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表