此处将为大家介绍关于修改docker容器的信息的详细内容,并且为您解答有关docker修改容器怎么生效的相关问题,此外,我们还将为您介绍关于167dockerdocker构建nginx容器系列问题do
此处将为大家介绍关于修改 docker 容器的信息的详细内容,并且为您解答有关docker修改容器怎么生效的相关问题,此外,我们还将为您介绍关于167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo、3. docker容器内信息获取、命令的执行、容器的导入和导出、docker - 修改容器的挂载目录三种方式、docker cp 和 docker exec 查看 docker 运行的容器信息的有用信息。
本文目录一览:- 修改 docker 容器的信息(docker修改容器怎么生效)
- 167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo
- 3. docker容器内信息获取、命令的执行、容器的导入和导出
- docker - 修改容器的挂载目录三种方式
- docker cp 和 docker exec 查看 docker 运行的容器信息
修改 docker 容器的信息(docker修改容器怎么生效)
应用例子:修改容器的端口映射
一。方法一:提交镜像,新建容器
docker stop 旧容器 A && docker commit 旧容器 A 新镜像 B && docker run --name 新容器 B -p 127.0.0.1:3306:3306 -e MYSQL_ROOT_PASSWORD=root -d 新镜像 B
二。方法二:修改容器配置文件(推荐)
1. 查看的容器完整 id
docker inspect 容器简短 id | grep Id
2. 停止 docker
systemctl stop docker
3. 修改容器相关配置 (修改 HostIp 为 “127.0.0.1”)
vi /var/lib/docker/containers/ 容器完整 id/hostconfig.json
4. 运行 docker
systemctl start docker
5. 运行容器
docker start 容器名
167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo
background : 最近为小伙伴们筹划docker系列的技术分享,研究了一会docker相关技术, 在此记录一下构建nginx容器时候的坑
1.nginx服务器根目录问题
docker 官方镜像提供的nginx基于debian/jessie平台,其文件结构和ubuntu中的nginx中并不相同
eg:
run一个niginx容器
<span>//80端口被占用,so...</span> $ sudo docker run <span>-it</span><span>-p</span><span>800</span>:<span>800</span> nginx $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES <span>1801</span>a32aab54 nginx <span>"nginx -g ''daemon off"</span><span>2</span> minutes ago Up <span>2</span> minutes <span>80</span>/tcp, <span>443</span>/tcp, <span>0.0</span><span>.0</span><span>.0</span>:<span>800</span><span>-></span><span>800</span>/tcp berserk_kare
进入容器内部
<span>$ </span>sudo docker exec -it <span>1801</span>a32aab54 /bin/bash root<span>@1801a32aab54</span><span>:/</span><span># </span>
查看nginx目录
<span># cd /etc/nginx/</span> conf<span>.d</span>/ koi-utf mime<span>.types</span> nginx<span>.conf</span> uwsgi_params fastcgi_params koi-win modules/ scgi_params win-utf
可以看到不仅没有熟悉的 /sites-available,也没有 /sites-enabled
继续查看nginx配置
<span># cat /conf.d/default.conf</span><span>server</span> { listen <span>80</span>; server_name localhost; <span>#charset koi8-r;</span><span>#access_log /var/log/nginx/log/host.access.log main;</span> location / { root /usr/share/nginx/html; <span>index</span><span>index</span>.html <span>index</span>.htm; } <span>#error_page 404 /404.html;</span><span># redirect server error pages to the static page /50x.html</span><span>#</span> error_page <span>500</span><span>502</span><span>503</span><span>504</span> /<span>50</span>x.html; location = /<span>50</span>x.html { root /usr/share/nginx/html; } <span>#...省略php-fpm配置,好长..</span> }
根目录配置: root /usr/share/nginx/html;
测试
<span># cd /usr/share/nginx/html</span><span># touch index.html</span><span># echo "test nginx in docker" >index.html</span>
php-fpm配置相关
'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });以上就介绍了167 docker docker构建nginx容器系列问题,包括了docker,nginx方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
3. docker容器内信息获取、命令的执行、容器的导入和导出
一、依附容器
依附操作attach通常用在由docker start或者docker restart启动的交互型容器中。由于docker start启动的交互型容器并没有具体终端可以依附,而容器本身是可以接收用户交互的,这时就需要通过attach命令来将终端依附到容器上。
docker start docker_run:先启动docker_run容器。
启动后docker ps可以看到启动的容器,这是我们发现客户端显示的宿主机([root@git ~]#)。
执行docker attach docker_run,终端就已经依附到了容器上,ls显示的就是容器中的目录内容。
- 注意:后台型容器是无法依附终端的,因为它本身就不接受用户交互输入。
二、查看容器日志
首先创建一个不断输出一些内容的后台型容器,我命名为docker_logs,是一个包含循环输出的自然数容器:
docker run -d --name docker_logs centos /bin/bash -c "for((i=0;1;i++));do echo $i;sleep 1;done;
docker logs -f docker_logs:此命令默认情况下是输出从容器启动到执行命令时的所有输出,但是之后的输出就不显示了,-f命令会实时显示日志。
docker logs -f --tail=5 docker_logs:–tail是控制logs输出的行数为最后5行。
三、查看容器进程
docker top:可以查看容器中正在运行的进程。
四、查看容器信息
docker inspect [NAME]/[CONTAINER ID]:用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等:
-
-f
或--format
格式化标志,可以查看指定部分的信息。docker inspect --format=''{{.State.Running}}'' [NAME]/[CONTAINER ID]
:查看容器的运行状态。docker inspect --format=''{{.NetworkSettings.IPAddress}} [NAME]/[CONTAINER ID]''
:查看容器的IP地址。- 同时查看多个信息:
docker inspect --format ''{{.Name}} {{.State.Running}}'' [NAME]/[CONTAINER ID]
:查看容器名和运行状态。
五、容器内执行命令
在容器启动的时候,通常需要指定其需要执行的程序,然而有时候我们需要在容器运行之后中途启动另一个程序。从Docker1.3开始,我们可以用docker exec命令在容器中运行新的任务,它可以创建两种任务:后台型和交互型。
docker exec -d docker_logs touch /etc/exec_new_file:-d:后台型,并在容器中创建一个文件。
六、容器的导入和导出
用户不仅可以把容器提交到公共服务器上,还可以将容器导出到本地文件系统中。
同样,我们也可以将导出的容器重新导入到Docker运行环境中。导入:`import`,导出:`export`。
docker export docker_logs > docker_logs_export.tar:把容器的文件系统以tar包的格式导出到标准输出。
cat docker_logs_export.tar | docker import - [res]:[tag]:把打包的容器导入为一个镜像,res代表镜像。tag代表标记。
docker import url res:tag:还可以通过一个url链接来导入网络上的容器。
docker - 修改容器的挂载目录三种方式
方式一:修改配置文件(需停止 docker 服务)
1、停止 docker 服务
systemctl stop docker.service(关键,修改之前必须停止 docker 服务)
2、vim /var/lib/docker/containers/container-ID/config.v2.json
修改配置文件中的目录位置,然后保存退出
"MountPoints":{"/home":{"Source":"/docker","Destination":"/home","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"//docker/","Target":"/home"}}}
1
3、启动 docker 服务
systemctl start docker.service
4、启动 docker 容器
docker start <container-name/ID>
方式二:提交现有容器为新镜像,然后重新运行它
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a3422adeead ubuntu:14.04 "/bin/bash" About a minute ago Exited (0) About a minute ago agitated_newton
$ docker commit 5a3422adeead newimagename
$ docker run -ti -v "$PWD/dir1":/dir1 -v "$PWD/dir2":/dir2 newimagename /bin/bash
1
2
3
4
5
然后停止旧容器,并使用这个新容器,如果由于某种原因需要新容器使用旧名称,请在删除旧容器后使用 docker rename。
方式三:export 容器为镜像,然后 import 为新镜像
$docker container export -o ./myimage.docker 容器 ID
$docker import ./myimage.docker newimagename
$docker run -ti -v "$PWD/dir1":/dir1 -v "$PWD/dir2":/dir2 newimagename /bin/bash
1
2
3
然后停止旧容器,并使用这个新容器,如果由于某种原因需要新容器使用旧名称,请在删除旧容器后使用 docker rename。
docker cp 和 docker exec 查看 docker 运行的容器信息
1. 使用 docker 运行 redis 和 postgresql
docker run -d -p 6379:6379 -v /redis/data/:/data redis
docker run -d -p 5432:5432 -v /postgres/data:/var/lib/postgresql/data postgres
2. 验证工作目录
docker inspect redis
3. 查看 contrainer 的名字
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09370c8d3f66 redis "docker-entrypoint..." 2 hours ago Up 2 hours 0.0.0.0:6379->6379/tcp determined_turing
b729386f1712 postgres "docker-entrypoint..." 2 hours ago Up 2 hours 0.0.0.0:5432->5432/tcp mystifying_beaver
4. 进入 redis 进行操作
docker exec -it determined_turing redis-cli
5. 将 images 里面的内容都 copy 到 host 的物理路径下面
docker cp determined_turing:/ /redis
交换顺序就能够将 宿主机的内容 复制到 docker container 里面去了.
今天的关于修改 docker 容器的信息和docker修改容器怎么生效的分享已经结束,谢谢您的关注,如果想了解更多关于167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo、3. docker容器内信息获取、命令的执行、容器的导入和导出、docker - 修改容器的挂载目录三种方式、docker cp 和 docker exec 查看 docker 运行的容器信息的相关知识,请在本站进行查询。
本文标签: