如何修改运行中的docker容器的端口映射和挂载目录
原理:docker上存在的是镜像,镜像运行起来之后就叫做容器。要想查看镜像里面都有什么,那就先要让镜像运行起来,可以进入容器内部查看。
列出容器: docker ps
docker images #查看镜像信息
运行你想要查看的镜像(docker run + 镜像id或者是镜像名称):docker run imageID/imageName
docker ps #列出容器,查看 容器ID 或docker pa -a
方法1、在(进入)容器内修改文件
docker exec -it 容器ID /bin/bash
docker里面没有vim,需要自行安装,安装代码如下所示。不过不推荐这种形式,因为里边的文件是临时的,容器被删除之后,配置就失效了,需要从新配置。
apt-get update
apt-get install vim
方法2、使用docker cp命令拷贝修改
可以通过下面的代码将需要修改的文件拷贝出来,修改完成之后再拷贝回去。
#将容器中的文件拷贝出来
sudo docker cp 容器ID:/etc/mysql/my.cnf /home/tom/
#将容器中的文件拷贝回去
sudo docker cp /home/tom/my.cnf 容器ID:/etc/mysql/
方法3、使用-v挂载文件夹(推荐) 注意 https://blog.csdn.net/qq_22041375/article/details/105143383
最后一种方法是在启动的时候使用-v将容器内部的文件夹挂载(映射)到本地的某个路径下,以后以后可以直接在本地修改,不需要进入容器内部.
#冒号前是本地路径(需要绝对路径),冒号后是容器中的路径
$ docker run --name mytomcat -v /home/www/webapps:/usr/local/tomcat/webapps -d tomcat
/etc/nginx/nginx.conf #docker中nginx主配置文件
/var/log/nginx #日志文件
/usr/share/nginx/html #网页文件
常用命令:
docker-compose 命令 --help 获得一个命令的帮
docker-compose up -d nginx 构建启动nignx容器 - 以守护进程模式运行加-d选项
docker-compose exec nginx bash 登录到nginx容器中
docker-compose down 此命令将会停止 up 命令所启动的容器,并移除网络
docker-compose ps 列出项目中目前的所有容器
docker-compose restart nginx 重新启动nginx容器
docker-compose build nginx 构建镜像
docker-compose build --no-cache nginx 不带缓存的构建
docker-compose top 查看各个服务容器内运行的进程
docker-compose logs -f nginx 查看nginx的实时日志
docker-compose images 列出 Compose 文件包含的镜像
docker-compose config 验证文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose events --json nginx 以json的形式输出nginx的docker日志
docker-compose pause nginx 暂停nignx容器
docker-compose unpause nginx 恢复ningx容器
docker-compose rm nginx 删除容器(删除前必须关闭容器,执行stop)
docker-compose stop nginx 停止nignx容器
docker-compose start nginx 启动nignx容器
docker-compose restart nginx 重启项目中的nignx容器
docker-compose run --no-deps --rm php-fpm php -v 在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
查看compose日志
$ docker-compose logs web
$ docker-compose logs redis
本机文件可以同步到容器
在本机/tmp/source目录中新建hello.txt文件
touch /tmp/source/hello.txt ls /tmp/source/hello.txt
hello.txt文件在容器/tmp/destination/目录中可见
使用 docker exec 命令,可以在容器中执行命令。
docker exectest ls /tmp/destination/hello.txt
所以在宿主机对目录 /tmp/source/ 的修改,可以同步到容器目录 /tmp/destination/ 中。
4. 容器文件可以同步到宿主机
在容器/tmp/destination目录中新建world.txt文件
docker exec test touch /tmp/destination/world.txt docker exec test ls /tmp/destination/hello.txt world.txt
world.txt文件在宿主机/tmp/source/目录中可见
ls /tmp/source/hello.txt world.txt