查看docker配置信息

docker info

镜像管理指令

新旧命令暂时兼容(2021-04-19)

搜索镜像

docker search 镜像名 # 全网搜索ubuntu镜像

命令格式:docker image [COMMAND]

列出镜像

新版命令:docker image ls
旧版命令:docker images

构建镜像

docker image build

查看镜像构建历史

就是Dockerfile的信息

docker image history [IMAGE]

查看镜像详细信息

docker image inspect [IMAGE]

拉取镜像

新版命令:docker image pull [IMAGE]
旧版命令:docker pull [IMAGE]

推送镜像

新版命令:docker image push [IMAGE]
旧版命令:docker push [IMAGE]

删除镜像

新版命令:docker image rm [IMAGE]旧版命令:docker rmi [IMAGE]

删除未使用镜像

默认只删除状态为dangling的镜像,也就是标签或者镜像名为none的镜像

docker image prune
-a          # 删除所有未使用的镜像(包括dangling状态的镜像)
-f/--force  # 忽略提示

设置镜像标签

新版命令:docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
旧版命令:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

导出镜像

# [PATH/SAVE_NAME]为保存路径以及保存镜像名
# 保存镜像名一般以tar结尾,因为docker save采用了tar的标准打包镜像
新版命令:docker image save image:tag -o [PATH/SAVE_NAME]
旧版命令:docker save image:tag -o [PATH/SAVE_NAME]

导入镜像

# [PATH]为镜像所在路径及镜像文件名
新版命令:docker image load -i [PATH]  
旧版命令:docker load -i [PATH]

创建容器指令

格式:docker run [options] IMAGE [COMMAND] ...

选项 描述
-i, –interactive 交互式
-t, –tty 分配一个伪终端
-d, –detach 运行容器到后台
-e, –env 设置容器内环境变量
-p, –publish list 发布容器端口到主机
-P, –publish-all 发布容器所有EXPOSE端口到主机随机端口
–name string 指定容器名称
-h, –hostname 指定容器内部的hostname,默认是一串码
–ip string 指定容器ip,只能用于自定义网络
–network 连接容器到一个网络
-v, –volume list
–mount mount(新方式)
将文件系统附加到容器
–restart string 容器退出时重启策略,默认no,可选值[always|on-failure]
–rm 退出容器时,删除容器

常用操作

运行容器

大多数情况使用-d即可,如果不加-d会直接将镜像启动时运行的脚本输出在前台。

docker run -d [IMAGE]
# 当使用的[IMAGE]中有默认启动的1号进程,就可以只使用-d选项
docker run -itd [IMAGE]
# 当使用的[IMAGE]中没有1号进程,如centos是一个纯净镜像,没有任何进程,就必须加-it选项

加入变量

docker run -d -e 123=456 [IMAGE]
# 容器内变量123的值为456

映射端口

docker run -d -e 123=456 -p [宿主机端口号]:[容器内服务端口号] [IMAGE]
# 比如nginx,将80端口映射到宿主机的8080,前提是没被占用,-p 8080:80
# 就可以使用{宿主机ip:8080}来访问服务

指定容器名和hostname

docker run -d -e 123=456 -p [-p 8080:80 --name web --hostname feiyi [IMAGE]
# 容器名为web,容器内主机名为feiyi

指定容器重启策略

docker run -d -e 123=456 -p [-p 8080:80 --name web --hostname feiyi --restart=Always [IMAGE]
# 无论遇到什么错误都会自动重启容器

退出时删除容器

docker run --rm ...
# 经常用于测试其他容器连通性使用,用完即销毁

资源限制操作

选项 描述
-m, –memory 容器可以使用的最大内存量
–memory-swap 允许交换到磁盘的内存量
–memory-swappiness=<0 容器使用SWAP分区交换的百分比(0-100,默认为1)
–oom-kill-disable 警用OMM Killer
–cpus 可以使用的CPU核心数
–cpuset-cpus 限制容器使用特定的CPU核心,如(0-3,0,1)
–cpu-shares CPU共享(相对权重)

例:

docker run -m="500m"  --cpus="1" -d --name xxx [IMAGE]
# -m="500m":使用物理内存500m
# --cpus="1": 使用1核cpu,小数点也可以,如1.5

容器管理命令

新格式:docker container COMMAND
旧格式:docker COMMAND

选项 描述
ls 列出容器
inspect 查看一个或多个容器详细信息
exec 在运行容器中执行命令(上面有例子)
commit 创建一个新镜像来自一个容器
cp 拷贝文件/目录到一个容器
logs 获取容器日志
port 列出或指定容器端口映射
top 显示一个容器运行的进程
stats 显示容器资源使用统计
stop/start/restart 停止/启动/重启一个或多个容器
rm 删除一个或多个容器
prune 移除已停止的容器
pause 挂起容器

ls

新版命令:docker container ls
旧版命令:docker ps
# 以下参数新版旧版都适用
# -a:输出所有容器,包括已经失败/退出的容器
# -l:显示最新创建的容器
# -q:列出所有容器ID,默认是正在运行的容器id
# docker ps -qa -f "STATUS=exited"

exec

# 进入容器(交互)
# -it一般搭配/bin/sh、/bin/bash等shell命令进入容器
docker exec [-it] [容器名 | 容器ID] /bin/sh

# 只运行命令,不进入容器(非交互)
docker exec [容器名 | 容器ID] COMMAND

commit

现在几乎不用commit,这是docker刚兴起时,对于新手来说不会制作镜像,就可以使用这个命令,说白了,就是将一个容器制作成镜像。可参考 Docker容器搭建web集群 。随着docker的越来越普及,接触docker的都会接触 Dockerfile ,慢慢地这个命令也淡化出了视线。

cp

大多数用来宿主机与容器间互传文件

docker pc [宿主机目录] 容器名:[容器内目录]

logs

可直接查看到容器中主进程的日志

docker logs 容器名
# -f:类似tail -f

port

查看容器暴露(映射)到宿主机的端口

docker port 容器名
# 显示结果为 "容器端口 -> 宿主机端口"

top

查看容器内进程

docker top 容器名

stats

查看容器资源利用率(内存/cpu/网络IO…)

# 阻塞形式
docker stats 容器名

# 非阻塞,直接获取执行命令时的资源利用率
docker stats 容器名 --no-stream

rm

删除容器

# 删除正在运行的容器,会有警告,且不会被删除
docker rm 容器名
# -f: 强制删除

# 删除所有容器
docker rm -f $(docker ps -qa)  

prune

已经退出的无用容器

# 移除所有已停止容器
docker container prune

pause

容器挂起

挂起后,状态变为Up 40 minutes (Paused)

docker pause test
docker unpause test # 退出挂起状态,重新运行起来,参考虚拟机挂起

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0