首页 > 其他 > 详细

Docker容器操作

时间:2021-02-16 18:08:45      阅读:33      评论:0      收藏:0      [点我收藏+]

一、简介

容器:容器是一种轻量级、可移植、并将应用程序进行打包的技术,使应用程序可以在不同的地方以相同的方式运行。本质就是镜像文件运行后的实例,具有一定的生命周期。

容器的生命周期如下

技术分享图片

 

 二、容器与虚拟机的比较

技术分享图片

1、相似或相同点

  • 都是对物理硬件资源进行共享使用
  • 生命周期也比较相似
  • 可以安装各种应用,如redis、python、mysql等
  • 创建后会存储在宿主机上,linux上是位于/var/lib/docker/containers下

2、不同点

  • 虚拟机是基于一个完整的操作系统,即一个虚拟机一个操作系统,容器则是基于宿主机的内核上,即多个容器共用主机的操作系统,本质上有点类似于进程。
  • 容器是属于轻量级的,虚拟机是属于重量级的,因为容器不需要额外的资源来管理(如Hypervisor等),虚拟机需要,操作也比虚拟机方便。

技术分享图片

 

 三、容器的操作

1、容器创建和启动

(1)创建docker create

# 命令格式:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
# OPTIONS:
    -t, --tty               分配一个伪TTY,也就是分配虚拟终端
       -i, --interactive   即使没有连接,也要保持STDIN打开
       --name              为容器起名,如果没有指定将会随机产生一个名称
# 命令参数(COMMAND\ARG):
    COMMAND 表示容器启动后,容器会执行该命令命令,如ps、ls 等命令
    ARG 表示执行 COMMAND 时需要提供的一些参数,如ps 命令的 aux、ls命令的-a等等
# 案例:
[root@192 ~]# docker create --name=hello hello-world ps -A
6b72d911e4aad66bcd088b6f0fe07c306db94322065507fc446a2cecd26bd4d9

docker create -ti --name test-container2 centos /bin/bash

(2)容器启动 docker start

# 命令格式:
    docker start [OPTIONS] CONTAINER [CONTAINER...]
#OPTIONS:
    -a, --attach        将当前shell的 STDOUT/STDERR 连接到容器上
    -i, --interactive        将当前shell的 STDIN连接到容器上    

技术分享图片

 

技术分享图片

 2、容器创建并启动 docker run(重点)

参数说明:

  • -i:表示运行容器
  • -t:表示容器启动后会进入其命令行(类似我们在cmd执行mysql一样)。加入ti这两个参数后,容器创建就能登录进去。即分配一个伪终端。
  • --name :为创建的容器命名。
  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
  • -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

(1)交互式方式创建容器

技术分享图片

(2)守护式方式创建容器,也就是挂后台

[root@192 ~]# docker run -di --name=python1 python:3.6
21030b865834a84f29d7dd536f1b4d937b4256e081ad98a0542eb76af54d9609

3、容器查看

docker ps  #查看正在运行的容器
docker ps -a # 查看所有容器
docker ps -l  #查看最后一次运行的容器
# -f 是筛选的指定的容器
docker ps -f status=exited # 查看停止的容器

4、容器删除、重启

# -----------容器删除------------
docker rm 容器名字/容器ID
# -f 强制删除   -v 同时删除绑定在容器上的数据卷

# -----------容器重启----------------
docker restart 容器名字/ID
参数 -t , --time int  重启前,等待的时间,单位秒,默认是10s

5、容器暂停与关闭、终止

# --------容器暂停----------
docker pause 容器名字/ID   #容器暂停
docker unpause 容器名字/ID # 容器取消暂停

# ---------容器关闭----------
docker stop 容器名字/ID
# 参数 -t, --time int  关闭前等待的时间,单位秒,默认是10s

# ---------容器终止----------
docker kill 容器名字/ID
# 参数 -s ,--signal string 指定发送给容器的关闭信号,默认是kill信号

#----------socker kill 和socker stop的区别--------
‘‘‘
1、kill 是直接发送SIGKILL信号关闭容器,可以通过参数-s修改发出的信号
2、stop 是先发出SIGTERM信号给进程,告诉进程即将会被关闭,在-t指定的等待时间过了之后,将会立即发出SIGKILL信号,直接关闭容器
3、stop在等待时间内,如果终止等待,则容器没有关闭,而kill是无法撤销的
‘‘‘

扩展知识点

linux的两种终止进程的信号:SIGTERM和SIGKILL

SIGKILL信号:立即终止进程,不进行清理和暂存工作,该信号无法被阻塞、忽略、处理,也就是一发出就无法停止,它可以杀死任何进程

SIGTERM信号:程序终结信号,它可以被阻塞和终止,程序在退出前可以保存工作或清理临时文件等。

6、容器信息查看

(1) 查看容器详细信息 

docker container inspect 容器名字/ID
# 参数:-f, --format string  利用特定Go语言的format格式输出结果
#      -s, --size   显示总大小

(2)查看容器日志信息

docker logs 【参数】 容器名字/ID
‘‘‘ 参数
--details        显示日志的额外信息
-f, --follow                 动态跟踪显示日志信息
--since string      只显示某事时间节点之后的    
--tail string            显示倒数的行数(默认全部)
-t, --timestamps         显示timestamps时间
--until string       只显示某事时间节点之前的
# 注意:容器日志中记录的是容器主进程的输出STDOUT\STDERR
‘‘‘

(3)容器重命名

docker rename 容器名字/ID 新的容器名
[root@192 ~]# docker rename 21030 python3

7、运行中的容器操作

(1) 容器连接

将当前终端的STDIN、STDOUT、STDERR绑定到正在运行的容器的主进程上实现连接

docker attach [options] 容器名字/ID
# 参数:--no-stdin  不绑定STDIN

例子:

[root@192 ~]# docker attach --no-stdin e181da
[root@e181da14a5da /]# 
[root@192 ~]# docker attach e181da
[root@e181da14a5da /]# 

(2)容器中执行新命令

docker exec [options] 容器名字/ID 新的命令
‘‘‘   参数
-d, --detach             后台运行命令
-i, --interactive        即使没连接容器,也将当前的STDIN绑定上
-t, --tty                分配一个虚拟终端
-w, --workdir string     指定在容器中的工作目录
-e, --env list           设置容器中运行时的环境变量
‘‘‘

四、总结:

注意事项:容器必须要有夯住的命令,不然它不会一直运行,如果是我们自己制作的镜像,运行容器的时候,必须要有个可以夯住的命令

技术分享图片

 

Docker容器操作

原文:https://www.cnblogs.com/nq31/p/14406402.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!