三天入门 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来配置多个数据卷)


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

相关文章
|
4天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
1天前
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
14天前
|
运维 Cloud Native Docker
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
|
9天前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
29 4
|
10天前
|
关系型数据库 Linux 虚拟化
Docker入门基础实战
Docker入门基础实战
|
18天前
|
Kubernetes Cloud Native 开发者
云原生入门:从Docker到Kubernetes的旅程
【9月更文挑战第16天】 本文将带你进入云原生的世界,从理解Docker容器的基础开始,逐步深入到Kubernetes集群管理。我们将通过简单的代码示例和实际操作,探索这两个关键技术如何协同工作,以实现更高效、灵活的应用程序部署和管理。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供清晰的指导和实用的知识。
51 11
|
2月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
84 6
|
2月前
|
运维 开发者 Docker
Docker容器部署实战:从入门到精通
【8月更文挑战第31天】 本文将引导读者了解如何使用Docker容器技术来简化和加速应用程序的部署过程。文章将通过实际案例探讨Docker的基本概念、架构,以及如何创建、管理和维护Docker容器。我们将通过详细的代码示例和操作指导,展示如何在本地环境或云基础设施上部署应用,并讨论如何克服在实际部署中可能遇到的挑战。无论你是DevOps工程师、软件开发者还是IT专业学生,本文都将为你提供深入理解并有效使用Docker的全面指南。
|
2月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【8月更文挑战第31天】 在数字化转型的浪潮中,云原生技术成为推动现代软件开发的关键力量。本文将引导读者理解云原生的基本概念,通过Docker和Kubernetes的实际应用示例,展示如何在云平台上部署和管理容器化应用。我们将一起探索服务编排、持续集成和微服务架构的实践之路,旨在为初学者揭开云原生技术的神秘面纱,并激发对这一前沿领域的深入探索。
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【8月更文挑战第31天】 在云原生的世界里,容器技术是基石。本文将带你了解如何通过Kubernetes和Docker这两个强大的工具,搭建起你的云原生应用架构。我们将一起探索它们如何相互配合,提升开发与运维的效率。准备好了吗?让我们启航,探索云原生的奥秘!
下一篇
无影云桌面