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

文章同步在公众号: 萌萌哒草头将军,欢迎关注!

🚀 Docker 简介

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

使用 Docker 的好处包括:

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

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

🚀 Docker 安装

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

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

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

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

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

vbnet 复制代码
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目录:

makefile 复制代码
进入:
C:\Windows\System32\netsh
# 运行
winsock reset
cmd 复制代码
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: 仅展示运行中的镜像

powershell 复制代码
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 文件
Dockerfile 复制代码
FROM node:14.4-alpine3.12.1

COPY package.json  ./

RUN npm install

COPY ./ .

RUN npm run build
  1. 使用 docker build
cmd 复制代码
# 命令格式如下:
# docker build -tag <镜像名称>:<标签>
docker build -t myImage:0.0.1
拉取镜像

Docker Hub 或其他 Docker Registry 拉取镜像

cmd 复制代码
docker pull registry_url/repository:tag

删除镜像

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

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

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

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

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

导出和导入镜像

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

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

上传镜像

bash 复制代码
# 登录docker
docker login
# 标记镜像
docker tag local_image:tag registry_url/repository:tag
# 上传镜像
docker push registry_url/repository:tag

🎉 2.容器的一些操作

创建容器

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

cmd 复制代码
docker create --name mycontainer myimage:tag

创建并运行容器

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

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

启动容器

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

sql 复制代码
docker start mycontainer

停止容器

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

arduino 复制代码
docker stop mycontainer

重启容器

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

cmd 复制代码
docker restart mycontainer

列出容器

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

docker ps

列出所有容器

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

css 复制代码
docker ps -a

进入容器

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

bash 复制代码
docker exec -it mycontainer bash

删除容器

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

bash 复制代码
docker rm mycontainer

查看容器日志

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

docker logs mycontainer

🎉 3 数据卷的操作

创建数据卷

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

cmd 复制代码
docker run -v /path/on/host:/path/in/container myimage

列出数据卷

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

cmd 复制代码
docker volume ls

查看数据卷信息

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

cmd 复制代码
docker volume inspect myvolume

删除数据卷

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

cmd 复制代码
docker volume rm myvolume

挂载数据卷到容器

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

cmd 复制代码
docker run -v myvolume:/path/in/container myimage
  1. 备份和恢复数据卷:可以使用工具或命令行将数据卷的内容备份到本地文件系统,然后在需要时进行恢复。
cmd 复制代码
# 备份
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. 共享数据卷:可以将同一个数据卷同时挂载到多个容器,实现容器之间的数据共享。
cmd 复制代码
docker run -v myvolume:/path/in/container1 myimage1
docker run -v myvolume:/path/in/container2 myimage2

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

🚀 最后

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

相关推荐
小安运维日记5 分钟前
CKA认证 | Day3 K8s管理应用生命周期(上)
运维·云原生·容器·kubernetes·云计算·k8s
陈小肚12 分钟前
k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
docker·容器·kubernetes
A陈雷29 分钟前
springboot整合elasticsearch,并使用docker desktop运行elasticsearch镜像容器遇到的问题。
spring boot·elasticsearch·docker
小扳34 分钟前
Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
运维·spring boot·后端·mysql·spring cloud·docker·容器
politeboy1 小时前
关于k8s中镜像的服务端口被拒绝的问题
云原生·容器·kubernetes
weixin_438197382 小时前
K8S创建云主机配置docker仓库
linux·云原生·容器·eureka·kubernetes
南猿北者9 小时前
docker Network(网络)
网络·docker·容器
sam-12310 小时前
k8s上部署redis高可用集群
redis·docker·k8s
Fanstay98511 小时前
在Linux中使用Nginx和Docker进行项目部署
linux·nginx·docker
ggaofeng12 小时前
通过命令学习k8s
云原生·容器·kubernetes