Docker学习过程 (4-容器进阶)

今天继续上次的内容,补充容器的其他相对高大上一些的操作,其实也不难,关键要静下心来看。这次有的命令会进入容器内部。
tip:很多时候容器或镜像的名字或ID都起相同作用。

概念

  • 提交容器:把原始镜像和对原始镜像的操作固化,形成一个新的镜像。
  • 进入容器:比如说我用Docker运行了一个Ubuntu系统,那要看容器里面的Ubuntu系统就要进入容器
  • 终端:一般就是指屏幕。输出到终端就是在屏幕上显示。

基本命令

sudo docker top $container			#查看容器$container内部的进程,注意是容器内,我也感觉这个有点奇怪
sudo docker inspect $container 		#查看$container的信息,可加入 -f 过滤,具体见下面例子
sudo docker logs $log 				#以后台守护形式启动的容器,程序输出结果不在终端直接显示,这时可通过日志查看
sudo docker exec $container $cmd 	#让容器$container内部执行$cmd命令
sudo docker commit $container				#把当前容器提交成镜像,会生成一个新的镜像
sudo docker export -o $des $container 		#把container导出成$des
sudo docker export $container > $des		#同上
sudo docker import -i $source		 		#导入$source
sudo docker import < $source 				#同上

实践

查看容器进程和状态
sudo docker run --name web nginx
sudo docker top web			#打开一个新的终端输入,因为运行的web会占用原来的终端
sudo docker inspect -f "{{ .State }}" web
sudo docker inspect web

在这里插入图片描述

查看容器日志
sudo docker run -d --name log_demo ubuntu /bin/bash -c 'for((i=0;i<5;i++));do echo "time $i";sleep 1; done;' 		#本地没有ubuntu镜像会先下载
sudo docker logs log_demo

在这里插入图片描述
在容器中执行命令

sudo docker start web								#开始之前停止的容器
sudo docker exec web ls /var/log/nginx   			#查看容器中 /var/log/nginx 下的文件
sudo docker exec web tail /var/log/nginx/access.log #查看容器中/var/log/nginx/access.log的内容

第3条命令没有在终端输出信息,以后学多了再回头看怎么回事吧。书上写的是能输出
在这里插入图片描述

提交容器更改与导入导出容器
sudo docker run -it centos:7 /bin/bash	#安装个centos操作系统,并进入内部
yum install -y crontabs
exit
sudo docker ps -l -a				 	#-l 选项列出最近(latest)的容器
sudo docker images
sudo docker commit  gl/crontab:latest
sudo docker images

在这里插入图片描述
在这里插入图片描述

至此,Docker的容器知识了解差不多了,下面会写一下更有用更有趣的数据卷和网络。

猜你喜欢

转载自blog.csdn.net/gengli2017/article/details/86353248