Docker入门到放弃,看这篇就够了🚀🚀🚀

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker入门到放弃,看这篇就够了🚀🚀🚀


🚀 Docker 简介

Docker 是一种开源的容器化平台,用于构建、运行、分享应用程序

使用 Docker 的好处包括:

  • 「便携性」:容器化的应用程序可以在不同的环境中运行,无论是开发、测试还是生产环境,从而提供了更高的可移植性和一致性。
  • 「隔离性」:Docker 容器提供了隔离的运行环境,使应用程序之间相互隔离,避免了潜在的冲突和依赖关系问题。
  • 「资源利用率」:Docker 的轻量级容器共享主机操作系统的内核,因此可以更高效地利用系统资源。
  • 「快速部署」:Docker 可以快速地创建、运行和销毁容器,使应用程序的部署过程更加简化和高效。
  • 「可扩展性」:Docker 允许水平扩展应用程序,通过在多个容器实例之间分发负载来提高性能和可靠性。

说到隔离性,你可能会想到虚拟机,在这个方面,他们的确很像,但是不同的是,Docker的多个镜像之间是共用宿主机的操作系统和硬件的,而每个虚拟机都有属于自己的操作系统。

🚀 Docker 安装

在官网下载对应的安装包:https://www.docker.com/

安装之后会重启电脑,如果你是 window 平台,那么你还需要安装 wsl

管理员身份运行 cmd ,然后运行 wsl --install

如果启动之后仍报错,那么需要运行 wsl --update

如果这时报错如下问题,你可以在命令行运行:netsh winsock reset

An unexpected error was encountered while executing a WSLcommand. Common causes include access rights issues, which occurafter waking the computer or not being connected to your domain/active directory.
Please try shutting WSL down (wsl --shutdown) and/or rebooting yourcomputer. If not sufficient, WSL may need to be reinstalled fully. As alast resort, try to uninstall/reinstall Docker Desktop.
lf the issue persistsplease collect diagnostics and submit an issue ([Overview](https://link.zhihu.com/?target=https%3A//docs.docker.com/desktop/troubleshoot/overview/%23diagnose-from-theterminal)). Error details:2 errors occurred:

如果报错: 'netsh' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

你需要在控制台进入netsh目录:

进入:
C:\Windows\System32\netsh
# 运行
winsock reset
C:\Program Files\Docker\Docker>C:\Windows\System32\netsh
netsh>netsh winsock reset
找不到下列命令: netsh winsock reset。
netsh>winsock reset
成功地重置 Winsock 目录。
你必须重新启动计算机才能完成重置。
netsh>

🚀 Docker 的一些概念

🎉 1. 镜像

镜像是容器的构建模板。它包含了一个完整的文件系统,以及运行应用程序所需的所有设置、依赖项和代码。镜像是只读的,可以用来创建多个容器实例。

🎉 2. 容器

Docker 使用容器来打包应用程序及其所有依赖项,包括操作系统、库、工具和运行时环境。容器是一个独立、轻量级的可执行单元,可以在任何地方运行。

🎉 3. 镜像仓库

镜像仓库是用于存储和分发 Docker 镜像的中央存储库。Docker Hub 是一个公共的镜像仓库,你可以在其中找到许多官方和社区创建的镜像。此外,你还可以搭建私有的镜像仓库来存储和分享自己创建的镜像。

🎉 4. 数据卷

数据卷是一种用于在 Docker 容器和主机之间持久化存储数据的机制。数据卷可以独立于容器存在,并且在容器被删除后数据仍然保留。

🎉 5. Docker 引擎

Docker 引擎是 Docker 的核心组件,负责构建、运行和管理容器。它使用容器化技术来隔离不同的应用程序和进程,使它们可以在同一台主机上独立运行。

🚀 Docker 的一些操作

🎉 1.镜像的一些操作

查看镜像

安装成功后,运行docker images: 仅展示运行中的镜像

C:\Users\98480>docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
C:\Users\98480>

构建镜像

镜像的获取方法有两种,一种是通过 docker build 构建,

另一种是从镜像仓库中拉取。

使用 Dockerfile 构建自己镜像

Dockerfile 是一种文本文件,用于定义 Docker 镜像的构建过程。你可以在 Dockerfile 中编写一系列指令,用于指定基础镜像、安装软件包、复制文件等操作。然后使用 docker build 命令根据 Dockerfile 构建镜像。以下是构建镜像的基本步骤:

  1. 创建 Dockerfile 文件
FROM node:14.4-alpine3.12.1
COPY package.json  ./
RUN npm install
COPY ./ .
RUN npm run build
  1. 使用 docker build
# 命令格式如下:
# docker build -tag <镜像名称>:<标签>
docker build -t myImage:0.0.1
拉取镜像

Docker Hub 或其他 Docker Registry 拉取镜像

docker pull registry_url/repository:tag

删除镜像

如果你想删除镜像可以使用

docker rmi ubuntu:latest
# 强制删除一个镜像
docker rmi -f ubuntu:latest

正常情况下,如果要删除的镜像正在被一个或多个容器使用,或者有基于它的其他镜像存在,docker rmi 命令会拒绝删除。

使用 -f 标志可以强制删除镜像,即使它有相关的容器或其他镜像。

请注意,这可能导致正在运行的容器出现问题,因为它们可能无法找到所需的镜像。

导出和导入镜像

使用 docker save 命令可以将镜像保存为 tar 归档文件,使用 docker load 命令可以从 tar 归档文件中加载镜像

# 到处镜像 -o为 --output
docker save -o myimage.tar myimage:tag
# 导入镜像 -i为 --input
docker load -i myimage.tar

上传镜像

# 登录docker
docker login
# 标记镜像
docker tag local_image:tag registry_url/repository:tag
# 上传镜像
docker push registry_url/repository:tag

🎉 2.容器的一些操作

创建容器

使用 docker create 命令可以创建一个新的容器,但不会自动启动它

docker create --name mycontainer myimage:tag

创建并运行容器

使用 docker run 命令可以基于镜像创建和运行容器

# 该命令会在前台打印信息
docker run --name mycontainer myimage:tag
# -d为后台运行,不会打印运行信息
docker run -d --name mycontainer myimage:tag

启动容器

使用 docker start 命令可以启动一个已创建但未运行的容器

docker start mycontainer

停止容器

使用 docker stop 命令可以停止正在运行的容器

docker stop mycontainer

重启容器

使用 docker restart 命令可以重启一个正在运行的容器

docker restart mycontainer

列出容器

使用 docker ps 命令可以列出当前正在运行的容器

docker ps

列出所有容器

使用 docker ps -a 命令可以列出所有的容器,包括运行中和已停止的容器

docker ps -a

进入容器

使用 docker exec 命令可以在运行中的容器内执行命令

docker exec -it mycontainer bash

删除容器

使用 docker rm 命令可以删除指定的容器

docker rm mycontainer

查看容器日志

使用 docker logs 命令可以查看容器的日志输出

docker logs mycontainer

🎉 3 数据卷的操作

创建数据卷

可以使用 -v--volume 参数来创建数据卷并将其挂载到容器中

docker run -v /path/on/host:/path/in/container myimage

列出数据卷

可以使用 docker volume ls 命令列出所有的数据卷

docker volume ls

查看数据卷信息

可以使用 docker volume inspect 命令查看特定数据卷的详细信息

docker volume inspect myvolume

删除数据卷

可以使用 docker volume rm 命令删除指定的数据卷

docker volume rm myvolume

挂载数据卷到容器

可以使用 docker run 命令的 -v--volume 参数将数据卷挂载到容器中

docker run -v myvolume:/path/in/container myimage
  1. 备份和恢复数据卷:可以使用工具或命令行将数据卷的内容备份到本地文件系统,然后在需要时进行恢复。
# 备份
docker run --rm -v myvolume:/data -v /path/to/backup:/backup busybox tar cvf /backup/backup.tar /data
# 恢复
docker run --rm -v myvolume:/data -v /path/to/backup:/backup busybox tar xvf /backup/backup.tar -C /data
  1. 共享数据卷:可以将同一个数据卷同时挂载到多个容器,实现容器之间的数据共享。
docker run -v myvolume:/path/in/container1 myimage1
docker run -v myvolume:/path/in/container2 myimage2

数据卷是以独立于容器的方式存在的,因此即使删除容器,数据卷的内容仍然保留。这使得数据卷非常适合用于持久化存储和与容器无关的数据。

🚀 最后

好了,今天我们就分享到这了,本篇分享的是一些基础操作,下篇文章,将会详细介绍一些高级功能,敬请期待!!!

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
15天前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
56 5
|
2月前
|
NoSQL 关系型数据库 MySQL
docker部署jumpserver及入门
docker部署jumpserver及入门
|
23天前
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
7天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
13天前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
15天前
|
Ubuntu Linux 虚拟化
Docker入门实践(一)
Docker入门实践(一)
|
16天前
|
Oracle 关系型数据库 Linux
Docker入门和安装
这篇文章提供了Docker的入门指南和在CentOS系统上安装Docker的详细步骤。
31 0
Docker入门和安装
|
26天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
1月前
|
运维 Cloud Native Docker
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
|
1月前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
55 4