深入了解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日

相关文章

  • docker之点到点的容器网络的配置

    下面我将为你详细讲解“docker之点到点的容器网络的配置”的完整攻略,过程中包含两条示例说明: 点到点容器网络的配置 Docker支持多种网络模式,其中一种是点到点(p2p)网络,它将每个容器直接连接起来,使得它们之间可以进行无需外部干预的通信。下面我们将以两个容器之间的通信为例,来讲解如何配置点到点容器网络。 步骤一:准备工作 在进行网络配置之前,需要准…

    Docker 2023年5月15日
    00
  • Docker之实现挂载的三种方式汇总

    下面我来详细讲解一下「Docker之实现挂载的三种方式汇总」的完整攻略。 挂载方式汇总 在Docker中,我们可以使用多种方式来实现挂载。 -v命令行选项,如-v /host/path:/container/path –mount命令行选项,如–mount type=bind,source=/host/path,target=/container/pat…

    Docker 2023年5月16日
    00
  • docker入门(三):容器数据卷与DockerFile脚本,使用阿里云镜像仓库

    一、容器数据卷 用于数据保存和持久化,简单的理解,就是容器和主机共享的一个公共硬盘,举个例子,原本tomcat部署应用,或者查看日志还需要进入容器,现在将日志文件夹和部署文件夹拿出来挂载到主机,就可以在不进入容器的情况下查看日志或者部署项目 1. 直接构建容器数据卷 #直接把容器内文件夹挂在到主机文件夹上 docker run -it -v /宿主机绝对路径…

    Docker 2023年4月12日
    00
  • Docker存储驱动之Device Mapper简介

    Device Mapper是一个基于kernel的框架,它增强了很多Linux上的高级卷管理技术。Docker的devicemapper驱动在镜像和容器管理上,利用了该框架的超配和快照功能。为了区别,本文使用Device Mapper指驱动中的框架,而devicemapper指Docker的存储驱动。  注意:商业支持的Docker Engine(CS-En…

    Docker 2023年4月11日
    00
  • 影片自由,丝滑流畅,Docker容器基于WebDav协议通过Alist挂载(百度网盘/阿里云盘)Python3.10接入

    使用过NAS(Network Attached Storage)的朋友都知道,它可以通过局域网将本地硬盘转换为局域网内的“网盘”,简单理解就是搭建自己的“私有云”,但是硬件和网络成本都太高了,有点可望而不可及的意思。Alist开源库则可以满足我们,它能将公共网盘反过来变成一种联网的本地硬盘,使用Web页面来统一挂载和管理,网盘类型包含但不限于:百度网盘、阿里…

    2023年4月9日
    00
  • 详解如何干净的卸载docker的方法

    以下是详解如何干净地卸载 Docker 的方法的完整攻略,并包含两个示例说明: 目录 快速卸载Docker 完全卸载Docker 示例:Ubuntu中卸载Docker 示例:CentOS中卸载Docker 快速卸载Docker 如果你不需要彻底清理Docker,可以执行以下命令快速卸载Docker: $ sudo apt-get remove docker …

    Docker 2023年5月16日
    00
  • docker-管理镜像常用命令

    1. docker管理镜像常用命令 指令 说明 docker   run     [容器 CONTAINER ID] 创建一个新的容器并运行一个命令 docker   start   [容器 CONTAINER ID] 启动一个或多个已经被停止的容器 docker  stop    [容器 CONTAINER ID] 停止一个运行中的容器 docker  r…

    Docker 2023年4月16日
    00
  • Docker数据卷容器创建及使用方法解析

    我来为您详细讲解“Docker数据卷容器创建及使用方法解析”的完整攻略。 一、什么是Docker数据卷容器? Docker数据卷容器是Docker中的一种特殊容器,用于在容器之间共享持久化数据。通过使用数据卷容器,我们可以方便地在多个容器之间共享同一个数据卷,这样就可以实现容器的持久化存储。 二、创建Docker数据容器 首先,我们需要通过创建Docker数…

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