GVKun编程网logo

修改 docker 容器的信息(docker修改容器怎么生效)

7

此处将为大家介绍关于修改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修改容器怎么生效)

修改 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

167 docker docker构建nginx容器系列问题 docker registry docker run docker toolbo

docker构建nginx容器系列问题


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>-&gt;</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" &gt;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容器内信息获取、命令的执行、容器的导入和导出

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 - 修改容器的挂载目录三种方式

方式一:修改配置文件(需停止 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 运行的容器信息

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 运行的容器信息的相关知识,请在本站进行查询。

本文标签: