常用的其他命令
进入当前正在运行的容器【重点】
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
# 方式一:命令【v. 执行 execute】
docker exec -it 容器id bashShell
## 测试
[root@iZ2ze3omirvragaujkhihjZ /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9bd98325e91f centos "/bin/bash" 3 hours ago Up 3 hours wizardly_montalcini
[root@iZ2ze3omirvragaujkhihjZ /]# docker exec -it 9bd98325e91f /bin/bash
[root@9bd98325e91f /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@9bd98325e91f /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 02:54 pts/0 00:00:00 /bin/bash
root 18 0 0 06:18 pts/1 00:00:00 /bin/bash
root 33 18 0 06:19 pts/1 00:00:00 ps -ef
----------------------------------
# 方式二:命令
docker attach 容器id
## 测试
[root@iZ2ze3omirvragaujkhihjZ /]# docker attach 9bd98325e91f
## 解释:进入的是正在运行的命令行[正在执行的当前代码],而不是开启了一个新的窗口
------------------------------------
# docker exec和docker attach的区别
## docker exec # 进入容器后开启一个新的终端,可以在里面操作【常用】
## docker attach # 进入容器正在执行的终端,不会启动新的进程
- 注:
ps -ef命令含义【具体链接:】- 去进行查看系统上的运行的所有进程
从容器内拷贝文件到主机上【重点】
# 命令【只要容器在,数据就在,和容器运不运行没关系】
docker cp 容器id:容器内路径 目的地主机路径
## 例子:进入centos容器,将/home/test.java文件拷贝到主机的/home路径下
## 容器内
### 新建容器并启动
[root@iZ2ze3omirvragaujkhihjZ /]# docker run -it centos /bin/bash
### 查看容器目录
[root@a7e4f8d3f2ff /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
### 进入容器的home路径
[root@a7e4f8d3f2ff /]# cd home/
[root@a7e4f8d3f2ff home]# ls
### 在容器内的home路径中创建test.java文件
[root@a7e4f8d3f2ff home]# touch test.java
[root@a7e4f8d3f2ff home]# ls
test.java
### 退出并停止运行:只要容器在,数据就在,和容器运不运行没关系
[root@a7e4f8d3f2ff home]# exit
exit
## 主机内
### 列出当前正在运行的容器+带出历史运行过的容器
[root@iZ2ze3omirvragaujkhihjZ /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7e4f8d3f2ff centos "/bin/bash" 2 minutes ago Exited (0) 23 seconds ago recursing_bohr
[root@iZ2ze3omirvragaujkhihjZ /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
### 进入主机的home路径
[root@iZ2ze3omirvragaujkhihjZ /]# cd home/
[root@iZ2ze3omirvragaujkhihjZ home]# ll
total 0
### 将容器内的文件拷贝出来到主机上
[root@iZ2ze3omirvragaujkhihjZ home]# docker cp a7e4f8d3f2ff:/home/test.java /home
[root@iZ2ze3omirvragaujkhihjZ home]# ls
test.java
- 上面拷贝是一个手动过程,未来我们使用
-v卷的技术,可以实现自动同步。- 比如容器内/home的文件和主机内/home的文件自动同步。

- 比如容器内/home的文件和主机内/home的文件自动同步。
学习方式总结:
- 将所有的命令自己敲熟练,光背没用!
本文详细介绍了如何进入Docker容器,包括使用`docker exec`和`docker attach`命令,并对比了两者区别。此外,还阐述了如何使用`docker cp`命令在容器与主机间拷贝文件,确保数据持久化。最后,强调了实践操作对于掌握这些命令的重要性。
702





