0
点赞
收藏
分享

微信扫一扫

6、容器管理(容器内和宿主机之间互相复制文件与-e传递环境变量)

容器内和宿主机之间复制文件

把容器内的文件拷贝出来
[root@ubuntu2004 ~]#docker run -d --name b1 busybox sleep 100
3c2f399f35bc052db93642a30e371c737d9eff7f7ca7978212c059d150b155dd
[root@ubuntu2004 ~]#docker cp b1:/etc/hosts hosts.b1
[root@ubuntu2004 ~]#cat hosts.b1 
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2  3c2f399f35bc

把宿主机的文件拷贝到容器
[root@ubuntu2004 ~]#docker run -d --name b1 busybox sleep 100
cbe43c31b35839bb41bc91c4ba7a3cc771bff8b5616d6672078e9ea0a7155075
[root@ubuntu2004 ~]#docker cp /etc/passwd b1:/etc/os
[root@ubuntu2004 ~]#docker exec b1 cat /etc/os
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

传递环境变量

有些容器运行时,需要传递变量,可以使用 -e <参数> 或 --env-file <参数文件> 实现 
变量参考链接: https://hub.docker.com/_/mysql,看官方文档有没有环境变量说明

范例: 传递变量创建MySQL
宿主机10.0.0.101
[root@ubuntu2004 ~]#docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=m50db mysql:8.0

远程机10.0.0.8(进入mysql)
[root@rocky8 ~]#mysql -uroot -p123456 -h10.0.0.101
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| m50db              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
环境变量生效


把变量写在文件里,通过--env-file实现,就不用写那么多-e了,适合变量比较多的时候
写文件
[root@ubuntu2004 ~]#cat mysql.env 
MYSQL_ROOT_PASSWORD=123456  
MYSQL_DATABASE=m50db 
利用文件作为开启mysql容器的环境变量
[root@ubuntu2004 ~]#docker run -d -p 3306:3306 --env-file mysql.env mysql:8.0
292858fae8bf5f625e20ee1acda59f50a3cc5479a21ab2eac6653fa35deeeee7
远程机10.0.0.8(进入mysql)
[root@rocky8 ~]#mysql -uroot -p123456 -h10.0.0.101
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| m50db              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)



举报

相关推荐

0 条评论