2022-09-11
班门弄斧
00
请注意,本文编写于 789 天前,最后修改于 183 天前,其中某些信息可能已经过时。

目录

前言
前排提示
Docker常识
Docker安装
Linux
Windows
常用命令
启停命令
服务启动
服务停止
服务重启
服务状态查看
运维命令
查看已有镜像
指定镜像启动容器
查看正在运行的镜像容器
查看服务日志
删除容器

前言

网络上 Docker 的文档杂乱无章,本文以一文的形式,记录我使用Docker的经历,希望以实践经历为引,能帮助大家以最快的速度学会 Docker 的使用。

Docker17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

友情提示:如果想仅靠一篇文章就精通 Docker ,那是不可能的。

前排提示

本文为作者初学时接触的知识汇总,可能较为杂乱或存在一些问题,有一些更好的知识点整理文档可供您阅读:

Docker常识

  • 镜像:软件/程序打包后的文件;
  • 容器:镜像启动后的实例,一个镜像可以启动多个容器;

Docker安装

Docker 常见的有两种形式,一种为docker引擎,无可视化页面,一般称为 Docker Engine;另一种是含有可视化界面的,称为 Docker Desktop

Linux 建议安装 Docker EngineWindows 安装 Docker Desktop

Docker Engine 官方文档:https://docs.docker.com/engine/install/

Docker Desktop 官方文档:https://docs.docker.com/desktop/

Linux

  • 一键安装
sh
# 已失效 curl -sSL https://get.daocloud.io/docker | sh

若使用上面的命令报错,说明该脚本已经失效了,可以使用下面的命令

sh
# 正常使用 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh --dry-run

安装完成后运行systemctl start docker启动docker服务,即可执行命令验证

sh
docker version # 或 docker info

如未报错,且成功输出docker的client及server信息,说明安装成功。

若安装失败,请检查系统版本及各种环境,主要原因可能是系统版本过低,请升级系统或更换机器。

详情可参考:【菜鸟教程:CentOS Docker 安装

另外手动安装方式

shell
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Windows

Windows安装Docker是安装Docker Desktop面板,其会自动安装Linux虚拟机和Docker容器,所以对系统版本要求较高。

  • 官方文档翻译:

image.png

详情可参考:

常用命令

这里只介绍了最最常用的几个基础命令,学习更多请阅读:【docker基础命令学习

启停命令

在Centos系统上,Docker服务的启停可以直接使用systemctl相关命令,详情如下

服务启动

sh
systemctl start docker

服务停止

sh
systemctl stop docker

服务重启

sh
systemctl restart docker

服务状态查看

sh
systemctl status docker

运维命令

运维命令主要用于Docker内部服务的运维工作,所以命令大多数由Docker提供的。

查看已有镜像

sh
docker images

输出:

REPOSITORY TAG IMAGE ID CREATED SIZE mereith/van-blog latest e4850f477e56 2 days ago 985MB mongo 4.4.16 ef85efd58fca 9 days ago 438MB

搜索镜像

sh
docker search --limit 5 hello-world

搜索镜像仓库中名为hello-world的镜像,可能有众多同名镜像,--limit 5表示显示前5个(根据Stars数)。

输出示例

NAME DESCRIPTION STARS OFFICIAL > AUTOMATED hello-world Hello World! (an example of minimal Dockeriz… 1843 [OK] rancher/hello-world 4 okteto/hello-world 0 tacc/hello-world 0 armswdev/c-hello-world Simple hello-world C program on Alpine Linux… 0

拉取镜像

sh
docker pull hello-world:latest

拉取名为mereith/van-blog,版本为latest的镜像。

指定镜像启动容器

sh
docker run hello-world:latest

自定义容器名称启动镜像

sh
docker run --name=hello hello-world:latest

删除镜像

sh
docker rmi hello-world:latest

移除名为mereith/van-blog,版本为latest的镜像。

当某个镜像启动后,在不停止docker容器的情况下,即便该镜像的运行已经停止,也无法通过以上命令删掉,会报类似占用的错:Error response from daemon: conflict: unable to remove repository reference "hello-world:latest" (must force) - container 2360a19aa46f is using its referenced image feb5d9fea6a5,此时可以使用强制删除

  • 强制删除镜像
sh
docker rmi -f mereith/van-blog:latest
  • 拓展:删除全部镜像。尽量不要使用!!!
sh
docker rmi -f $(docker images -qa)

docker images -qa:查询全部镜像的ID

查看正在运行的镜像容器

sh
docker ps

输出:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 03b301b6bf8e mereith/van-blog:latest "sh entrypoint.sh" 13 hours ago Up 13 hours 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp vanblog_vanblog_1 639eb6bd551e mongo:4.4.16 "docker-entrypoint.s…" 13 hours ago Up 13 hours >0.0.0.0:27017->27017/tcp, :::27017->27017/tcp vanblog_mongo_1
  • CONTAINER ID:镜像运行容器ID,可用于启停、查看日志等
  • IMAGE:镜像名称及版本
  • CREATED:镜像初始化时长
  • STATUS:镜像状态及时长:可分为已启动、正在启动等
  • PORTS:相关端口及映射
  • NAMES:镜像服务名,亦唯一,可用于启停、查看日志等

查看服务日志

sh
docker logs -n 50 -f vanblog_vanblog_1 # 等效于 docker logs --tail 50 -f vanblog_vanblog_1

作用:查看vanblog_vanblog_1镜像最后50行日志 其中vanblog_vanblog_1为上述docker ps查出的NAMES,也可以使用CONTAINER ID

删除容器

与删除镜像操作一致,只是把rmi改为rm即可。

sh
# 03b301b6bf8e为容器ID,也可以使用容器NAME docker rm 03b301b6bf8e
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!