docker快速上手使用

docker安装

安装docker,如果不想折腾homebrew或是apt这类包管理工具,推荐直接安装docker的desktop版本,安装好后在命令行或是通过gui均可使用,官方下载链接
安装好后执行经典--version

docker --version

docker中的名词含义

docker中的一个核心概念是image(镜像),常被比喻作一个集装箱。每个image有id、作者、创建时间、大小等。image又像是个git仓库或是mvn仓库,第一次使用时从mirros仓库中pull,操作更改后可以进行commit保存,需要同步到远端时进行push。

每个镜像运行时,有个容器container的概念,和hadoop yarn的container概念类似。

安装docker后,查看当前有什么image,可以执行

docker images

以我个人的机器为例,输出如下,可以看到有REPOSITORY,TAG,IMAGE ID等关键信息:

REPOSITORY TAG IMAGE ID CREATED SIZE
mnadeem/boot-otel-tempo-provider1 0.0.1-SNAPSHOT 32914b1c7cbe 5 months ago 168MB
mnadeem/boot-otel-tempo-api 0.0.1-SNAPSHOT 86f67a32fc3d 5 months ago 148MB
mnadeem/boot-otel-tempo-docker 0.0.1-SNAPSHOT 539de8d31617 5 months ago 129MB
mnadeem/boot-otel-tempo-docker latest 539de8d31617 5 months ago 129MB
postgres latest cdbebe091601 5 months ago 374MB
prom/prometheus latest a3d385fc29f9 6 months ago 201MB
dpage/pgadmin4 latest b19921dd09db 6 months ago 270MB
mirrors.tencent.com/todacc/rec_index_service_compile 1.1.6 2462cdaa0331 7 months ago 8.53GB
mysql 8.0 c0cdc95609f1 13 months ago 556MB

REPOSITORY: 仓库,类似git的仓库或是maven的groupId+artifactId,但也有image name的概念,相比于image id更human readable。

在docker命令中,如docker run, 一般需要指定镜像,可以通过image id或是name。如果通过name指定,这个name需要是能具体指定某个版本的image的全名,格式是REPOSITORY:TAG,当然如果TAG是默认值latest的话,可以省略。

例如以下使用命令,通过指定name的方式来运行某个镜像:

docker run mirrors.tencent.com/todacc/rec_index_service_compile:1.1.6

如果只指定name不是全名会报错,提示本地找不到镜像rec_index_service_compile

docker run rec_index_service_compile

也可以用image id指定镜像,如:

docker run 2462cdaa0331

REPOSITORY仓库名有特定的格式。

以rec_index_service_compile为例,其全名是mirrors.tencent.com/todacc/rec_index_service_compile,mirrors.tencent.com是镜像仓库服务,todacc是命名空间或组的概念,rec_index_service_compile是具体的仓库名。REPOSITORY名也可以进行默认省略,像最后一行的mysql那样。

TAG: 类似于git里的tag,版本的意思,使用仓库名指定image时,如果不是latest时需要指定版本。
IMAGE ID: 镜像id,这个比较好理解。

会用到的docker命令

安装镜像

docker pull mirrors.tencent.com/todacc/rec_index_service_compile:1.1.6 /bin/bash

查看某个镜像的详细信息

docker inspect mirrors.tencent.com/todacc/rec_index_service_compile:1.1.6

查看本地镜像

docker images

交互式运行

docker run -it mirrors.tencent.com/todacc/rec_index_service_compile:1.1.6 /bin/bash

退出容器

docker exit

继续上次退出的容器,之前的修改依然保留。

docker ps -a // 确定container id
docker start ${container id}
docker attach ${container id}

查看正在运行的容器

docker ps

只是连接断开后重新进入docker,先使用docker ps确定运行中的container id

docker attach ${container id}

保存本次更改,类似git commit

docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
  • -m: 提交的描述信息
  • -a: 指定镜像作者
  • e218edb10161:容器 ID
  • runoob/ubuntu:v2: 指定要创建的目标镜像名

更新发布到远端

docker push mirrors.tencent.com/myspace/video_rec_annalgo:dev

这一步可能会遇到denied: requested access to the resource is denied的错误

首先检查是否已进行docker login,如果是发布到其他仓库(非默认),需要login 指定的服务,如我这里发布到腾讯的,执行

docker login --username xxx --password xxx mirrors.tencent.com

如果登录后依然出现这个问题,需要到镜像服务中检查下要发布到仓库命名空间,如这里的myspace是否有足够的权限。

posted @   即便那总是过去  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示