三天入门 Docker - 第一天:Docker 基本介绍与使用

简介: Docker是一个用于开发、发布和运行应用程序的开放平台。Docker可以将应用程序与基础架构9分离(即不再过于需要底层支持),以便我们可以快速交付软件。使用Docker,我们可以像管理应用程序一样管理基础架构。Docker 官方

Docker—基本介绍与使用



—、Docker介绍


1.Docker 架构

2.Docker三大核心

1)镜像

2)容器

3)仓库


二、Docker安装


1.下载 Docker 软件包

2.Docker基础命令介绍

1)镜像相关命令

2)容器相关命令

3.使用Docker 实现 Nginx 网站


一、Docker介绍



Docker是一个用于开发、发布和运行应用程序的开放平台。Docker可以将应用程序与基础架构9分离(即不再过于需要底层支持),以便我们可以快速交付软件。使用Docker,我们可以像管理应用程序一样管理基础架构。Docker 官方


Docker 优势:


  • 灵活:即使应用过于复杂,我们也可以使用Docker来将应用进行容器化。
  • 轻量级:因为Docker容器是使用宿主机共享的内核,所以不需要额外的硬件支持。
  • 应用隔离:使用Docker运行的容器,可以隔离不同应用程序间的互相影响(即,每个容器都是独立的)


1.Docker 架构


Docker使用的是C/S架构,Docker Client用于和Docker的守护进程通信(守护进程就是Server),守护进程可以用来构建、运行和分发Docker容器等操作。Docker Client和守护进程可以在同一系统上运行,或者将Docker Client 远程连接到守护进程。使用 REST API协议,并通过UMX套接字或网络接口进行通信。另一个Docker Client是Docker Compose(允许我们将一组容器组成的应用程序)


image.png


Docker的架构我们不需要过于关注,因为一般来说Docker的Client和Docker守护进程都是在同一台服务器上运行。


2.Docker三大核心


这里要说的Docker三大核心,分别是image 镜像,container容器,repository 仓库;这可以说是Docker最重要的部分。


1)镜像


Docker镜像是Docker容器运行时的只读模板,镜像可以用来创建Docker容器(每一个镜像都由一系列的层组成)


2)容器


Docker主要就是利用容器来运行应用,一个Docker容器内可以说包含了某个应用运行所需要的环境。每一个Docker容器都是从镜像创建出来的。可以说容器就是镜像创建的运行实例,它可以被启动,停止,删除等。而且每个容器都是互相隔离的,保证安全的平台。


3)仓库


Docker仓库主要就是用来集中保存镜像的地方,当我们创建了自己的镜像后,可以使用push 命令将它上传到公共仓库(Pubic)或者私用仓库(Private),这样的好处是,当我们需要在另外的服务器上使用这个镜像时,可以直接从仓库进行拉取(速度相对较快)


二、Docker安装



准备工作:


image.png


1.下载 Docker软件包


1)安装基础包


[root@Docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2


2)配置Docker的yum 源


[root@Docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Docker ~]# yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo


3)安装Docker


  • 我们可以使用yum list docker-ce --showduplicates | sort -r命令来查看Docker 的所有版本。


[root@Docker ~]# yum -y install docker-ce-19.03.12 docker-ce-cli-19.03.12


4)启动Docker 并验证


[root@Docker ~]# systemctl enable docker --now                    # 配置开机自启并启动
[root@Docker ~]# docker version                           # 查看 Docker 版本


image.png


5)配置Docker加速器


[root@Docker ~]# cat <<END > /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://ipbtg5l0.mirror.aliyuncs.com"
    ]
}
END
[root@Docker ~]# systemctl daemon-reload && systemctl restart docker        # 重启 Docker


2.Docker基础命令介绍


下面我们主要介绍镜像和容器相关的命令,因为仓库相关命令不是很多,也就是 pull push等命令。


1)镜像相关命令


1)查看当前Docker的所有镜像


// 因为我们的 Docker 是刚安装的. 所以没有显示任何镜像
[root@Docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE


  • 上面输出结果分别是:镜像名、镜像对应的标签、镜像ID号、创建时间、镜像大小。


2)查看Docker仓库中的busybox镜像


[root@Docker ~]# docker search busybox
NAME                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
busybox                   Busybox base image.                             2447                [OK]                
progrium/busybox                                                          70                                      [OK]
radial/busyboxplus        Full-chain, Internet enabled, busybox made f…   45                                      [OK]
......


  • 我们可以使用search来搜索Docker仓库中的镜像,上面输出结果分别是:镜像名、描述信息、标星、官方镜像、自动构建。


3)拉取busybox镜像


[root@Docker ~]# docker pull busybox:1.28.4               # 指定镜像版本号拉取 (latest 表示最新版)
1.28.4: Pulling from library/busybox                  # 从这个仓库进行拉取
07a152489297: Pull complete                       # 拉取完成
Digest: sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47   # 这就是镜像的层 (也算是个标识符)
Status: Downloaded newer image for busybox:1.28.4           # 下载的新镜像名称和版本号
docker.io/library/busybox:1.28.4                    # 完整仓库地址


image.png


4)给镜像进行打标签(类似于别名操作)


[root@Docker ~]# docker tag busybox:1.28.4 testbusybox:test


image.png


tag 命令在有些时候还是蛮关键的,比如说我们要拉取的镜像在国外,但是由于网络原因,导致我们无法进行拉取,此时我们可以在国内的镜像仓库拉取个同样的镜像,然后来使用tag命令来进行打标签操作,改成要拉取国外镜像的名称即可。


5)将busybox镜像导出


[root@Docker ~]# docker save -o busybox.tgz busybox:1.28.4


image.png


6)将busybox镜像导入


[root@Docker ~]# docker load -i busybox.tgz


image.png


  • docker rmi:通过镜像名进行删除(加上-f 可以实现基于镜像ID删除)


2)容器相关命令


1)创建—个容器


  • -i:表示让容器的输入保持打开;-t:表示给容器分配一个伪终端(就是我们后面加的

        / bin/bash )

  • docker ps -a:表示查看所有运行的容器(不管容器处于任何状态,都会进行显示)


2)启动一个容器


[root@Docker ~]# docker start busybox
[root@Docker ~]# docker ps                          # 查看当前处于运行状态的容器


image.png


  • 当我们要关闭容器时,可以使用stop;重启时,可以使用restart命令来进行操作。


3)删除容器


[root@Docker ~]# docker stop busybox
[root@Docker ~]# docker rm busybox                      # 我们可以通过容器名或者容器 ID 来进行删除


image.png


4)直接运行容器


[root@Docker ~]# docker run -it -d --name busybox busybox:1.28.4 /bin/sh


image.png


  • docker exec -it busybox /bin/sh命令的作用就是可以使我们进入容器内。


3.使用Docker 实现 Nginx网站


[root@Docker ~]# docker pull nginx:1.18.0
[root@Docker ~]# docker images
[root@Docker ~]# docker run -d --name nginx -p 1888:80 -v /zhangsan:/usr/share/nginx/html/ nginx:1.18.0
[root@Docker ~]# echo "Hello 河北彭于晏" > /zhangsan/index.html
[root@Docker ~]# curl 127.0.0.1:1888


image.png


  • -p∶指定容器运行时的端口(前面是宿主机端口,后面是容器内端口;-Р这单个字母是用来让容器实现|随机端口映射的)
  • -v∶指定数据卷,相当于是挂载命令,我们可以将宿主机的目录挂载到容器内(可以增加多个-v来配置多个数据卷)


好了,本篇文章到这里就要结束了,如在操作期间遇到问题,或要更正博主的文章,可以在评论区进行留言。

相关文章
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
23 2
|
1月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
83 5
|
7天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
13天前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
49 2
|
20天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
31 3
|
25天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
45 2
|
1月前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
1月前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
1月前
|
Ubuntu Linux 虚拟化
Docker入门实践(一)
Docker入门实践(一)
|
1月前
|
Ubuntu Linux 应用服务中间件
Docker容器入门实战
Docker容器入门实战