docker 基本命令

镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 列出本机的所有镜像文件
docker image ls
# 或
docker images

# 删除镜像文件
docker image rm [imageName]

# 搜索官方仓库
docker search hello-world

# 拉取官方仓库的镜像,默认拉取 library 组的镜像文件。如果没有指定版本默认拉取最新版
docker image pull hello-world
# 如果想拉取指定版本,可以打开 https://hub.docker.com/ 搜索目标镜像,查看它的tags
# 在页面可直接复制指定版本的pull指令
docker pull gitlab/gitlab-ce:12.10.13-ce.0

# 创建镜像
# 根据已有的容器创建镜像
docker commit -m "提交信息" -a "作者" [容器ID] [保存后的镜像名称]
docker commit -m "优化网络配置" -a "Astian" 10d6d275eae3 my-gitea
# 基于本地模板导入
cat gitea:2.0.tar.gz | docker import - [导入后的镜像名称]

# 保存镜像文件
docker save -o [文件保存路径] [目标镜像名称:tag]
docker save -o my-gitea.tar my-gitea:latest

# 载入镜像文件
docker load < [镜像文件]
docker load < my-gitea.tar

# 上传镜像到官方仓库(需要先登录)
docker push [镜像完整tag]
# 最好先设定镜像tag再上传
docker tag my-gitea:latest astian/my-gitea:latest
docker push astian/my-gitea:latest

容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 新建容器并运行(run命令相当于create + start命令的组合),每运行一次都会基于指定镜像新建一个容器
docker container run hello-world
# run 有几个常用的参数: -i -t -d --name -p
# d:表示在后台运行
# it:组合使用可以在镜像运行后进入容器的命令行界面
# --name:指定容器别名,指定后在操作容器时可以用容器别名代替容器ID[containerId]
# -p:映射宿主端口:容器端口,例如:20001:6379
# -m:限制容器的内存,例如:-m 1G -m 500M
# -v:映射宿主文件:容器文件 ,例如: -v /home/app/conf/redis.conf:/etc/redis/redis.conf

# 查看本机运行的容器列表
docker container ls
docker ps
# 查看本机所有的容器列表
docker container ls -a
docker ps -a

# 停止容器,停止后依然会占用硬盘空间
docker stop [containerId or containerName]
docker kill [containerId or containerName]

# 删除容器,删除后便不会占用硬盘空间,如果需要删除运行中的容器,需要加-f参数
docker rm [containerId or containerName]

# 运行容器,运行已存在的容器
docker start [containerId or containerName]

# 查看运行状态下的容器的日志
docker logs [containerId or containerName]
# 实时运行状态下的容器的日志,需要按Ctrl+C退出命令
docker logs -f [containerId or containerName]
# 查看末尾100行的日志
docker logs -n 100 [containerId or containerName]
# 查看指定时间后的日志
docker logs --since 2013-01-02T13:23:37Z [containerId or containerName]
# 查看指定时间前的日志
docker logs --until 2013-01-02T13:23:37Z [containerId or containerName]

# 进入容器,需要run容器时没有添加 -it 参数,可以用这个命令进入容器,执行shell命令
# 容器内能执行的shell命令有限制
docker exec -it [containerId or containerName] /bin/bash

# 从容器内复制文件到宿主指定目录,例如 ./data
docker cp [containerId or containerName]:[path] ./data
docker cp redis04:/data/appendonly.aof ./data

# 查看容器详情
docker inspect [containerId or containerName]

仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 登录官方仓库,非必须操作
docker login

# 使用registry镜像创建私有仓库
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

# 上传镜像到私有仓库
# 先为镜像打个新的tag,前面加上registry服务器的ip和端口
docker tag hsinan/my-gitea 127.0.0.1:5000/my-gitea
# 推送到私有仓库
docker push 127.0.0.1:5000/my-gitea
# 调用接口查询私有仓库镜像目录
curl http://127.0.0.1:5000/v2/_catalog
{"repositories":["my-gitea"]}
# 调用接口查询私有仓库镜像的标签列表
curl http://127.0.0.1:5000/v2/my-gitea/tags/list
{"name":"my-gitea","tags":["latest"]}

# 从私有仓库拉取镜像
# 删除本地的镜像
docker rmi 127.0.0.1:5000/my-gitea
# 拉取镜像
docker pull 127.0.0.1:5000/my-gitea
# 拉取后重新打个识别度更高的标签
docker tag 127.0.0.1:5000/my-gitea my-gitea

关于私有仓库的安全加固参考这篇文档:https://www.cnblogs.com/ttkl/p/11040932.html


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!