Docker初步使用

文章目录

基础操作

Docker 包括三个基本概念

  • 镜像Image
  • 容器Container
  • 仓库Repository

用操作系统类比,镜像就是打包好的iso文件;容器就是用iso文件安装好的操作系统;仓库就是下载iso的网站。

所以,使用Docker的第一步,就是用docker pull下载镜像,通过help可查看其命令格式

bash 复制代码
>docker pull --help
Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST]

其中,NAME即镜像名称,包括仓库地址和仓库名:

  • 仓库地址格式:<域名/IP>[:端口号],默认地址是Docker Hub
  • 仓库名格式:<用户名>/<软件名>,在Docker Hub中默认为library,也就是官方镜像。

示例

下面以ubuntu20.04为例:

bash 复制代码
>docker pull ubuntu:20.04
docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
527f5363b98e: Pull complete
Digest: sha256:f2034e7195f61334e6caff6ecf2e965f92d11e888309065da85ff50c617732b8
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

What's Next?
  View summary of image vulnerabilities and recommendations → docker scout quickview ubuntu:20.04

如果是在Windows中报出无法连接的错误,可以打开桌面版Docker之后重试。

由于未给出仓库地址,所以从Docker Hub获取镜像,最终从官方镜像library/ubuntu仓库中获取标签为20.04的镜像。

下载时列出的哈希串表示每一层ID的前12位,结束后给出完整的哈希摘要,用以保证下载正确。

最后,还贴心第给出了下一步应该做什么的提示,按照指示,来预览一下ubuntu20.04

bash 复制代码
docker scout quickview ubuntu:20.04
INFO New version 1.2.2 available (installed version is 0.20.0)
level=error msg="Status: login using Docker Desktop or 'docker login' command: no credential found for \"index.docker.io\", Code: 1"

下载完成后,就可以通过run来启动这个镜像中的指令了,例如

bash 复制代码
>docker run --rm ubuntu:20.04 cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

cat是大家熟悉的文本查看指令,可见docker run的确执行了ubuntu中的程序。其中,run后面的--rm表示执行完命令后删除容器。

docker run当然也可以直接进入容器的命令行bash shell

bash 复制代码
>docker run -it --rm ubuntu:20.04 bash
root@b29634ace3cf:/# exit
exit

其中,-it中的i表示交互式执行,t表示进入终端。进入之后什么都没做,用exit退出了终端。

通过image ls可以列出镜像,目前只有一个ubuntu20.04。

复制代码
>docker image ls
REPOSITORY       TAG       IMAGE ID       CREATED        SIZE
ubuntu           20.04     f78909c2b360   2 weeks ago    72.8MB

通过docker ps -a可列出所有容器,由于在创建Ubuntu容器时使用了--rm,所以目前的容器是空的。若重新运行一次Ubuntu,但并不使用--rm参数,则ps -a会返回这个容器。

bash 复制代码
>docker run ubuntu:20.04
>docker ps -a
CONTAINER ID   IMAGE        COMMAND     CREATED       STATUS
3f48dfc691b5   ubuntu:20.04 "/bin/bash" 4 seconds ago Exited (0)

若想将其删除,如在运行可先用stop停止运行,再用rm删除。

bash 复制代码
>docker stop 3f48dfc691b5
3f48dfc691b5
>docker rm 3f48dfc691b5

这回再运行ps -a就不会显示这个容器了。

相关推荐
小猿姐8 小时前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops
阿里云云原生1 天前
深入内核:拆解 OpenTelemetry eBPF 探针如何优雅地“透视”多语言微服务?
云原生
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn861 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_1 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉2 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造