网络上
Docker
的文档杂乱无章,本文以一文的形式,记录我使用Docker的经历,希望以实践经历为引,能帮助大家以最快的速度学会Docker
的使用。
Docker
从17.03
版本之后分为 CE(Community Edition
: 社区版) 和 EE(Enterprise Edition
: 企业版),我们用社区版就可以了。友情提示:如果想仅靠一篇文章就精通
Docker
,那是不可能的。
本文为作者初学时接触的知识汇总,可能较为杂乱或存在一些问题,有一些更好的知识点整理文档可供您阅读:
Docker
常见的有两种形式,一种为docker引擎,无可视化页面,一般称为 Docker Engine
;另一种是含有可视化界面的,称为 Docker Desktop
。
Linux
建议安装 Docker Engine
;Windows
安装 Docker Desktop
。
Docker Engine 官方文档:https://docs.docker.com/engine/install/
Docker Desktop 官方文档:https://docs.docker.com/desktop/
- 一键安装
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服务,即可执行命令验证
shdocker version # 或 docker info
如未报错,且成功输出docker的client及server信息,说明安装成功。
若安装失败,请检查系统版本及各种环境,主要原因可能是系统版本过低,请升级系统或更换机器。
详情可参考:【菜鸟教程:CentOS Docker 安装】
另外手动安装方式
shellsudo 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安装Docker是安装Docker Desktop面板,其会自动安装Linux虚拟机和Docker容器,所以对系统版本要求较高。
- 官方文档翻译:
详情可参考:
这里只介绍了最最常用的几个基础命令,学习更多请阅读:【docker基础命令学习】
在Centos系统上,Docker服务的启停可以直接使用systemctl相关命令,详情如下
shsystemctl start docker
shsystemctl stop docker
shsystemctl restart docker
shsystemctl status docker
运维命令主要用于Docker内部服务的运维工作,所以命令大多数由Docker提供的。
shdocker 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
shdocker 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
shdocker pull hello-world:latest
拉取名为
mereith/van-blog
,版本为latest
的镜像。
shdocker run hello-world:latest
自定义容器名称启动镜像
shdocker run --name=hello hello-world:latest
shdocker 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
,此时可以使用强制删除
- 强制删除镜像
shdocker rmi -f mereith/van-blog:latest
- 拓展:删除全部镜像。尽量不要使用!!!
shdocker rmi -f $(docker images -qa)
docker images -qa:查询全部镜像的ID
shdocker 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:镜像服务名,亦唯一,可用于启停、查看日志等
shdocker 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
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!