Docker 指令篇
镜像 Image
镜像操作时,可使用 ImageID 或 仓库:tag 的形式。
构建镜像
docker build .
如:
docker build \
-t registry.cn-hangzhou.aliyuncs.com/my_template/my_template_api:test.100 \
-f ./src/Dockerfile \
.
-t: 镜像仓库和镜像标签,标准写法见下文「远程镜像仓库-构建镜像」-f:Dockerfile的path.: 点 (.) 表示将当前目录下的所有文件作为构建上下文传递给 Docker。
在 Dockerfile 中,如果有需要复制或访问文件的操作(比如 COPY 或 ADD),这些文件必须在构建上下文中。镜像删除
docker rmi [Image ID] docker rmi 仓库:tag
镜像列表
docker images ImageID
镜像详情
docker inspect ImageID
容器 Container
容器初始化并运行
docker run
容器列表
-
运行中的容器列表
docker ps -
全部容器(包括停止的)
docker ps -a
容器停止
docker stop 容器
-s signal : 传入容器的信号
-t time : kill这个容器前等待的时间,单位秒
容器启动
docker start 容器
容器重启
docker restart 容器
容器详情
docker inspect 容器
进入容器
docker exec -it 容器 /bin/bash
# 进入一个redis容器并获取某个key
docker exec -it my_redis redis-cli get key
查看日志
docker logs 容器
容器stats
docker stats 容器
允许同时查看多个容器
> docker stats runsen redis-slave1
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b41b6fc3b2f9 runsen 0.00% 0B / 0B 0.00% 0B / 0B 0B / 0B 0
efcfffd82608 redis-slave1 0.87% 25.81MiB / 7.657GiB 0.33% 9.07kB / 7.66kB 13.4MB / 0B 5
容器内进程
docker top 容器
可以显示容器内的进程列表、进程 ID、CPU 和内存的使用情况等详细信息。
docker top 容器名
UID PID PPID C STIME TTY TIME CMD
999 1155 1136 0 Oct09 ? 00:51:24 /run/rosetta/rosetta /usr/local/bin/redis-server redis-server /usr/local/etc/redis/redis.conf
网络 Network
-
bridge(桥接):
网络驱动程序。
创建一个独立的网络,容器可以通过这个网络进行通信。
容器通过 Docker 的桥接网络相互通信,也可以通过主机的 IP 地址进行外部访问。 - host(主机):
不进行网络隔离,容器与主机共享网络栈。
这意味着容器的网络直接使用主机的网络接口。 - overlay(覆盖):
用于在多个 Docker 主机之间创建一个虚拟网络。
适合于在 Docker Swarm 中部署分布式应用。
列表
docker network ls
创建
docker network create 网络名
删除
docker network rm 网络名
- 清除未使用的网络
docker prune
docker network prune
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Networks:
docker-compose_default
redis-net-01
django-cms-quickstart_djangocmsnet
Fan的小破站 fanfine.cn
挂载点 Volume
ls挂载列表inspect挂载详情rm删除一个或多个挂载prune删除所有没有使用的本地挂载create创建挂载
账号
登录 Docker
docker login [-u] [-p] [registry-url]
-u: 用户名-p: 密码
例子:
- 登录到
hub.docker
不使用registry-url就是docker login - 登录到私有仓库
以阿里云举例:
基于当前网络环境,可以选择专有网络、公网或经典网络。
网络环境url可获取于:
镜像仓库-仓库,右侧会有该仓库的完整url,取其域名部分。# 公有地址 docker login -u username registry.cn-hangzhou.aliyuncs.com # 专有网络 docker login -u username registry-vpc.cn-hangzhou.aliyuncs.com # 经典网络 docker login -u username registry-internal.cn-hangzhou.aliyuncs.com
退出 Docker
docker logout [registry-url]
-
退出docker官方仓库
docker logout -
退出私有仓库
docker logout [registry-url]如:退出阿里云注册表
docker logout registry.cn-hangzhou.aliyuncs.com
远程镜像仓库
构建镜像
与上文中使用 docker build 不同的是,
使用远程镜像仓库,在推送至仓库之前,该镜像的仓库名有要求,路径案例如下:
[registry-url]/[namespace]/[image-name]:[tag]
如:
docker build -t registry.cn-hangzhou.aliyuncs.com/my_template/my_template_api:test.100 -f ./src/Dockerfile .
使用docker images 时可见:
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/my_template/my_template_api test.1 40d21e6fbad2 7 months ago 7.13MB
可以在构建最新版本数字标签的同时,构建latest标签
docker build \
-t registry.cn-hangzhou.aliyuncs.com/my_template/my_template_api:4.0 \
-t registry.cn-hangzhou.aliyuncs.com/my_template/my_template_api:latest \
-f ./src/Dockerfile \
.
标签
如果镜像构建时没有使用上述标准格式,可以以该镜像为基础构建新镜像
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
如:
# 原仓库名 image-name
docker tag image-name:latest registry.cn-hangzhou.aliyuncs.com/my_template/my_template_api:1.0
# Image ID
docker tag 2ab2cda59fac registry.cn-hangzhou.aliyuncs.com/my_template/my_template_api:2.0
# 标准仓库名再打标签,常见于 以最新版本镜像构建 latest镜像
docker tag registry.cn-hangzhou.aliyuncs.com/my_template/my_template_api:2.0 registry.cn-hangzhou.aliyuncs.com/my_template/my_template_api:3.0
推送本地镜像到 Docker 注册表
docker push [OPTIONS] NAME[:TAG]
如:
docker push registry.cn-hangzhou.aliyuncs.com/my_template/my_template_api:latest
搜索镜像
在 Docker Hub搜索镜像
docker search [image-name]
如:
> docker search golang
NAME DESCRIPTION STARS OFFICIAL
golang Go (golang) is a general purpose, higher-lev… 4945 [OK]