容器我们通常是选择后台方式运行的,需要进入容器,修改一些配置,所以进入容器的命令是很常用的~
进入容器的命令
#命令
docker exec -it 容器id bashShell
#调试
[root@xiaoxiao ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
289fc5495bfe centos "/bin/bash -c 'while…" 17 minutes ago Up 17 minutes sharp_bohr
[root@xiaoxiao ~]# docker exec -it 289fc5495bfe /bin/bash
[root@289fc5495bfe /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@289fc5495bfe /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 00:29 ? 00:00:00 /bin/bash -c while true; do echo xiaomin; sleep 1;done
root 1093 0 0 00:47 pts/0 00:00:00 /bin/bash
root 1122 1 0 00:47 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root 1123 1093 0 00:47 pts/0 00:00:00 ps -ef
#方式二
docker attach 容器id
#测试
[root@xiaoxiao ~]# docker attach 289fc5495bfe
xiaomin #正在执行当前代码
xiaomin
xiaomin
#docker exec #进入容器后开启一个新的终端,可以在里面进行操作(常用)
#docker attach #进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机上
#命令
docker cp 容器id 容器内路径 目的主机路径
#测试
#查看当前主机目录
[root@xiaoxiao ~]# cd /home
[root@xiaoxiao home]# ls
[root@xiaoxiao home]# touch xiaomin.java
[root@xiaoxiao home]# ls
xiaomin.java
#进入容器内部
[root@aa30e029597d /]# cd /home
#在容器内部新建一个文件
[root@aa30e029597d home]# touch test.java
[root@aa30e029597d home]# ls
test.java
[root@aa30e029597d home]# exit
exit
[root@xiaoxiao home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@xiaoxiao home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa30e029597d centos "/bin/bash" 2 minutes ago Exited (0) 15 seconds ago modest_hoover
[root@xiaoxiao home]#
#将文件拷贝到主机上
[root@xiaoxiao home]# docker cp aa30e029597d:/home/test.java /home
[root@xiaoxiao home]# ls
test.java xiaomin.java
拷贝是一个手动过程,未来使用 -v,数据卷的技术可以实现自动同步