docker命令及容器命令

作者: 鲁智深 分类: docker 发布时间: 2018-08-21 08:11

帮助命令

1
2
3
docker version #docker version :显示 Docker 版本信息
docker info  #docker info : 显示 Docker 系统信息,包括镜像和容器数
docker -help #帮助文档

用法: docker [OPTIONS] COMMAND

一个容器自动运行所需

选项:
–config string 客户端配置文件的位置 (默认”/home/atguigu/.docker”)
-D, –debug 启用调试模式
-H, –host list 要连接的守护程序套接字
-l, –log-level string 设置日志记录级别(“debug”|“info”|“warn”|“error”|“fatal”)(默认“info”
–tls 使用TLS;由–tlsverify暗示
–tlscacert string 由此CA签署的信任证书(默认”/home/atguigu/.docker/ca.pem”)
–tlscert string TLS证书文件的路径 (default “/home/atguigu/.docker/cert.pem”)
–tlskey string TLS密钥文件的路径 (default “/home/atguigu/.docker/key.pem”)
–tlsverify 使用TLS并验证远程
-v, –version 打印版本信息并退出

管理命令:
config 管理Docker配置
container 管理容器
image 管理图像
network 管理网络
node 节点管理Swarm节点
plugin 管理插件
secret 管理Docker的秘密
service 管理服务
stack 管理Docker堆栈
swarm 管理Swarm
system 管理Docker
trust 管理对Docker镜像的信任
volume 管理卷

Commands:
attach 将本地标准输入,输出和错误流附加到正在运行的容器
build 从Dockerfile构建映像
commit 从容器的更改创建新图像
cp 在容器和本地文件系统之间复制文件/文件夹
create 创建一个新容器
diff 检查容器文件系统上的文件或目录的更改
events 从服务器获取实时事件
exec 在正在运行的容器中运行命令
export 将容器的文件系统导出为tar存档
history 显示图像的历史
images 列出图像
import 从tarball导入内容以创建文件系统映像
info 显示系统范围的信息
inspect 返回Docker对象的低级信息
kill 杀死一个或多个正在运行的容器
load 从tar存档或STDIN加载图像
login 登录Docker注册表
logout 从Docker注册表注销
logs 获取容器的日志
pause 暂停一个或多个容器中的所有进程
port 列出端口映射或容器的特定映射
ps 列出容器
pull 从注册表中提取图像或存储库
push 将图像或存储库推送到注册表
rename 重命名容器
restart 重新启动一个或多个容器
rm 移除一个或多个容器
rmi 删除一张或多张图像
run 在新容器中运行命令
save 保存将一个或多个图像保存到tar存档(默认情况下流式传输到STDOUT)
search 搜索Docker Hub以获取图像
start 启动一个或多个已停止的容器
stats stats显示容器资源使用情况统计信息的实时流
stop 停止一个或多个正在运行的容器
tag 创建引用SOURCE_IMAGE的标记TARGET_IMAGE
top 显示容器的运行进程
unpause 取消暂停一个或多个容器中的所有进程
update  更新一个或多个容器的配置
version 显示Docker版本信息
wait 阻止,直到一个或多个容器停止,然后打印退出代码

运行’docker COMMAND –help’以获取有关命令的更多信息。

镜像命令

镜像就像是类,可以生成多个容器。

蓝色的大海——》宿主机系统windows10
鲸鱼——-》 docker
集装箱 ——-》 容器实例,来自我们的镜像模版

docker image 列出本地主机的镜像

列出本地镜像

列出本地镜像

同一个仓库源可以有多个tag,代表这个仓库源的不同个版本,我们使用repository:tag来定义不同的镜像。

如果你不指定一个镜像的版本标签,例如你只使用ubuntu,docker将默认使用ubuntu:latest镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#列出本地所有的镜像(含中间映像层)
docker images -a

#列出镜像id
docker images -q

#列出本地所有镜像id(含中间映像层)
docker images -qa

#显示镜像的摘要信息
docker images --digests
#显示完整的镜像信息
docker images --no-trunc

#查询docker上redis镜像源,OFFICIAL(ok)代表官方版本
docker search [镜像名称]
docker上查找某个镜像源

docker上查找某个镜像源

1
2
3
4
5
6
7
8
#列出点赞数不小于30的镜像源
docker search -s 30 redis

#列出点赞数不小于30的镜像源,完整的摘要信息
docker search -s 30 --no-trunc redis

#列出自动构建类型的镜像信息
docker search --automated
自动构建类型镜像源

自动构建镜像源

1
2
3
4
5
#下载镜像
docker search -s 30 nginx
docker pull nginx
或者
docker pull nginx:版本
下载镜像

下载镜像

1
2
3
4
5
6
7
8
#删除镜像
docker rmi hello-world
或者
docker rmi hello-world:版本
或者强制删除
docker rmi -f hello-world
或者
docker rmi -f 镜像id
删除镜像

删除镜像

1
2
3
4
5
6
#删除多个
docker rmi -f 镜像id 镜像id 镜像id

#删除全部
docker rmi $(docker images -qa)
-qa意思是全部的id

容器命令

docker 容器可以看做一个简易版的liunx环境

1
2
3
4
docker search ubuntu
# 下载ubuntu镜像
docker pull ubuntu
dcoker images
docker pull

docker pull

1
2
3
4
#登录进入容器,并且开启一个伪终端,启动式交互
docker run -it 镜像名称或者id
#或者
docker run -it 镜像名称或者id /bin/bash
交互模式运行ubuntu镜像

交互模式运行ubuntu镜像

options 说明(常用):有些是一个减号,有些是两个减号
-name=”容器新名字”:为容器指定一个名称
-d:后台运行容器,并返回容器id,也即启动守护式容器:
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-P:随机端口映射:
-p:指定端口映射,有以下四种格式
ip:hosPort:containerPort
ip:containerPort
hostPort:containerPort
containerPort

1
2
#列出当前所有运行的容器
docker ps
查看运行中容器

查看运行中容器

options说明(常用)
-a:列出所有运行的容器和历史运行过的容器
-l:显示最近创建的容器
-n:显示最近n个创建的容器
-q:静默模式,只显示容器编号
–no-trunc:不截断输出

1
2
3
4
5
docker ps -a
docker ps -l
dcoker ps -n
docker ps -q
docker ps -aq #列出所有容器的id
docker操作

docker操作

退出容器,用docker ps 可以看到 状态是 up

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 启动容器
docker start 容器id

# 重启容器
docker restart 容器id

# 暂停容器
docker stop 容器id

# 强制暂停容器
docker kill 容器id

# 删除容器
docker rm 容器id

# 强制删除容器
docker rm -f 容器id

# 清空容器
docker rm -f $(docker ps -aq)

# 删除多个容器(清空容器)
docker ps -a -q | xargs docker rm

重要
用docker run -d ubuntu运行容器,问题是docker ps -a进行查看,会发现容器已经推出,为什么?

这样要说明一点,docker容器后台运行,就必须要有一个前台进程,容器运行的命令如果不是哪些一直挂起的命令(比如运行top,tail),就是会自动退出的。

这个就是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可,例如service nginx start

但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用。这样的容器后台启动后,会立即自杀因为他觉得他没事可做了。所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行。

举个简单的例子:一家饭店没什么生意,那么他们的厨子觉得没事干,就放假了

解决:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 守护进程启动docker ,并且按每2秒打印“hello ayf”
docker run -d ubuntu /bin/sh -c "while true;do echo hello ayf;sleep 2;done"

# 查看容器日志
dcoker logs 容器id

# 查看容器日志+时间
docker logs -t 容器id

# 查看容器日志并且实时追加更新
dcoker logs -t -f 容器id

# 查看容器日志最后3行日志并且实时追加更新
docker logs -t -f --tail 3 容器id
守护进程和日志

守护进程和日志

1
docker top 容器id

启动docker 容器后,我们可以用docker top 容器id进行查看运行进程。

查看容器内运行的进程

查看容器内运行的进程

docker容器是“千层饼”形态,我们可以查看docker容器内部细节,如下命令,会返回json串,里面包含docker内部细节。

1
2
# 查看容器内部细节
docker inspect 容器id
docker内部细节

docker内部细节

下面进入正在运行的容器,并用命令行进入

1
docker attach 容器id
进入正在运行的容器

进入正在运行的容器

1
2
3
4
#不进入容器终端,直接shell命名,返回结果
docker exec -t 容器id ls -l /tmp
#进入容器终端
docker exec -t 容器id /bin/bash
进入容器

进入容器

注意:attach 和exec的区别是:

attach 直接进入容器启动命令的终端,不会启动新的进程
exec 是在容器中打开新的终端,并且可以启动新的进程

如果我要删除一个容器,但是我需要保存容器内的数据,就需要用到docker cp

1
2
# 从容器内拷贝文件到主机上
docker cp 容器id:容器内的路劲 目的主机路劲
拷贝容器文件

拷贝容器文件

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

一条评论
  • 948

    2018 年 8 月 24 日 09:56

    三天两头过来看一看,每次看完都有新体验!

发表评论

电子邮件地址不会被公开。 必填项已用*标注