深入了解docker(docker镜像、容器、仓库的基本概念)

深入了解Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用及依赖包到一个可移植的容器中,然后发布到任何 Linux 或 Windows 机器上,也可以实现虚拟化,方便云端部署和升级。

Docker 镜像

Docker 镜像就是一个只读的模板,可以用来创建 Docker 容器。一个镜像可以包含一个或多个文件系统,也可以包含几个用来运行应用程序的工具。可以通过 docker pull 命令来下载一个镜像。例如,下载官方的 ubuntu 镜像:

docker pull ubuntu

也可以指定镜像的版本,在镜像名后面加上冒号和版本号。例如,下载 Ubuntu 16.04 的镜像:

docker pull ubuntu:16.04

Docker 容器

Docker 容器是 Docker 镜像的可运行实例。可以使用 docker run 命令来创建一个容器。例如,启动一个 Ubuntu 容器:

docker run -it --rm ubuntu bash

命令说明:

  • -it 表示要以交互模式运行容器,并打开标准输入输出。
  • --rm 表示容器停止后会自动删除。
  • ubuntu 是要运行的镜像名称。
  • bash 是容器启动后要执行的命令。

在容器内部,可以做任何常规操作,就像在 Ubuntu 系统上一样:

ls /

命令将列出容器内的根目录下的文件。

Docker 仓库

Docker 仓库是用来存放和分享 Docker 镜像的地方。Docker 官方维护了一个公共的 Docker 仓库,名为 Docker Hub。开发者也可以在自己的服务器上搭建私有 Docker 仓库。

可以使用 docker push 命令将本地的镜像推送到 Docker 仓库。例如,先打一个自己的镜像:

docker build -t myimage ./

命令说明:

  • -t 表示为镜像指定一个标签,在将来容器的创建、启动或运行时使用该标签来指定这个镜像。
  • myimage 是镜像名称。
  • ./ 是 Dockerfile 文件所在的路径。

查看自己修改过的镜像:

docker images

命令将会列出所有在本地构建或下载的镜像。

在推送镜像之前,需要先使用 docker login 命令登录到 Docker 镜像仓库:

docker login

命令将会提示输入 Docker 帐户的用户名和密码。成功登录后,可以使用 docker push 命令将本地镜像推送到 Docker 仓库:

docker push myimage

命令中的 myimage 是要推送的镜像名称。

示例说明

示例一:使用 Docker 镜像搭建 WordPress

可以使用 Docker Compose 来搭建 WordPress。首先,在本地创建一个 docker-compose.yml 文件:

version: '3'
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_mysql_root_password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: your_wordpress_password
  wordpress:
    depends_on:
      - db
    image: wordpress:5.1.1-php7.2-apache
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_PASSWORD: your_wordpress_password
    volumes:
      - wordpress_files:/var/www/html
volumes:
  db_data:
  wordpress_files:

其中:

  • db 服务使用了 MySQL 官方的 5.7 版本镜像,创建了一个名为 db_data 的数据卷来存储数据库文件。
  • wordpress 服务使用了 WordPress 官方的 5.1.1 版本镜像,将 8000 端口映射到容器的 80 端口,以便可以通过浏览器访问 WordPress 程序。同时,将 wordpress_files 映射到容器的 /var/www/html 目录,以便能在本地修改 WordPress 的配置和插件。

在终端中使用 docker-compose up 命令启动 WordPress:

docker-compose up -d

然后,可以在本地的浏览器上访问:http://localhost:8000,来访问您的 WordPress。

示例二:搭建基于 Jenkins 的 CI/CD 环境

这个示例演示了如何使用 Jenkins 和 Docker,来搭建一个自动化的 CI/CD 环境。

首先,需要建立一个 Dockerfile,创建镜像,同时以来 git。

FROM jenkins/jenkins:lts
LABEL maintainer="your_email_address"
USER root
RUN apt-get update && \
    apt-get install -y apt-transport-https \
                       ca-certificates \
                       curl \
                       gnupg2 \
                       software-properties-common && \
    curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - && \
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" && \
    apt-get update && \
    apt-get install -y docker-ce && \
    rm -rf /var/lib/apt/lists/*
USER jenkins

该 Dockerfile 安装并配置了 Jenkins,同时安装了 Docker CE。

构建该镜像的命令:

docker build -t my_jenkins .

然后运行镜像:

docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock my_jenkins

命令中:

  • -p 表示将主机端口映射到容器内的端口。
  • -v 表示将主机的目录挂载到容器内。

最后,在浏览器中输入http://localhost:8080/,登陆 Jenkins, 按提示安装需要的插件。

现在,可以创建一个 Jenkins 作业,将代码检出到构建环境中,在容器中执行构建或部署命令。

总结

本文为了深入了解 Docker,介绍了 Docker 镜像、容器和仓库的概念,并提供了两个具体的示例:使用 Docker Compose 搭建 WordPress 环境,使用 Docker CE 安装 Jenkins 服务。通过实践,可以更好地理解 Docker 的概念和应用场景。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入了解docker(docker镜像、容器、仓库的基本概念) - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Grafana 系列文章(三):Tempo-使用 HTTP 推送 Spans

    ?️URL: https://grafana.com/docs/tempo/latest/api_docs/pushing-spans-with-http/ ?Description: 有时,使用追踪系统是令人生畏的,因为它似乎需要复杂的应用程序仪器或 span 摄取管道,以便 … 有时,使用追踪系统是令人生畏的,因为你似乎需要复杂的应用程序仪器或 sp…

    2023年4月10日
    00
  • docker安装influxdb的详细教程(性能测试)

    下面我将为你详细讲解“docker安装influxdb的详细教程(性能测试)”的完整攻略,包含两个示例说明。 准备工作 首先,我们需要安装 Docker 和 Docker Compose,如果你已经安装了,请跳过该步骤。可以参考 Docker 官方文档:https://docs.docker.com/engine/install/ 和 https://doc…

    Docker 2023年5月16日
    00
  • error:docker-ce conflicts with 2:docker-1.13.1-74.git6e3bb8e.el7.centos.x86_64

    问题原因:安装docker之前有安装cockpit-docker服务 解决方法:卸载docker-ce [root@localhost ~]# yum list installed | grep docker docker-ce.x86_64 18.06.1.ce-3.el7 @docker-ce-stable [root@localhost ~]# yum…

    Docker 2023年4月11日
    00
  • 人工智能,丹青圣手,全平台(原生/Docker)构建Stable-Diffusion-Webui的AI绘画库教程(Python3.10/Pytorch1.13.0)

    世间无限丹青手,遇上AI画不成。最近一段时间,可能所有人类画师都得发出一句“既生瑜,何生亮”的感叹,因为AI 绘画通用算法Stable Diffusion已然超神,无需美术基础,也不用经年累月的刻苦练习,只需要一台电脑,人人都可以是丹青圣手。 本次我们全平台构建基于Stable-Diffusion算法的Webui可视化图形界面服务,基于本地模型来进行AI绘画…

    2023年4月9日
    00
  • Docker学习笔记之docker入门

    下面我会详细讲解“Docker学习笔记之docker入门”的完整攻略。 一、Docker的基本概念和优势 Docker是一个开源的容器化技术平台,它可以让开发者将应用及其依赖项打包成一个便携式的容器,方便在不同的环境中部署和运行。Docker的优势在于: 提高开发效率:Docker容器化技术可以让开发者在本地快速构建和测试应用,省去了繁琐的配置过程。 提高部…

    Docker 2023年5月16日
    00
  • 使用Docker将容器打成镜像的方法步骤

    下面我将详细介绍使用Docker将容器打成镜像的方法步骤,这里分为以下几个步骤: 1. 编写dockerfile文件 Dockerfile是定义Docker镜像构建流程的一个文本文件。在这里,我们需要编写一个dockerfile文件,使用docker build命令进行构建镜像。Dockerfile包含构建镜像所需要的所有指令,包括镜像基础、安装软件、拷贝文…

    Docker 2023年5月15日
    00
  • docker java环境 直接做成镜像 跑自己的java包

      yum install docker #基于阿里源 可以直接下载   systemctl restart docker                   ifconfig  #出现 docker0  说明环境部署成功        docker version      #  查看版本       #对于使用 systemd 的系统,请在 /etc/d…

    Docker 2023年4月12日
    00
  • 基于 Traefik 的 ForwardAuth 配置

    前言 Traefik 是一个现代的 HTTP 反向代理和负载均衡器,使部署微服务变得容易。 Traefik 可以与现有的多种基础设施组件(Docker、Swarm 模式、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS…)集成,并自动和动态地配置自己。 系列文章: 《Traefik 系列文章》 今天我们…

    Docker 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部