Docker学习笔记-2

文章介绍了如何进行Docker的内部操作,包括依附交互型容器、查看容器日志、检查容器进程、在容器内执行命令以及容器的导入和导出。具体涉及dockerattach、dockerlogs、dockerinspect和dockerexec等命令的使用,以及dockerexport和dockerimport进行容器的备份和恢复。
摘要由CSDN通过智能技术生成

前面学习的管理操作都是外部操作,下面将学习Docker的内部操作,包含获取容器的内部信息以及在容器内部运行命令。

1.依附容器

依附操作attach通常用在由docker start或者docker restart启动的交互型容器中。由于docker start启动的交互型容器并没有具体终端可以依附,而容器本身是可以接收用户交互的,这时就需要通过attach命令来将终端依附到容器上。

创建交互型容器:

root@baida:~# docker run -i -t --name=test_ubuntu ubuntu /bin/bash
root@21426af88561:/# ls
bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var
boot  etc  lib   lib64  media   opt  root  sbin  sys  usr
root@21426af88561:/# exit
exit

退出后查看正在运行的容器:

root@baida:~# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
​

启动后查看,并依附容器:

root@baida:~# docker start test_ubuntu
test_ubuntu
root@baida:~# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
21426af88561   ubuntu    "/bin/bash"   10 minutes ago   Up 23 seconds             test_ubuntu
root@baida:~# docker attach test_ubuntu
root@21426af88561:/# ls
bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var
boot  etc  lib   lib64  media   opt  root  sbin  sys  usr

后台型容器无法依附终端,因为它本身不接受用户的交互输入。

2.查看容器日志

对于交互型容器,由于本身就存在交互终端或者可以通过attach依附终端,所以查看容器的配置信息或者调试程序比较方便。

对于后台型容器,它不存在交互终端,要获取其信息,势必需要其他的方法,Docker给我们提供了logs、inspect等方法。docker logs命令用于查看容器的日志,它将输出到标准输出的数据作为日志输出到运行docker logs命令的终端上。

首先,创建一个不断输出一些内容的后台型容器:

root@baida:~# docker run -d --name test_logs ubuntu /bin/bash -c 'for((i=0;1;i++));do echo $i;sleep 1;done;'
65c34495aec784a2c625f7a4cd35f7c08ad3e581cdd29364e61712948db7ceb0

这是一个包含训话输出自然数的应用程序的容器,我们可以使用logs来查看其输出:
root@baida:~# docker logs -f test_logs
0
1
2
3
-f       实时查看
--tail=5 查看最后的n行日志
-t       查看日志产生的时刻

3.查看容器进程

docker inspect用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置网络配置和数据卷配置等:

docker inspect test_logs

使用-f或者--format格式化标志,可以查看指定部分的信息。

查询容器的运行状态:

docker inspect --format='{{.State.Running}}' test_logs

查询容器的网络设置:

docker inspect --format='{{.NetworkSettings}}' test_logs

也可以同时查询多个信息,比如容器名和运行状态:

docker inspect --format='{{.Name}} {{.State.Running}}' test_logs
/test_logs false

4.容器内执行命令

在容器启动的时候,通常需要指定其需要执行的程序,然而有时候我们需要在容器运行之后中途启动另一个程序。我们可以用docker exec命令在容器中运行新的任务它可以创建两种任务:后台型任务和交互型任务。后台型任务没有用户交互终端,交互型任务具有和用户交互的输入输出终端。

建立一个后台型任务,需要加上-d标志:

docker exec -d test_ubuntu touch /et/cnew_config_file

创建交互型任务,需要加上-t -i 标志:

docker exec -t -i test_ubuntu /bin/bash

注意,执行命令前需要确保容器已经启动。

5.容器的导入和导出

用户可以把容器提交到公共服务器上,还可以将容器导出到本地文件系统中。我们也可以将导出的容器重新导入到Docker运行环境中。Docker的导入和导出分别由import命令和export命令完成。

1.创建一个容器
2.安装需要的软件,配置系统环境
3.使用docker export命令导出容器
docker export test_logs > my_container.tar 
docker export命令会将容器以tar包的格式导出到标准输出。
反过来,我们可以使用docker import命令导入一个本地的tar包作为镜像
-c      应用docker 指令创建镜像
-m      提交时的文字说明
docker import my_container.tar test_1
从归档文件my_container.tar创建镜像,命名为test_1,将打包的容器导入为一个镜像。
import 表示从标准输入读取容器内容,我们把my_container.tar的内容传给了标准输入,res和tag分别代表生成的镜像和标记。
除了导入本地文件系统的tar包成为一个镜像外,我们还可以使用一个url来导入网络上的容器:
docker import url res:tag
接着就可以通过docker run命令使用导入的镜像创建需要的容器。

🐟~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值