docker学习:docker容器管理

这篇具有很好参考价值的文章主要介绍了docker学习:docker容器管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Docker是什么

  • Docker 是一种开源的容器化平台,可以帮助开发人员和系统管理员更轻松地创建、部署和运行应用程序。它利用 Linux容器技术,将应用程序及其依赖项打包成一个可移植的容器,以便在不同的环境中运行,从而实现应用程序的快速部署和可移植性。

二、Dockerfile

(一)、docker镜像的构建方式

1、直接拉取别人构建好的官方镜像
eg:

docker pull zookeeper:3.7.1

2、利用安装包自己编写dockerfile构建
eg:
1)、下载zookeeper安装包

wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz

2)、编写Dockerfile

FROM test/java8
#我这边是自己构建的java8镜像

ENV ZOOKEEPER_VERSION 3.7.1
COPY apache-zookeeper-${ZOOKEEPER_VERSION}-bin /app
ENV ZOOKEEPER_HOME /app
ENV DOCKER true

RUN cp ${ZOOKEEPER_HOME}/conf/zoo_sample.cfg ${ZOOKEEPER_HOME}/conf/zoo.cfg

EXPOSE 2181 2888 3888

CMD ["/app/bin/zkServer.sh", "start-foreground"]
#CMD ["/bin/bash", "-c", "${ZOOKEEPER_HOME}/bin/zkServer.sh start-foreground"]

3)、编写build.sh一键部署

#!/bin/sh
#Actively load user env
if [ -f "~/.bashrc" ];then
  echo "Warning! user bashrc file does not exist."
else
  source ~/.bashrc
fi

echo "build docker"
sudo docker build -t heracles/zookeeper:latest .

(二)、dockerfile

  • 和shell脚本类似(区别只是dockerfile中的命令是在镜像中执行的)

1、FROM:接基础镜像(可以是官方的也可以自己构建的),第一条必须是FROM,后续指令都会根据该镜像构建

FROM centos

2、MAINTAINER:镜像维护者的姓名和邮件地址

MAINTAINER lishiming@163.com

3、RUN:用于在镜像中执行命令,如下载一些安装包等

RUN yum -y install mysql

4、COPY:用于将本地文件复制到镜像中

COPY app /app

5、ADD:与COPY类似,也可以将本地文件或目录复制到镜像中,但是它还支持更多的功能,例如自动解压缩和自动文件下载,一般情况下都是用COPY

ADD app.tar.gz /app

6、ENV:在镜像中设置环境变量

ENV APP_HOME = /app

7、EXPOSE:声明容器运行时要暴露的端口号

EXPOSE 12345

8、ENTRYPOING:容器启动时执行的命令,不会被docker run接的参数覆盖,用于设置容器执行时的主要命令

ENTRYPOINT ["sh", "/app/bin/start-all.sh"]

9、CMD:也是容器启动时要执行的默认命令,会被docker run后接的参数覆盖

CMD ["/app/bin/zkServer.sh", "start-foreground"]
其中/app/bin/zkServer.sh是命令,start-foreground是参数

CMD也可以作为ENTRYPOINT的参数

ENTRYPOINT ["sh", "/app/bin/dolphinscheduler-daemon.sh"]
CMD ["start", "standalone-server"]
整个命令是这样的:sh /app/bin/dolphinscheduler-daemon.sh start standalone-server,CMD命令后接的是ENTRYPOINT的参数

三、docker-compose.yml

  • Docker Compose 是 Docker 的一个工具,用于定义和运行多个 Docker 容器的应用程序。它基于 YAML文件格式,可以方便地定义和配置多个容器,以便在不同的环境中部署应用程序,作用主要是管理多个容器
version: '3'
services:
  dolphinscheduler:
    build: .
    depends_on:
      - mysql
      - zookeeper
    networks:
      - heracles-backend
      - heracles-db

  mysql:
    image: mysql:5.7
    restart: always
    privileged: true
    environment:
    volumes:
      - ./my.cnf:/etc/my.cnf
    networks:
      heracles-db:
        aliases:
          - db-mysql

  zookeeper:
    image: zookeeper:3.7.1
    networks:
      - heracles-backend

networks:
  heracles-db:
  heracles-backend:
  • 运行docker-compose up -d会去运行上述文件,如何有对应的image,则会直接启动容器;如果没有,则会构建镜像并启动容器
  • networks关键字用于定义docker网络,以便在多个容器间进行通信,可以用docker network ls查看有哪些docker网络,然后在docker-compose.yml中选用这些网络;如果没有这些网络,则会自动以上级目录为前缀自动构建docker网络
  • 比如上述dolphinscheduler容器,要想连接到mysql容器,可以直接连接别名db-mysql或service名:mysql,用命令ping db-mysql或ping mysql测试

四、Docker常用命令

命令 含义
docker images | grep 镜像名 查找指定的镜像
docker ps | grep 容器名 在运行中的容器中查找指定容器
docker ps -a | grep 容器名 在所有容器中查找指定容器
docker run -d --name 自定义容器名 -p [host_port]:[container_port] 镜像名 依据某镜像启动容器,host_port是宿主机的端口号,container_port是容器内部端口号,表示将容器内部的端口映射到宿主机的某个端口上,可以通过宿主机的端口访问容器的端口
docker exec -it 容器名 bash 进入容器
docker rm 容器名 删除容器
docker rmi 镜像名 删除镜像
docker-compose up -d 启动所有docker-compose.yml定义的服务
docker-compose down 停止并删除所有docker-compose.yml定义的服务
docker-compose logs service名 查看docker-compose.yml定义的service日志
docker-compose start 启动所有服务
docker-compose stop 停止所有服务
docker-compose restart 重启所有服务
docker network ls 查看所有docker网络
docker network create network名 创建docker网络(默认bridge)
docker inspect 容器名 查看docker的详细信息包括安装位置等

五、Docker与Kubernetes(k8s)

1、docker与kubernetes

  • 定位:Docker是一个容器化平台,它提供了构建、打包和运行应用程序的工具。Kubernetes是一个容器编排和管理平台,它用于管理和协调多个Docker容器的部署、伸缩和升级。
  • 架构:Docker是一个单个容器引擎,它可以在一个宿主机上运行一个或多个容器。Kubernetes是一个分布式系统,它由多个主机组成,其中每个主机可以运行多个Docker容器。
  • 功能:Docker提供了构建、打包、运行和分享容器的功能,以及一些基本的容器编排功能。Kubernetes提供了更广泛的容器编排和管理功能,包括自动伸缩、负载均衡、服务发现、滚动升级等。
  • 级别:Docker处于基础设施层,它主要关注如何将应用程序打包成可移植的容器。Kubernetes处于应用程序层,它主要关注如何管理和编排多个容器的部署和运行。

可以大概知道Docker是单一容器引擎,Kubernetes可以管理多个容器,Docker-compose也可以管理多个容器,两者又有什么区别呢?
2、docker-compose与kubernetes

  • 定位:Docker Compose是一个本地开发工具,用于定义和运行多个Docker容器的应用程序。Kubernetes是一个分布式系统,用于编排和管理多个容器的部署、伸缩和升级。
  • 架构:Docker Compose适用于单个主机上的容器应用程序,它依赖于Docker引擎。Kubernetes是一个分布式系统,由多个主机组成,每个主机可以运行多个Docker容器。
  • 功能:Docker Compose提供了一种简单的方式来定义和运行多个容器的应用程序。Kubernetes提供了更广泛的功能,包括自动伸缩、负载均衡、服务发现、滚动升级等。
  • 编排方式:Docker Compose使用YAML文件来定义容器应用程序,它可以在单个主机上快速启动和停止多个容器。Kubernetes使用YAML文件或命令行工具来定义和管理多个容器的部署、服务和资源。
  • 可移植性:Kubernetes的可移植性更高,它可以在不同的云平台和基础设施上运行,包括AWS、Azure、Google Cloud等。Docker Compose则更适合本地开发和测试环境,它可以在开发者的电脑上运行。

总结:若是单个容器,可以使用多个容器;若是多个容器,可以使用docker-compose;若是生产环境使用很多个容器,可以使用K8s文章来源地址https://www.toymoban.com/news/detail-500703.html

到了这里,关于docker学习:docker容器管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker技术--Docker容器管理

    1.Docker 容器相关的指令(单个容器操)        我们之前在Docker中部署了一个实际应用的案例wordpress,其中使用到了一些相关于容器的指令,那么下面我们一起来总结使用。 Docker指令的语法规则如下所示: Docker + 命令 [+参数选项] -1 类:关闭、开启、重启、开启自启 systemct

    2024年02月11日
    浏览(42)
  • 什么是docker(docker客户端、镜像、容器、仓库)

    Docker 是一个开源的容器化平台,它可以让开发者打包应用程序及其依赖项成为一个轻量级、可移植的容器,然后在任何环境中运行。Docker 容器将应用程序及其依赖项打包到一个标准化单元中,包括代码、运行时环境、系统工具、系统库等,确保应用程序在不同的环境中具有

    2024年04月10日
    浏览(41)
  • 【Docker系列】容器基础、Docker镜像管理

    个人名片: 对人间的热爱与歌颂,可抵岁月冗长🌞 Github👨🏻‍💻:念舒_C.ying CSDN主页✏️:念舒_C.ying 个人博客🌏 :念舒_C.ying 2.1 Docker镜像查找 命令查找 docker官网查找 2.2 Docker镜像管理 拉取MySQL镜像 查看本地镜像 镜像加速(阿里云) Daocloud镜像站加速 镜像删除 2.3 容器

    2024年01月25日
    浏览(42)
  • Docker进阶:Docker Compose(容器编排) 管理多容器应用—实战案例演示

    💖The Begin💖点点关注,收藏不迷路💖 在开始之前,我们需要确保已经安装了 Docker 。 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如

    2024年02月08日
    浏览(40)
  • 【docker系列】详解docker容器状态转换管理命令

    本文系docker系列专栏第六篇。docker容器有三种状态运行、停止、暂停,镜像可以创建、运行容器,镜像和容器也可以转换成tar压缩包进行存储。本文为大家介绍容器的状态转换命令及镜像创建运行容器、tar包导入导出相关的命令及使用场景。 结合下文中的命令介绍来理解上面

    2023年04月25日
    浏览(43)
  • 【docker系列】深入理解 Docker 容器管理与清理

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年03月25日
    浏览(39)
  • 06. 管理Docker容器数据

    目录 1、前言 2、Docker实现数据管理的方式 2.1、数据卷(Data Volumes) 2.2、数据卷容器(Data Volume Containers) 3、简单示例 3.1、数据卷示例 3.2、数据卷容器示例 在生产环境中使用 Docker,一方面,需要对数据进行保存或者在多个容器之间进行数据共享;另一方面,在 Docker 的容器

    2024年02月14日
    浏览(44)
  • 云原生Docker容器管理

    目录 docker容器的管理 容器创建  查看容器的运行状态 启动容器 创建并启动容器  终止容器运行  删除容器  容器的进入  查看容器详细信息 复制到容器中 从容器复制文件到主机 容器的导出与导入 导出  导入 相当于一个进程,性能接近于原生,几乎没有损耗; docker容器在

    2024年02月07日
    浏览(51)
  • docker容器管理

    创建容器: docker run --name 容器名 -d -p 端口1:端口2 镜像名 –name :是启动容器时,给容器定义的名称,不使用该参数时,容器启动成功之后,会生成随机名称 -d :代表容器处于后台yunx -p :指定容器的端口映射,端口1指外界可访问的端口号,端口2指容器内部项目对应的端口号

    2024年02月12日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包