首页 > 技术文章 > Docker基础命令

wang-yy 2020-05-08 17:55 原文

Docker基础命令

$ docker info # 守护进程的系统资源设置
$ docker search		# Docker 仓库的查询
$ docker pull		# Docker 仓库的下载
$ docker images		# Docker 镜像的查询
$ docker rmi		# Docker	镜像的删除
$ docker ps		# 容器的查询
$ docker run		# 容器的创建启动
$ docker start/stop	# 容器启动停止
# Docker 指令除了单条使用外,还支持赋值、解析变量、嵌套使用

镜像相关命令

查询本地镜像

$ docker images # 列出本地镜像
	REPOSITORY:# 表示镜像的仓库源
	TAG:# 镜像的标签
	IMAGE ID:# 镜像ID
	CREATED:# 镜像创建时间
	SIZE:# 镜像大小
	-a:# 列出本地所有的镜像(含中间映像层)
	-q:# 只显示镜像ID
	--digests:# 显示镜像的摘要信息
	--no-trunc:# 显示完整的镜像信息
同一个仓库源可以有多个TAG,代表这个仓库源的不同版本,我们使用# REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker将默认使用 ubuntu:latest 镜像

镜像下载

# 浏览器图形化网络镜像下载
$ docker pull 下载地址
# 例:centos下载
# 国内163镜像仓库:https://www.163yun.com/
$ docker pull hub.c.163.com/public/centos:6.7-tools

# 命令行工具镜像下载
$ docker search 镜像名 # 去Hub查看某个镜像是否存在
$ docker search [选项] 镜像名字
	--no-trunc:# 显示完整的镜像描述
	-s:# 列出收藏数不小于指定值的镜像
	--automated:automated # build类型的镜像
$ docker pull 镜像名 # 下载镜像
$ docker pull 镜像名:{TAG} #如果不写标签,默认下载最新版 

镜像的删除

# 删除镜像之前要先删除其容器
docker rmi 镜像名字ID # 删除镜像
	-f 镜像ID # 强制删除
docker rmi -f 镜像名1:TAG  镜像名2:TAG
# 删除多个
docker rmi -f $(docker images -qa)
# 删除全部

将镜像保存为文件

$ docker save -o 镜像名.tar(压缩名) 镜像名:TGA/镜像ID

容器相关命令

容器的查询命令

$ docker ps # 正在运行的容器
	CONTAINER ID #容器ID号(使用前4为就行)
	IMAGE	   #容器启动使用的镜像名
	COMMAND	# 镜像启动是运行的命令
	CREATED	# 创建时间
	STATUS	# 当前状态
	PORTS	# 需要的端口
	NAMES	# 容器名称
	-a:# 列出当前所有正在运行的容器+历史上运行过的
	-q:# 静默模式,只显示容器编号
	-l:# 显示最近创建的容器
	-n:# 显示最近n个创建的容器
	--no-trunc:# 不截断输出显示完整的信息
注意:容器运行的最低标准为:拥有前台工作进程

查看容器日志

$ docker logs -f -t --tail 容器ID/容器名
	-t:# 是加入时间戳
	-f:# 跟随最新的日志打印
	--tail:# 数字,显示最后多少条

查看容器内运行的进程

$ docker top 容器ID/容器名

查看容器内部的详细信息

$ docker inspect 容器ID/容器名

查看容器所占用的系统资源

$ docker stats 容器ID/容器名
	CONTAINER # 容器ID
	CPU	# 使用率 1个U100%,2个U200%
	MEM USAGE / LIMIT # 当前内存使用大小/内存总大小
	NET I/O # 网络IO
	BLOCK I/O # 磁盘IO
	PIDS # PID号

新建并启动容器

# docker + 命令关键字 + 一系列的参数
$ docker run [选项] IMAGE [COMMAND] [ARG]
# docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress
--name=“容器新名字”:为容器指定一个名称
-d:后台运行容器,并返回容器ID,也即启动守护式容器
-i:以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
-P:随机端口映射
-p:指定端口映射
--restart=always : 容器的自启动
-h :设置容器的主机名
--dns : 设置容器使用的 DNS 服务器
--dns-search : DNS 搜索设置
--add-host hostname:IP  注入 hostname <> IP 解析
--rm:服务停止时自动删除 
docker run -it 镜像名  或者 docker run -it --name 新的名字 镜像名 # 启动式交互

容器的删除

$ docker rm 容器ID/容器名 #删除容器
# 一次删除多个容器
$ docker rm -f $(docker ps -a -q)
$ docker ps -a -q | xargs docker rm

容器的启动、重启、停止

$ docker start/restart/stop 容器ID 或者 容器名

强制停止容器

$ docker kill 容器ID 或者 容器名

启动守护式容器(即后台运行)

$ docker run -d 镜像名
$ docker run -d centos
# 使用docker ps进行查看,发现容器已经退出
# Docker容器后台运行,必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如top、tail),就会自动退出。

进入正在运行的容器并以命令行交互

# 普通方式
$ docker exec 容器ID/容器名 操作命令
# 交互方式
$ docker exec -it 容器ID/容器名 /bin/bash # 登入容器的bash
	-i # 交互方式
	-t # tty接口
$ docker attach 容器ID # 重新进入
区别:
	$ attach # 直接进入容器启动命令的终端,不会启动新的进程
	$ exec # 是在容器中打开新的终端,并且可以启动新的进程

退出容器

$ exit	#容器停止退出
$ ctrl+P+Q	#容器不停止退出

从容器内拷贝文件到主机上

$ docker cp 容器ID:容器内路径  目的知己路径

推荐阅读