您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
15_尚硅谷_Docker_容器命令(下)
发布时间:2022-11-06 00:35:15编辑:雪饮阅读()
容器运行(后台)
用-d参数可以让docker容器运行在后台
[root@DESKTOP-7ONFN16 ~]# docker run -d centos
b7e8a681b9fad924259d6de6313d0f038fc1f9082e3e17d17af76bbb87b8afaf
奇怪的是运行后又挂了,这里是空空如也
[root@DESKTOP-7ONFN16 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
容器运行(后台)(附加进入容器后立马执行一个指定程序)
docker会发现容器没有事情做的时候就会自动退出,以后台运行时候不像是以it那样交互一样,没有人和他交互,他就会自动退出(以it运行时候就算你不输入命令,一般的我理解为有心跳,所以不会自动退出)
docker run -d centos /bin/sh -c "while true;do echo hello kasumi;sleep 2;done"
打印容器日志
像上面这样在容器里面echo的内容会存储于容器的日志中。查看容器日志如:
[root@DESKTOP-7ONFN16 ~]# docker logs -t -f --tail 3 335d90ef5bca
2022-11-05T15:51:16.615128053Z hello kasumi
2022-11-05T15:51:18.628121156Z hello kasumi
2022-11-05T15:51:20.633714572Z hello kasumi
2022-11-05T15:51:22.640273792Z hello kasumi
2022-11-05T15:51:24.647871489Z hello kasumi
2022-11-05T15:51:26.655921354Z hello kasumi
2022-11-05T15:51:28.665118245Z hello kasumi
2022-11-05T15:51:30.673447880Z hello kasumi
2022-11-05T15:51:32.681319572Z hello kasumi
2022-11-05T15:51:34.688639010Z hello kasumi
这里-t:加入时间戳 –f:跟随最新的日志打印 –tail:显示最后多少条
查看容器内运行的进程
[root@DESKTOP-7ONFN16 ~]# docker top 335d90ef5bca
UID PID PPID C STIME TTY TIME CMD
root 20270 20251 0 11:47 ? 00:00:00 /bin/sh -c while true;do echo hello kasumi;sleep 2;done
有点像是linux的top,但是linux的top默认好像是不断的跟随最新的进程。
但据说以”docker command 容器id”这样command支持大多数linux的命令的。
查看容器细节
据说docker容器像是同心圆,一层层的。那么查看容器细节也类似的吧,查看本容器里面如果还有子容器,应该也是可以查看那些个子容器各自的容器细节吧。这里先查看下主容器的细节。
[root@DESKTOP-7ONFN16 ~]# docker inspect 335d90ef5bca
容器运行(自定义默认脚本(shell))
效果和之前那种it不指定shell脚本时一样,据说是因为默认不指定时候就是以/bin/bash执行的
[root@DESKTOP-7ONFN16 ~]# docker run -it centos /bin/bash
进入容器
前提是容器是处于运行状态,例如上面的用一个脚本不停的运行以保证后台运行且容器不停。
或者以it的形式进入容器然后ctrl+p+q退出并保留容器的运行。
但是前者好像不是很好,上面脚本一直不停的输出就比较。。。(反正我这边没有正常操作成功),如果不输出应该没有问题。
我这里是以后者来实现的。
[root@DESKTOP-7ONFN16 ~]# docker attach 7a1971fee0a7
[root@7a1971fee0a7 /]#
进入后就和你以it的形式进入容器是差不多的。
不进入容器直接执行容器内部的命令
[root@DESKTOP-7ONFN16 ~]# docker exec -t 7a1971fee0a7 ls -l /tmp
total 12
-rwx------. 1 root root 701 Sep 15 2021 ks-script-4luisyla
-rwx------. 1 root root 671 Sep 15 2021 ks-script-o23i7rc2
-rwx------. 1 root root 291 Sep 15 2021 ks-script-x6ei4wuu
进入容器(exec方式)
这里我没有测试容器关闭时候是否可以直接进入,我这边是容器开启的情况下的。
[root@DESKTOP-7ONFN16 ~]# docker exec -t 7a1971fee0a7 /bin/bash
进入后就和你以it的形式进入容器是差不多的。(好像有点异常,有时候会直接输入如ls命令就一直卡在哪里了,遇到这种情况可换成如:docker exec -it 7a1971fee0a7 /bin/bash试试,或者本来就应该加这个i参数吧。。。,事情太多,没有记得那么清楚了)
拷贝容器中的文件到宿主机
当前宿主机
[root@DESKTOP-7ONFN16 ~]# ls
1 30 anaconda-ks.cfg busybox-1.20.2.tar.bz2 docker-ce.repo id_rsa.pub wz.png zs.jpg
另开一个终端新运行一个容器查看容器中的/tmp目录
[root@DESKTOP-7ONFN16 ~]# docker run -it centos
[root@f38488946dd3 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@f38488946dd3 /]# ls /tmp
ks-script-4luisyla ks-script-o23i7rc2 ks-script-x6ei4wuu
找到这个要拷贝的目标文件,假定是ks-script-4luisyla
通过宿主机拷贝容器中的文件到宿主机
[root@DESKTOP-7ONFN16 ~]# docker cp f38488946dd3:/tmp/ks-script-4luisyla /
注意:
一般的it形式进入容器中退出时候用ctrl+p+q不停则不销毁数据,否则会销毁数据,所以有时候是需要用到将docker容器中的文件拷贝到宿主机之后才干掉docker或其它处理。。。
关键字词:Docker,容器,命令,下