赞
踩
目录
4、两个危险的命令 docker image prune && docker system prune
2、docker images或者docker image ls 查看镜像
4、docker rmi或者docker image rm 删除镜像
5、docker container commit 构建镜像
7、docker commit 和docker build的优劣势
4.2 docker network inspect {networkid}
多看看这个图,加深记忆!
首次运行如果本地没有该base image,则会从远端clone一个base images。
- [root@MiWiFi-R3L-srv ~]# docker run centos
- Unable to find image 'centos:latest' locally
- latest: Pulling from library/centos
- 3c72a8ed6814: Pull complete
- Digest: sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd
- Status: Downloaded newer image for centos:latest
- [root@MiWiFi-R3L-srv ~]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- centos latest 0d120b6ccaa8 2 months ago 215MB
- hello-world latest bf756fb1ae65 10 months ago 13.3kB
- [root@MiWiFi-R3L-srv ~]# docker run centos
- [root@MiWiFi-R3L-srv ~]#
docker run centos 执行完之后centos对应的/bin/bash 就退出了。
交互式的docker run
- [root@MiWiFi-R3L-srv ~]# docker run -it centos
- [root@de7d5f1cad4e /]# ls -l
- total 0
- lrwxrwxrwx. 1 root root 7 May 11 2019 bin -> usr/bin
- drwxr-xr-x. 5 root root 360 Nov 3 14:23 dev
- drwxr-xr-x. 1 root root 66 Nov 3 14:23 etc
- drwxr-xr-x. 2 root root 6 May 11 2019 home
- lrwxrwxrwx. 1 root root 7 May 11 2019 lib -> usr/lib
- lrwxrwxrwx. 1 root root 9 May 11 2019 lib64 -> usr/lib64
- drwx------. 2 root root 6 Aug 9 21:40 lost+found
- drwxr-xr-x. 2 root root 6 May 11 2019 media
- drwxr-xr-x. 2 root root 6 May 11 2019 mnt
- drwxr-xr-x. 2 root root 6 May 11 2019 opt
- dr-xr-xr-x. 308 root root 0 Nov 3 14:23 proc
- dr-xr-x---. 2 root root 162 Aug 9 21:40 root
- drwxr-xr-x. 11 root root 163 Aug 9 21:40 run
- lrwxrwxrwx. 1 root root 8 May 11 2019 sbin -> usr/sbin
- drwxr-xr-x. 2 root root 6 May 11 2019 srv
- dr-xr-xr-x. 13 root root 0 Oct 29 14:24 sys
- drwxrwxrwt. 7 root root 145 Aug 9 21:40 tmp
- drwxr-xr-x. 12 root root 144 Aug 9 21:40 usr
- drwxr-xr-x. 20 root root 262 Aug 9 21:40 var
- [root@de7d5f1cad4e /]#

此时使用docker container ls 可以看到正在运行的image
-
- [root@MiWiFi-R3L-srv ~]# docker container ls
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- [root@MiWiFi-R3L-srv ~]#
- [root@MiWiFi-R3L-srv ~]#
- [root@MiWiFi-R3L-srv ~]# docker container ls -a
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 7af01d5e9dda centos "/bin/bash" 13 seconds ago Exited (0) 12 seconds ago happy_sinoussi
- 9514cf1bd842 centos "/bin/bash" 52 seconds ago Exited (0) 51 seconds ago sweet_curie
- 0edb374d25bb hello-world "/hello" 24 hours ago Exited (0) 24 hours ago bold_burnell
docker container的命令列表,使用rm
root@MiWiFi-R3L-srv ~]# docker container
或者docker rm de7 ,默认删除的container
注意不要加上参数 i 就是 删除image。
docker rmi {id}
如何批量删除已经退出的container?
- [root@MiWiFi-R3L-srv ~]# docker container ls -a
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 922dd27b0faf centos "/bin/bash" 10 seconds ago Exited (0) 9 seconds ago mystifying_khorana
- af024051dd04 centos "/bin/bash" 13 seconds ago Exited (0) 12 seconds ago inspiring_mendeleev
- 3c91318afd1e centos "/bin/bash" 16 seconds ago Exited (0) 15 seconds ago modest_johnson
- 7af01d5e9dda centos "/bin/bash" 21 minutes ago Exited (0) 21 minutes ago happy_sinoussi
- 9514cf1bd842 centos "/bin/bash" 21 minutes ago Exited (0) 21 minutes ago sweet_curie
- 0edb374d25bb hello-world "/hello" 24 hours ago Exited (0) 24 hours ago bold_burnell
使用-q参数列出containerId
- root@MiWiFi-R3L-srv ~]# docker container ls -aq
- 922dd27b0faf
- af024051dd04
- 3c91318afd1e
- 7af01d5e9dda
- 9514cf1bd842
- 0edb374d25bb
如果你会使用awk,不使用这个参数完全可以,请看:
- [root@MiWiFi-R3L-srv ~]# docker container ls -a|grep -v CONTAINER|awk '{print $1}'
- 922dd27b0faf
- af024051dd04
- 3c91318afd1e
- 7af01d5e9dda
- 9514cf1bd842
- 0edb374d25bb
删除所有已经退出的container,世界清静了。
- [root@MiWiFi-R3L-srv ~]# docker rm $(docker container ls -aq)
- 922dd27b0faf
- af024051dd04
- 3c91318afd1e
- 7af01d5e9dda
- 9514cf1bd842
- 0edb374d25bb
- [root@MiWiFi-R3L-srv ~]# docker container ls -a
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- [root@MiWiFi-R3L-srv ~]#
这样把正在run的container也干掉了,显然是不行的。例如这样如何只干掉Exited的container呢?
-f 过滤状态,当然shell也可以实现
- root@MiWiFi-R3L-srv ~]# docker container ls -f "status=exited"
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- e03dda244d80 centos "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago jolly_euclid
- 590c5bd090d7 centos "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago sweet_hertz
- 707300b53120 centos "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago pedantic_liskov
- dbf30d595e76 centos "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago goofy_leakey
- [root@MiWiFi-R3L-srv ~]# docker container ls -f "status=exited" -q
- e03dda244d80
- 590c5bd090d7
- 707300b53120
- dbf30d595e76
docker rm -f $(docker ps -aq) 强制删除所有容器
- docker ps -s
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
- e06dcb6e2ecc busybox "/bin/sh -c 'while t…" 34 hours ago Up 34 hours vibrant_diffie 0B (virtual 1.24MB)
size:用于每个容器的可写层的数据量(在磁盘上)。
virtual size:容器使用的用于只读图像数据的数据量加上容器的可写图层大小。
多个容器可以共享部分或全部只读图像数据。
从同一图像开始的两个容器共享100%的只读数据,而具有不同图像的两个容器(具有相同的层)共享这些公共
层。 因此,不能只对虚拟大小进行总计。这高估了总磁盘使用量,可能是一笔不小的数目。
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- :把容器里面的复制出来
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH:把外部的复制进去
SRC_PATH 指定为一个文件
SRC_PATH 指定为一个目录
自动创建文件夹不会做递归。把父文件夹做好
~]# docker cp index.html mynginx4:/usr/share/nginx/html
~]# docker cp mynginx4:/etc/nginx/nginx.conf nginx.conf
场景:我们无需暴露mysql的情况下,让web应用使用mysql;
--link name:alias ,name连接容器的名称,alias连接的别名
- docker run -d -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
- docker run -d --link mysql01:mysql --name tomcat tomcat:7
- docker exec -it tomcat bash
- cat /etc/hosts
- ping mysql
docker stats
镜像是一个只读的 Docker 容器模板,包含启动容器所需要的所有文件系统结构和内容。简单来讲,镜像是一个特殊的文件系统,它提供了容器运行时所需的程序、软件库、资源、配置等静态数据。即镜像不包含任何动态数据,镜像内容在构建后不会被改变。
镜像的操作
从图中可知,镜像的操作可分为:
docker中有一个base image,例如centos、ubuntu、nginx、python.... 这些都是熟知的有名的docker 镜像,当你基于某个base image生成了container,想把它变成一个自己的base image,如何做?
- $ docker pull busybox
- Using default tag: latest
- latest: Pulling from library/busybox
- 61c5ed1cbdf8: Pull complete
- Digest: sha256:4f47c01fa91355af2865ac10fef5bf6ec9c7f42ad2321377c21e844427972977
- Status: Downloaded newer image for busybox:latest
- docker.io/library/busybox:latest
实际上执行docker pull busybox命令,都是先从本地搜索,如果本地搜索不到busybox镜像则从 Docker Hub 下载镜像。
什么时候用?
如果你想要自定义镜像名称或者推送镜像到其他镜像仓库.
可以看到,镜像列表中多了一个mybusybox的镜像。但细心的同学可能已经发现,busybox和mybusybox这两个镜像的 IMAGE ID 是完全一样的。
为什么呢?实际上它们指向了同一个镜像文件,只是别名不同而已。
docker commit。可理解为是基于一个改变了的container生成image。
例如我本地clone的image没有vim,进入容器中 docker run -it centos
安装vim后container commit成一个新的镜像
- root@MiWiFi-R3L-srv ~]# docker run -it centos
- [root@7bbfd1dbf6b0 /]#
- [root@7bbfd1dbf6b0 /]#
- [root@7bbfd1dbf6b0 /]# vim
- bash: vim: command not found
- [root@7bbfd1dbf6b0 /]# yum install -y vim
- Failed to set locale, defaulting to C.UTF-8
- CentOS-8 - AppStream 1.0 MB/s | 5.8 MB 00:05
- CentOS-8 - Base 1.2 MB/s | 2.2 MB 00:01
- CentOS-8 - Extras 8.2 kB/s | 8.1 kB 00:00
- Dependencies resolved.
- ==========================================================================================================================================================================================================
- Package Architecture Version Repository Size
- ==========================================================================================================================================================================================================
- Installing:
- vim-enhanced x86_64 2:8.0.1763-13.el8 AppStream 1.4 M
- Installing dependencies:
- root@MiWiFi-R3L-srv ~]# docker run -it centos
- [root@7bbfd1dbf6b0 /]#
- [root@7bbfd1dbf6b0 /]#
- [root@7bbfd1dbf6b0 /]# vim
- bash: vim: command not found
- [root@7bbfd1dbf6b0 /]# yum install -y vim
- Failed to set locale, defaulting to C.UTF-8
- CentOS-8 - AppStream 1.0 MB/s | 5.8 MB 00:05
- CentOS-8 - Base 1.2 MB/s | 2.2 MB 00:01
- CentOS-8 - Extras 8.2 kB/s | 8.1 kB 00:00
- Dependencies resolved.
- ==========================================================================================================================================================================================================
- Package Architecture Version Repository Size
- ==========================================================================================================================================================================================================
- Installing:
- vim-enhanced x86_64 2:8.0.1763-13.el8 AppStream 1.4 M
- Installing dependencies:
- .....
- Installed:
- gpm-libs-1.20.7-15.el8.x86_64 vim-common-2:8.0.1763-13.el8.x86_64 vim-enhanced-2:8.0.1763-13.el8.x86_64 vim-filesystem-2:8.0.1763-13.el8.noarch which-2.21-12.el8.x86_64
-
- Complete!

现在这个container 已经基于base image 增加了一层。
- [root@MiWiFi-R3L-srv ~]# docker container ls -a
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 7bbfd1dbf6b0 centos "/bin/bash" 5 minutes ago Exited (0) 5 seconds ago naughty_bohr
执行docker commit
- ~]# docker commit naughty_bohr ninesun0318/centos-vim
- sha256:e429c2ad99ac9aef24b05b83294d523e2c1e329a4797b336cc695236ea258d5d
查看新生产的image
其大小比base image大一些
- [root@MiWiFi-R3L-srv ~]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- ninesun0318/centos-vim latest e429c2ad99ac 36 seconds ago 272MB
- centos latest 0d120b6ccaa8 2 months ago 215MB
- hello-world latest bf756fb1ae65 10 months ago 13.3kB
其实他们共享了很多layer,用这张图脑补一下。
可以比较一下两个image。 重叠的层是三层,我们只是在base image上安装vim。
- [root@MiWiFi-R3L-srv ~]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- ninesun0318/centos-vim latest e429c2ad99ac 36 seconds ago 272MB
- centos latest 0d120b6ccaa8 2 months ago 215MB
- hello-world latest bf756fb1ae65 10 months ago 13.3kB
-
-
- root@MiWiFi-R3L-srv ~]# docker history 0d120b6ccaa8
- IMAGE CREATED CREATED BY SIZE COMMENT
- 0d120b6ccaa8 2 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
- <missing> 2 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
- <missing> 2 months ago /bin/sh -c #(nop) ADD file:538afc0c5c964ce0d… 215MB
- [root@MiWiFi-R3L-srv ~]#
- [root@MiWiFi-R3L-srv ~]#
- [root@MiWiFi-R3L-srv ~]# docker history e429c2ad99ac
- IMAGE CREATED CREATED BY SIZE COMMENT
- e429c2ad99ac 3 minutes ago /bin/bash 57.2MB
- 0d120b6ccaa8 2 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
- <missing> 2 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
- <missing> 2 months ago /bin/sh -c #(nop) ADD file:538afc0c5c964ce0d… 215MB

方式二:
可简写为docker bulid,这种方式是最重要也是最常用的镜像构建方式:Dockerfile。Dockerfile 是一个包含了用户所有构建命令的文本。通过docker build命令可以从 Dockerfile 生成镜像。
先删除刚才通过docker commit创建的image,然后通过dockerfile 创建image
- ~]# docker image rm e429c2ad99ac
- Untagged: ninesun0318/centos-vim:latest
- Deleted: sha256:e429c2ad99ac9aef24b05b83294d523e2c1e329a4797b336cc695236ea258d5d
- Deleted: sha256:67d1903314845339b44999096e0d3a92e0319cfd1834a446560f050aa2a90beb
- [root@MiWiFi-R3L-srv ~]#
- [root@MiWiFi-R3L-srv ~]#
- [root@MiWiFi-R3L-srv ~]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- centos latest 0d120b6ccaa8 2 months ago 215MB
- hello-world latest bf756fb1ae65 10 months ago 13.3kB
编写dockerfile文件
FROM 后面跟base image
RUN 后面跟要执行的命令
- @MiWiFi-R3L-srv centos-vim]# more Dockerfile
- FROM centos
- RUN yum install -y vim
docker build -t ninesun0318/centos-vim-new .
-t 指定imagename
. 代表当前目录
- [root@MiWiFi-R3L-srv centos-vim]# docker build ninesun0318/centos-vim-new .
- "docker build" requires exactly 1 argument.
- See 'docker build --help'.
-
- Usage: docker build [OPTIONS] PATH | URL | -
-
- Build an image from a Dockerfile
- [root@MiWiFi-R3L-srv centos-vim]# docker build -t ninesun0318/centos-vim-new .
- Sending build context to Docker daemon 2.048kB
- Step 1/2 : FROM centos
- ---> 0d120b6ccaa8
- Step 2/2 : RUN yum install -y vim
- ---> Running in 66b68ccc08c6
- CentOS-8 - AppStream 1.5 MB/s | 5.8 MB 00:03
- CentOS-8 - Base 61 kB/s | 2.2 MB 00:37
- CentOS-8 - Extras 6.3 kB/s | 8.1 kB 00:01
- 。。。。。。
-
- Complete!
- Removing intermediate container 66b68ccc08c6
- ---> 23cad8f7275a
- Successfully built 23cad8f7275a
- Successfully tagged ninesun0318/centos-vim-new:latest
-
- [root@MiWiFi-R3L-srv centos-vim]# more Dockerfile
- FROM centos
- RUN yum install -y vim
- [root@MiWiFi-R3L-srv centos-vim]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- ninesun0318/centos-vim-new latest 23cad8f7275a 2 minutes ago 272MB
- centos latest 0d120b6ccaa8 2 months ago 215MB
- hello-world latest bf756fb1ae65 10 months ago 13.3kB

再看一个例子:
- FROM centos:7
- COPY nginx.repo /etc/yum.repos.d/nginx.repo
- RUN yum install -y nginx
- EXPOSE 80
- ENV HOST=mynginx
- CMD ["nginx","-g","daemon off;"]
逐行分析一下上述的 Dockerfile
首先说明 docker commit 这种方式创建image不受欢迎,为什么呢?
如果有人使坏,把不该安装的软件打包在新的images,例如我docker commit一个安装监控程序的image。然后有人拉取之后就可能存在被监控的风险。因此大家clone 比人的镜像时要注意。
唯一能看到的就是这个image的构建历史。可以使用 docker history 命令查看镜像构建历史.
最好使用docker image build
原因:
Docker 镜像是由一系列镜像层(layer)组成的,每一层代表了镜像构建过程中的一次提交。下面以一个镜像构建的 Dockerfile 来说明镜像是如何分层的。
第一行基于 busybox 创建一个镜像层;
第二行拷贝本机 test 文件到镜像内;
第三行在 /tmp 文件夹下创建一个目录 testdir。
实验:
提示本地没有 test这个文件
在当前目录创建该文件.
有一个问题就是:base image 是read only的,那我们如何对这个base image进行写操作呢(此处的写操作代表run instal vim)?
从docker build的log来看
先基于base image docker run了一个临时的container,安装结束后dock rm了这个container。
我的 Docker 使用的是 overlay2 文件驱动(这部分涉及docker的文件系统),进入到/var/lib/docker/overlay2
目录下使用tree .
命令查看产生的镜像文件:
分层的结构使得 Docker 镜像非常轻量,每一层根据镜像的内容都有一个唯一的 ID 值,当不同的镜像之间有相同的镜像层时,便可以实现不同的镜像之间共享镜像层的效果。注意镜像层共享是 Docker 默认的机制,无需设置。所以docker 镜像非常轻量级. 深入理解docker 一定会帮助你理解linux 的设计精髓.
Docker 是一个C/S架构的程序,Docker客户端向Docker的服务端(Docker daemon) 发出请求,服务端处理完请求并返回结果。
Docker daemon: 运行在宿主机上,Docker的守护进程,用户通过 docker
命令与Docker daemon交互。
Docker client: Docker命令行工具,是用户管理运维Docker的主要方式,Docker client向Docker daemon发出请求,Docker daemon将结果返回给用户,Docker client也可以通过socket或者RESTful api访问Docker daemon。
image:镜像本质上是一个文件系统及其参数配置的组合。Docker 会把应用程序及依赖打包进镜像里,提供了容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等),通过这个镜像文件可生成 Docker 容器。一个镜像可以运行一个或者多个容器,镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。
container:容器是从镜像创建的应用运行实例,启动一个镜像就是一个容器,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。
registry: 仓库,共享和管理Docker镜像的地方,用户可以上传或者下载上面的镜像,官方地址为 https://registry.hub.docker.com/
,各个公司也可以搭建私有Docker registry,可参考
镜像就相当于打包好的代码,镜像启动之后运行在容器中,仓库就是装存储镜像的地方。
从官方网站上拷贝另一种图,介绍Docker Engine 纬度的架构。清晰的介绍server/client交互,容器和镜像、数据之间的一些联系。
- [root@iZ2vceej7yes1abpm7yec2Z ~]# docker network ls
- NETWORK ID NAME DRIVER SCOPE
- 71d80d66fb2a bridge bridge local
- f598127068c2 host host local
- 72b31044e6dc none null local
- [root@iZ2vceej7yes1abpm7yec2Z ~]# docker network inspect 71d80d66fb2a
- [
- {
- "Name": "bridge",
- "Id": "71d80d66fb2a09d5914944ae9f2680d01b646fda7587459eb33d6f88baa8f8f6",
- "Created": "2020-11-12T16:36:00.84520899+08:00",
- "Scope": "local",
- "Driver": "bridge",
- "EnableIPv6": false,
- "IPAM": {
- "Driver": "default",
- "Options": null,
- "Config": [
- {
- "Subnet": "172.17.0.0/16",
- "Gateway": "172.17.0.1"
- }
- ]
- },
- "Internal": false,
- "Attachable": false,
- "Ingress": false,
- "ConfigFrom": {
- "Network": ""
- },
- "ConfigOnly": false,
- "Containers": {
- "4209ba002f3df2779455981caebca34c2316ff33c3a23d5b96cbb1c7d46befde": {
- "Name": "gallant_ramanujan",
- "EndpointID": "71c5f117cb873858e4a812d30bc818805473ecc689c43acbbbc63e9131662b24",
- "MacAddress": "02:42:ac:11:00:03",
- "IPv4Address": "172.17.0.3/16",
- "IPv6Address": ""
- },
- "51ea3cd11968aca93d47c7f05196170fcb48f9bb8edeaca8a2724ecff8da951d": {
- "Name": "test2",
- "EndpointID": "68df151e913982921e62e9bfce53b24ae2747e3d818559f87f94f04ef0f9490d",
- "MacAddress": "02:42:ac:11:00:04",
- "IPv4Address": "172.17.0.4/16",
- "IPv6Address": ""
- },
- "5ec232785650ae40d6e711dc8e3e1e5e653231d67e324e048de15ec0b649011a": {
- "Name": "djapp1",
- "EndpointID": "ee58cab72ff088023275afe8e34727b4891446a4b0b5fa79549c8205878568aa",
- "MacAddress": "02:42:ac:11:00:02",
- "IPv4Address": "172.17.0.2/16",
- "IPv6Address": ""
- }
- },
- "Options": {
- "com.docker.network.bridge.default_bridge": "true",
- "com.docker.network.bridge.enable_icc": "true",
- "com.docker.network.bridge.enable_ip_masquerade": "true",
- "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
- "com.docker.network.bridge.name": "docker0",
- "com.docker.network.driver.mtu": "1500"
- },
- "Labels": {}
- }
- ]

每一个容器里面的内容,支持三种挂载方式:
1)、docker自动在外部创建文件夹自动挂载容器内部指定的文件夹内容【Dockerfile VOLUME指令的作
用】
2)、自己在外部创建文件夹,手动挂载
3)、可以把数据挂载到内存中。
-v 可以自动挂载,到linux'主机或者docker自动管理的这一部分区域
三种挂载方式:
1、不挂载
docker run -dP
效果:访问默认欢迎页
2、绑定挂载(空挂载)
dokcer run -dP -v /root/html:/usr/share/nginx/html
效果:访问forbidden
外部目录覆盖内部容器目录内容,但不是修改。所以谨慎,外部空文件夹挂载方式也会导
致容器内部是空文件夹
docker inspect 查看如下:
3、卷挂载
具名卷:
docker run -dP -v html:/usr/share/nginx/html:ro
效果:访问默认欢迎页
docker inspect 查看如下:
匿名卷 :(什么都不写也不要加冒号,直接写容器内的目录)
docker run -dP -v /usr/share/nginx/html
效果:访问默认欢迎页
docker inspect 查看如下:
关于匿名卷其实docker帮我们做了创建以及将卷绑定内容目录的过程
1、先在docker底层创建一个你指定名字的卷(具名卷) html
2、把这个卷和容器内部目录绑定
docker create volume nginxhtml 如果给卷里面进行修改,容器内部的也就改了。
具体可以使用 docker volume inspect volumename查看
3、容器启动以后,目录里面的内容就在卷里面存着;
1、提前准备好东西 目录nginxconf,目录里面的配置we年都放里面,,再调用命令
2、docker cp nginxdemo:/etc/nginx /root/nginxconf #注意/的使用
3、docker run -d -P -v /root/nginxconf:/etc/nginx/ -v /root/nginxhtml:/usr/share/nginx/html --name=nginx999 nginx
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。