docker010快速上手使用

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 images

交互式运行

docker run -it 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 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 @ 2022-06-17 21:50  即便那总是过去  阅读(49)  评论(0编辑  收藏  举报