1、可以先执行 root $ docker exec -it 0b4d0ae681c7 bash ,通过exec可以进入一个运行的容器。这样进去nginx容器里面。因为nginx镜像是建立在linux上的。所有bash在nginx容器是可用的。
2、进入nginx容器内部,你就可以同ls,cat等等去看nginx容器内部的文件系统了。这个方式也是适用于当你想知道tomcat容器,要拷贝本地文件到tomcat容器的那个文件。也可以使用exec进入。最后你可以通过pwd这类,确定tomcat容器运行的路径$:docker cp test.war xxxx/webapps ;
3、
注:也可以直接查看容器下的目录结构,可以看到容器的目录结构其实跟liunx的目录结构是一样的,因为容器只是物理主机上的一个进程
4、退出容器:exit ,可以看到前面root的昵称已经不一样了
5、使用 docker attach方式进入容器,在退出时会导致容器停止运行,而使用exec方式进去则不会
一、在docker中运行了nginx容器,如果想要自定义配置文件那么有两种办法
第一种:
- 进入ng容器docker exec -it nginx bash
- ng容器中的配置文件在在 /etc/nginx/ 下面(但是你使用vim nginx.conf 或者vi nginx.conf,会发现vi或者vim命令没有用,解决办法:apt-get update 完成之后 apt-get install vim)
- 此时你就可以自己定制nginx.con文件了,改好配置文件之后先停止容器,再启动docker stop nginx 然后重启 docker start nginx
第二种:
- 由于第一种不是很当变,所以第二种为挂载配置文件的方式
- 挂载的方式其实就是你自己在物理机的随便一个文件夹下先定义好自己需要的配置文件,然后把这个自定义的配置文件映射到比如NG容器中存放配置文件的地方,这样重启之后自定义的会覆盖默认的配置文件
- 命令:docker run --name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
- 其中/home/docker-nginx/nginx.conf为自定义的配置,:/etc/nginx/nginx.conf 为容器中的配置
- /home/docker-nginx/log为自定义的日志文件 :/var/log/nginx为容器中的日志文件
- 解释下上面的命令
- --name 给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器
- -p 映射端口,将docker宿主机的80端口和容器的80端口进行绑定
- -v 挂载文件用的,第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,第二个表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面
- 第三个-v 表示的和第一个-v意思一样的。
- -d 表示后台运行容器,并返回容器ID;
二:使用docker export容器之后,再将导出去的tar包导入到主机上,运行时会报错
- 是因为import的容器再运行时,需要指定COMMAND信息,不然就会报错。参考
- 这里面我修改了一个nginx的欢迎页,然后导出再导入进去运行测试的(ps:但是运行之后发现我自己写的欢迎页没有了,还是nginx自带的欢迎页,这个后面需要排查)
二:docker命令export和save的区别
- export导出容器,再import导入之后成为镜像,导出的是快照,没有历史版本比如tag
- save到处镜像,再load进去之后为镜像,保存的有历史版本,比如1.0,2.0,所以save比export的文件大