深入了解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安装总结 linux红帽系列

    由于Docker限制分为两个版本CE和EE,所以之前yum里面的docker是老版本,需要先进行卸载,现在的包名叫做docker-ce yum remove docker docker-common docker-selinux docker-engine 安装Docker CE你能够通过不同的方式来安装DockerCE,取决于你的需要。通过仓库来安装doc…

    Docker 2023年4月12日
    00
  • 一文教你如何通过 Docker 快速搭建各种测试环境

    下面我将详细讲解 “一文教你如何通过 Docker 快速搭建各种测试环境”的完整攻略,内容包括以下几个部分: 搭建 Docker 环境 下载镜像 启动并使用容器 示例说明 搭建 Docker 环境 在使用 Docker 前,我们需要先搭建好 Docker 环境。安装 Docker 的方法有很多种,这里不再赘述,可以根据自己的操作系统类型进行安装,具体安装方法…

    Docker 2023年5月16日
    00
  • Docker 版本及内核兼容性选择

    摘自:http://www.manongjc.com/detail/17-nowbmnmdmggqnpk.html 时间:2020-06-03 本文章向大家介绍【docker系列4】docker版本及内核兼容性选择,主要包括【docker系列4】docker版本及内核兼容性选择使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可…

    Docker 2023年4月12日
    00
  • Docker安装Jenkins-2.249.3-1.1的详细过程

    安装Jenkins-2.249.3-1.1版本的步骤如下: 步骤1:安装Docker 如果您的机器上还没有安装Docker,请先安装。您可以根据您所使用的操作系统在Docker官网上下载对应版本的Docker并进行安装。安装Docker后,请确保Docker服务已经启动。 步骤2:运行Jenkins容器 以下是使用Docker运行Jenkins-2.249.…

    Docker 2023年5月16日
    00
  • Linux 下的docker下gitlab安装配置使用(完整)

    一、安装及配置  1.gitlab镜像拉取  拉镜像之前 设置一下 国内镜像 我是在CenterOs 虚机上安装的 首先更新系统 以防版本不一致导致的奇怪问题 1、查看你当前的内核版本 uname -r 2、更新 yum 包 sudo yum update 3、卸载已安装的 docker(如果安装过的话) yum remove docker docker-c…

    Docker 2023年4月11日
    00
  • 理解Docker(2):Docker 镜像详细介绍

    理解Docker(2):Docker 镜像详细介绍 Docker 镜像是 Docker 容器的基础。在这篇文章中,我们将详细介绍 Docker 镜像的概念和用法。 镜像是什么? Docker 镜像是一个只读的模板,它包含了需要运行应用程序所需的所有文件、类库、代码、运行时、环境变量和配置文件等。从 Docker 镜像可以创建多个 Docker 容器,这些容器…

    Docker 2023年5月16日
    00
  • 如何使用 ArrayPool

    如果不停的 new 数组,可能会造成 GC 的压力,因此在 aspnetcore 中推荐使用 ArrayPool 来重用数组,本文将介绍如何使用 ArrayPool。 如果不停的 new 数组,可能会造成 GC 的压力,因此在 aspnetcore 中推荐使用 ArrayPool 来重用数组,本文将介绍如何使用 ArrayPool。 使用 ArrayPool…

    2023年4月9日
    00
  • centos下设置nginx,fdfs,docker开机自启动

    1. 设置Nginx开机启动  第一步:进入到/lib/systemd/system/目录 # cd /lib/systemd/system/  第二步:创建nginx.service文件,并编辑  # vim nginx.service  内如如下: [Unit] Description=nginx service After=network.target…

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