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代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
94 2
|
2月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
92 5
|
3天前
|
Ubuntu 应用服务中间件 nginx
docker入门-快速学会docker
本文介绍了Docker的基本概念,包括镜像、容器、tar文件、Dockerfile和仓库,并通过实际操作演示了如何使用Docker。从拉取Nginx镜像、运行容器、修改容器内容、保存容器为新镜像,到使用Dockerfile构建自定义镜像,最后讲解了如何保存和恢复镜像。文中还推荐了一个在线实践平台Play with Docker,方便读者快速上手Docker。
27 4
docker入门-快速学会docker
|
2月前
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
28天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
1月前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
1月前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
79 2
|
1月前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
54 3
|
29天前
|
Kubernetes Linux Docker
容器化技术Docker入门与实践
容器化技术Docker入门与实践
52 0
|
2月前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
54 2