当前位置: 首页 > news >正文

Docker 容器核心知识总结

Docker 容器核心知识总结

一、Docker 容器基础概念

  • 本质:容器是一个运行中的进程,通过封装功能实现与主机、其他容器的隔离,核心隔离特性是 “专用文件系统”
  • 文件系统来源:由 Docker 镜像提供,镜像包含应用运行所需的代码、二进制文件、依赖及文件系统对象
  • 镜像与容器关系:类似 “类与实例”,镜像是静态的定义模板,容器是镜像运行时的实体,可进行创建、启动、停止等生命周期管理

二、Docker 容器核心操作

(一)容器创建与启动

操作场景命令及示例关键说明
1. 仅创建(停止状态)docker create -it [镜像名:标签]示例:docker create -it centos:7-i:保持容器标准输入打开;-t:分配伪终端;创建后用docker ps -a查看
2. 启动已创建容器docker start [容器ID/名称]示例:docker start 8a6831bba185启动后用docker ps查看运行中的容器
3. 创建并直接启动docker run -it [镜像名:标签] [命令]示例:docker run -it centos:7 /bin/bash等价于 “docker create + docker start”;退出交互终端(如exit)后,容器自动停止(因应用进程结束)

(二)容器停止与暂停

操作类型命令及示例状态变化
1. 暂停运行中容器docker pause [容器ID/名称]示例:docker pause 8a6831bba185容器状态变为 “Up (Paused)”,暂停后可恢复
2. 恢复暂停容器docker unpause [容器ID/名称]示例:docker unpause 8a6831bba185容器恢复为 “Up”(正常运行状态)
3. 终止运行中容器docker stop [容器ID/名称]示例:docker stop 8a6831bba185容器状态变为 “Exited”;可通过docker container prune清理所有停止状态的容器

(三)进入运行中容器

进入容器需先确保容器后台运行(启动时加-d参数),两种方式对比:

进入方式命令及示例优缺点
docker attach示例:docker attach httpd(httpd 为容器名)缺点:退出终端(如exit)会导致容器停止,不推荐使用
docker execdocker exec -it [容器ID/名称] [命令]示例:docker exec -it httpd /bin/bash优点:退出终端不影响容器运行,是推荐的进入方式;-it参数确保交互性

(四)容器删除

删除场景命令及示例限制与说明
1. 删除停止状态容器docker rm [容器ID/名称]示例:docker rm httpd默认仅能删除 “Exited” 状态的容器;需先通过docker stop停止运行中容器
2. 强制删除运行中容器docker rm -f [容器ID/名称]示例:docker rm -f httpd-f参数跳过 “停止” 步骤,直接删除运行中的容器,谨慎使用

(五)容器导入与导出(跨系统迁移)

操作类型命令及示例关键说明
1. 导出容器(生成压缩包)docker export -o [输出文件名.tar] [容器ID/名称]示例:docker export -o test_httpd.tar 55c631353b28支持导出 “运行中” 或 “停止中” 的容器;-o可替换为重定向符号>(如docker export 55c631353b28 > test.tar
2. 导入容器(生成镜像)docker import [压缩包名] [新镜像名:标签]示例:docker import test_httpd.tar mytest:cy导入后生成新镜像,需基于新镜像创建容器才能使用(导入的是 “文件系统快照”,非完整容器状态)

三、Docker 容器应用操作

(一)容器端口映射(外部访问容器服务)

用于将容器内端口映射到宿主机端口,实现外部(如浏览器)访问容器中的服务(如 Web 服务),两种映射方式:

映射类型命令及示例效果示例
1. 随机端口映射docker run -itd -P [镜像名:标签]示例:docker run --name httpd -itd -P httpd:latest-P:将容器暴露端口(如 80)随机映射到宿主机端口(如 49154);用docker ps查看映射结果(如0.0.0.0:49154->80/tcp
2. 指定端口映射docker run -itd -p [宿主机端口]:[容器端口] [镜像名:标签]示例:docker run --name httpd2 -itd -p 8080:80 httpd:latest-p:手动指定宿主机端口(如 8080)映射到容器端口(如 80);外部可通过 “宿主机 IP:8080” 访问容器服务

(二)容器日志与详情查看

操作需求命令及示例输出内容
1. 查看容器日志docker logs [容器ID/名称]示例:docker logs httpd2显示容器所有日志(如服务启动信息、访问记录),示例中包含 Apache 启动日志、HTTP 请求日志
2. 查看容器详细信息docker inspect [容器ID/名称]示例:docker inspect httpd2输出 JSON 格式详情,包括创建时间、使用镜像、端口映射、网络配置等核心信息

(三)部署 Web 服务器(以 Nginx 为例)

步骤 1:获取 Nginx 镜像
  • 搜索镜像:docker search nginx(查看 Docker Hub 上的 Nginx 镜像,优先选择 “OFFICIAL” 官方镜像)
  • 拉取镜像:docker pull nginx(默认拉取latest标签的最新版本)
步骤 2:基础启动(默认配置)
  • 命令:docker run --name nginx-test -p 80:80 -itd nginx:latest
  • 效果:容器启动后,外部通过 “宿主机 IP:80” 访问 Nginx 默认页面(“Welcome to nginx!”)
步骤 3:自定义配置(数据卷挂载)

为实现 “配置持久化” 和 “数据共享”,通过-v参数挂载宿主机目录到容器:

  1. 创建宿主机目录:mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf(分别对应 Nginx 的网页目录、日志目录、配置目录)

  2. 拷贝容器默认配置到宿主机:docker cp [容器ID]:/etc/nginx/nginx.conf ~/nginx/conf/(如docker cp 1552cf50adc8:/etc/nginx/nginx.conf ~/nginx/conf/

  3. 启动自定义容器:

    docker run -itd -p 20000:80 --name nginx-test-1 \
    -v ~/nginx/www:/usr/share/nginx/html \  # 网页目录挂载
    -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \  # 配置文件挂载
    -v ~/nginx/logs:/var/log/nginx \  # 日志目录挂载
    nginx:latest
    
  4. 自定义网页访问:在~/nginx/www目录下创建index.html(如内容 “welcome to luoqi!!!”),外部通过 “宿主机 IP:20000” 访问自定义页面

(四)其他实用命令

命令用途命令及示例说明
复制文件(本地 - 容器)docker container cp [本地路径] [容器ID/名称]:[容器路径]示例:docker container cp data d5e5e991b5dc:/tmp支持本地文件 / 目录复制到容器,反之亦然(容器→本地)。
查看容器内文件变更docker container diff [容器ID/名称]示例:docker container diff d5e5e991b5dc显示容器创建后新增、修改、删除的文件列表。
查看容器端口映射详情docker container port [容器ID/名称]示例:docker container port d5e5e991b5dc快速查看容器端口与宿主机端口的映射关系。

四、核心注意事项

  1. 容器生命周期关联:容器的运行依赖内部应用进程,应用退出(如exit关闭bash)则容器自动停止
  2. 进入容器推荐方式:优先用docker exec,避免docker attach(退出会停止容器)
  3. 容器删除限制:默认仅能删除 “Exited” 状态容器,运行中容器需先stop或加-f强制删除
  4. 外部访问前提:容器服务需通过-P/-p映射端口到宿主机,外部才能通过 “宿主机 IP: 端口” 访问
  5. 数据持久化:部署服务时(如 Nginx),通过-v挂载宿主机目录,避免容器删除后配置、日志、网页数据丢失

docker容器相关操作:

创建容器:

create
可以使用docker create创建一个容器,创建后,可以通过docker ps或者docker ps -a命令进行查看

[root@docker ~]# docker create -it centos:7
bd6349204aa76bc9bdabff0aed1a458e612a292a4a291e915877adb2ae980173
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS    PORTS     NAMES
bd6349204aa7   centos:7   "/bin/bash"   10 seconds ago   Created             clever_shamir

命令参数使用说明:
create:创建容器
-i: 让容器的标准输入保持打开
-t: 分配一个伪终端并绑定到容器的标准输入上

启动容器:

start
使用docker create 命令新建的容器处于停止状态,可以使用docker start命令来启动它

[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS    PORTS     NAMES
bd6349204aa7   centos:7   "/bin/bash"   10 seconds ago   Created             clever_shamir
[root@docker ~]# docker start bd6349204aa7
bd6349204aa7
[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS         PORTS     NAMES
bd6349204aa7   centos:7   "/bin/bash"   About a minute ago   Up 5 seconds             clever_shamir

当退出容器后,容器就自动停止,可以使用Docker ps -a查看容器的up/down

[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS              PORTS     NAMES
bd6349204aa7   centos:7   "/bin/bash"   2 minutes ago   Up About a minute             clever_shamir

运行容器

run
除了创建容器后通过start命令来启动,也可以直接新建并启动容器。所需要的命令主要为docker run,等价于先执行docker create命令,再执行docker start命令。下面的命令启动一个bash终端,运行用户进行交互

[root@docker ~]# docker run -it centos:7 /bin/bash
[root@6260fbe44a84 /]# 

对于创建的bash容器,当用户使用exit命令退出bash进程之后,容器也会自动退出。这是因为对于容器来说,当其中的应用退出后,容器的使命完成,也就没有继续运行的必要了

[root@docker ~]# docker run -it centos:7 /bin/bash
[root@1f9c6a2838cc /]# exit
exit
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS                        PORTS     NAMES
1f9c6a2838cc   centos:7   "/bin/bash"   24 seconds ago       Exited (0) 15 seconds ago               jolly_gauss
6260fbe44a84   centos:7   "/bin/bash"   About a minute ago   Exited (127) 40 seconds ago             gracious_brown
bd6349204aa7   centos:7   "/bin/bash"   5 minutes ago        Up 4 minutes                            clever_shamir

停止容器:

可以使用docker pause 命令来暂停一个运行中的容器

[root@docker ~]# docker run -itd centos:7 /bin/bash
3f78420bdd4051f91a31e00bba02a5d38fd889ba98553a14f78d32f1faea233c
[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
3f78420bdd40   centos:7   "/bin/bash"   7 seconds ago   Up 6 seconds             focused_clarke
[root@docker ~]# docker pause 3f78420bdd40
3f78420bdd40
[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS                  PORTS     NAMES
3f78420bdd40   centos:7   "/bin/bash"   2 minutes ago   Up 2 minutes (Paused)             focused_clarke

停止容器
处于paused状态的容器,可以使用docker unpause命令来恢复到运行状态

[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS                  PORTS     NAMES
3f78420bdd40   centos:7   "/bin/bash"   5 minutes ago   Up 5 minutes (Paused)             focused_clarke
[root@docker ~]# docker unpause 3f78420bdd40
3f78420bdd40
[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
3f78420bdd40   centos:7   "/bin/bash"   6 minutes ago   Up 6 minutes             focused_clarke

停止容器
可以使用docker stop来终止一个运行中的容器

[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
3f78420bdd40   centos:7   "/bin/bash"   6 minutes ago   Up 6 minutes             focused_clarke
[root@docker ~]# docker stop 3f78420bdd40
3f78420bdd40
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                            PORTS     NAMES
3f78420bdd40   centos:7   "/bin/bash"   15 minutes ago   Exited (137) About a minute ago             focused_clarke
53f717e0761a   centos:7   "/bin/bash"   16 minutes ago   Exited (0) 15 minutes ago                   clever_swanson
a65794347551   centos:7   "/bin/bash"   20 minutes ago   Exited (0) 19 minutes ago                   recursing_bohr
1f9c6a2838cc   centos:7   "/bin/bash"   15 hours ago     Exited (0) 15 hours ago                     jolly_gauss
6260fbe44a84   centos:7   "/bin/bash"   15 hours ago     Exited (127) 15 hours ago                   gracious_brown
bd6349204aa7   centos:7   "/bin/bash"   15 hours ago     Exited (137) 15 hours ago                   clever_shamir

此时,执行docker container prune命令,会自动清除掉所有处于停止状态的容器

[root@docker ~]# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
3f78420bdd4051f91a31e00bba02a5d38fd889ba98553a14f78d32f1faea233c
53f717e0761a03f5b90388f6e5ba7b2eb1e9a0721000734a472c76c602e79dd1
a657943475515505a0a7a73c8becf135820ada5a18e5ab8cf0fbc9b10ac8b4b1
1f9c6a2838ccfbd3d1f9f4e8e923244b3659f83b43200afda003c55f5fd676f6
6260fbe44a84d2cc60132c389a76789a90ae651f6f0b01ec043971ce0b695aa7
bd6349204aa76bc9bdabff0aed1a458e612a292a4a291e915877adb2ae980173Total reclaimed space: 25B
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

进入容器
在使用-d参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach:不建议大家使用docker attach,因为退出容器终端,会导致容器的停止
docker exec:推荐大家使用docker exec命令,因为退出容器终端,不会导致容器的停止

进入容器
exec
下面演示了使用 docker exec 命令

[root@docker ~]# docker run -itd --name httpd httpd:latest /bin/bash
1c4494cfc5b407584dfeb9ad1626e94adc421949aeb2c20214e466c768f89ac9
[root@docker ~]# docker ps
CONTAINER ID   IMAGE          COMMAND              CREATED         STATUS         PORTS     NAMES
1c4494cfc5b4   httpd:latest   "/bin/bash"          4 seconds ago   Up 4 seconds   80/tcp    httpd
b00ba5704eca   httpd:latest   "httpd-foreground"   2 minutes ago   Up 2 minutes   80/tcp    practical_allen
[root@docker ~]# docker exec -it httpd /bin/bash
root@1c4494cfc5b4:/usr/local/apache2# exit
exit
[root@docker ~]# docker ps
CONTAINER ID   IMAGE          COMMAND              CREATED              STATUS              PORTS     NAMES
1c4494cfc5b4   httpd:latest   "/bin/bash"          About a minute ago   Up About a minute   80/tcp    httpd
b00ba5704eca   httpd:latest   "httpd-foreground"   3 minutes ago        Up 3 minutes        80/tcp    practical_allen

删除容器
删除容器使用docker rm命令,只能删除停止的容器

[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS                     PORTS     NAMES
907d3a736a56   httpd:latest   "httpd-foreground"   8 minutes ago    Exited (0) 8 minutes ago             quizzical_ellis
0b94a0d6412a   httpd:latest   "httpd-foreground"   9 minutes ago    Up 9 minutes               80/tcp    unruffled_booth
b00ba5704eca   httpd:latest   "httpd-foreground"   22 minutes ago   Up 22 minutes              80/tcp    practical_allen
bec6a7859ca0   httpd:latest   "httpd-foreground"   24 minutes ago   Created                              hopeful_torvalds
[root@docker ~]# docker stop httpd
httpd
[root@docker ~]# docker rm 907d3a736a56
907d3a736a56
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS          PORTS     NAMES
0b94a0d6412a   httpd:latest   "httpd-foreground"   11 minutes ago   Up 11 minutes   80/tcp    unruffled_booth
b00ba5704eca   httpd:latest   "httpd-foreground"   24 minutes ago   Up 24 minutes   80/tcp    practical_allen
bec6a7859ca0   httpd:latest   "httpd-foreground"   25 minutes ago   Created                   hopeful_torvalds

删除容器
默认情况下,docker rm命令只能删除已经处于终止或退出状态的容器,并不能删除还处于运行状态的容器。如果要直接删除一个运行中的容器,可以添加-f参数

[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS          PORTS     NAMES
0b94a0d6412a   httpd:latest   "httpd-foreground"   17 minutes ago   Up 17 minutes   80/tcp    unruffled_booth
bec6a7859ca0   httpd:latest   "httpd-foreground"   32 minutes ago   Created                   hopeful_torvalds
[root@docker ~]# docker rm 0b94a0d6412a
Error response from daemon: cannot remove container "/unruffled_booth": container is running: stop the container before removing or force remove
[root@docker ~]# docker rm 0b94a0d6412a -f
0b94a0d6412a
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS    PORTS     NAMES
bec6a7859ca0   httpd:latest   "httpd-foreground"   33 minutes ago   Created             hopeful_torvalds

导入和导出容器
某些时候,需要将容器从一个系统迁移到另外一个系统,此时可以使用docker的导入和导出功能,这也是docker自身提供的一个重要特性
导出容器是指,导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,可以使用docker export命令。“-o”选项也可以重定向“>”来代替

docker export 导出容器:

[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
d3262bc89243   centos:7   "/bin/bash"   3 minutes ago   Up 3 minutes             sy
[root@docker ~]# docker export -o centos.tar.gz sy
[root@docker ~]# ls
anaconda-ks.cfg  Desktop    Downloads             Music     Public     Videos
centos.tar.gz    Documents  initial-setup-ks.cfg  Pictures  Templates

导入容器
docker import导入容器
导入容器,导出的文件又可以使用docker import命令导入变成镜像

[root@docker ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
d3262bc89243   centos:7   "/bin/bash"   5 minutes ago   Up 5 minutes             sy
[root@docker ~]# docker rm sy -f
sy
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker import centos.tar.gz luoqi:v1
sha256:e80543456e0c73bb37fa531203a97ab0a2d5fbd124a1731dc7f7a5ce3059003a
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
luoqi        v1        e80543456e0c   8 seconds ago   204MB
httpd        latest    2416cb32cb59   7 weeks ago     117MB
httpd        sysy      2416cb32cb59   7 weeks ago     117MB
centos       7         eeb6ee3f44bd   4 years ago     204MB
[root@docker ~]# docker history luoqi:v1 
IMAGE          CREATED          CREATED BY   SIZE      COMMENT
e80543456e0c   24 seconds ago                204MB     Imported from -

容器端口映射
映射随机端口
当我们启动一个web容器的时候,可以将容器的端口映射宿主机上面,这样便于我们访问该web服务器。-P参数将容器内部使用的80端口映射到宿主机的随机端口上来

[root@docker ~]# docker run --name httpd -itd -P httpd:latest
e41a3cc5b123f1f1c4346ceeea102b996af04887824e16e2cd0b4e012996f9b8
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                    PORTS                                     NAMES
e41a3cc5b123   httpd:latest   "httpd-foreground"       5 seconds ago   Up 4 seconds              0.0.0.0:32768->80/tcp, :::32768->80/tcp   httpd
a1bc933b72c7   nginx:latest   "/docker-entrypoint.…"   8 days ago      Exited (0) 8 days ago                                               synginx
da22873c55b4   luoqi:v1       "/bin/bash"              8 days ago      Exited (137) 8 days ago                                             luoqi
bec6a7859ca0   httpd:latest   "httpd-foreground"       8 days ago      Created                                                             hopeful_torvalds

容器端口映射
这时使用web浏览器访问宿主机的32768端口

在这里插入图片描述

容器端口映射
映射指定端口
我们也可以通过-p参数将容器内的80端口映射到宿主机的指定端口上:

[root@docker ~]# docker run --name httpd2 -itd -p 8080:80 httpd:latest
f64537ff2e5da5ba6859447d3bf364246a719ff77428a5c7f8823c74fac1eb72
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                    PORTS                                     NAMES
f64537ff2e5d   httpd:latest   "httpd-foreground"       7 seconds ago   Up 6 seconds              0.0.0.0:8080->80/tcp, :::8080->80/tcp     httpd2
e41a3cc5b123   httpd:latest   "httpd-foreground"       2 minutes ago   Up 2 minutes              0.0.0.0:32768->80/tcp, :::32768->80/tcp   httpd
a1bc933b72c7   nginx:latest   "/docker-entrypoint.…"   8 days ago      Exited (0) 8 days ago                                               synginx
da22873c55b4   luoqi:v1       "/bin/bash"              8 days ago      Exited (137) 8 days ago                                             luoqi
bec6a7859ca0   httpd:latest   "httpd-foreground"       8 days ago      Created                                                             hopeful_torvalds

在这里插入图片描述

查看容器日志
可以使用docker logs查看容器的日志信息,例如:我们想要查看httpd2容器的访问日志,除了可以
查看访问日志以外,只要是该容器产生的日志都会显示出来,包括服务的启动/关闭之类的

[root@docker ~]# docker logs httpd2
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
[Wed Oct 08 09:58:49.414618 2025] [mpm_event:notice] [pid 1:tid 1] AH00489: Apache/2.4.65 (Unix) configured -- resuming normal operations
[Wed Oct 08 09:58:49.414755 2025] [core:notice] [pid 1:tid 1] AH00094: Command line: 'httpd -D FOREGROUND'
192.168.100.1 - - [08/Oct/2025:09:59:21 +0000] "GET / HTTP/1.1" 200 45
192.168.100.1 - - [08/Oct/2025:09:59:21 +0000] "GET /favicon.ico HTTP/1.1" 404 196

查看容器详细信息
可以使用docker inspect查看容器的详细信息,例如:我们想要查看httpd2容器详细信息,会显
示,容器是什么时候创建的,使用的什么镜像,容器端口号,使用的什么网络等等

[root@docker ~]# docker inspect httpd2
[{"Id": "f64537ff2e5da5ba6859447d3bf364246a719ff77428a5c7f8823c74fac1eb72","Created": "2025-10-08T09:58:48.833060661Z","Path": "httpd-foreground","Args": [],"State": {"Status": "running","Running": true,
.......

docker容器部署WEB服务器
查找Docker Hub上的nginx镜像

[root@docker ~]# docker search nginx

获取镜像:

[root@docker ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
8c7716127147: Already exists 
250b90fb2b9a: Pull complete 
5d8ea9f4c626: Pull complete 
58d144c4badd: Pull complete 
b459da543435: Pull complete 
8da8ed3552af: Pull complete 
54e822d8ee0c: Pull complete 
Digest: sha256:f79cde317d4d172a392978344034eed6dff5728a8e6d7a42f507504c23ecf8b8
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    07ccdb783875   13 hours ago   160MB

docker容器部署WEB服务器
使用默认的配置来启动一个nginx容器实例

[root@docker ~]# docker run --name nginx-test -p 80:80 -itd nginx:latest
0167cfe2e7af972ea2b761b656b9c6bee6175ae540af085adfb4c86e5478b4f0
[root@docker ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                     NAMES
0167cfe2e7af   nginx:latest   "/docker-entrypoint.…"   4 seconds ago    Up 3 seconds    0.0.0.0:80->80/tcp, :::80->80/tcp         nginx-test
f64537ff2e5d   httpd:latest   "httpd-foreground"       11 minutes ago   Up 11 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp     httpd2
e41a3cc5b123   httpd:latest   "httpd-foreground"       13 minutes ago   Up 13 minutes   0.0.0.0:32768->80/tcp, :::32768->80/tcp   httpd

目前nginx容器已经启动,并映射到宿主机的80端口,可以打开浏览器访问此地址

在这里插入图片描述

docker容器部署WEB服务器
nginx部署
创建目录,用于存放映射数据。其中www目录将映射为nginx容器配置的虚拟目录;logs目录将映射为
nginx容器的日志目录;conf目录里的配置文件将映射为nginx容器的配置文件

[root@docker ~]# mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf

拷贝容器内nginx默认配置文件到本地当前目录下的conf目录,容器ID可以通过docker ps命令查看

[root@docker ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                     NAMES
0167cfe2e7af   nginx:latest   "/docker-entrypoint.…"   3 minutes ago    Up 3 minutes    0.0.0.0:80->80/tcp, :::80->80/tcp         nginx-test
f64537ff2e5d   httpd:latest   "httpd-foreground"       14 minutes ago   Up 14 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp     httpd2
e41a3cc5b123   httpd:latest   "httpd-foreground"       17 minutes ago   Up 17 minutes   0.0.0.0:32768->80/tcp, :::32768->80/tcp   httpd
[root@docker ~]# docker cp 0167cfe2e7af:/etc/nginx/nginx.conf ~/nginx/conf/
Successfully copied 2.56kB to /root/nginx/conf/

docker容器部署WEB服务器
部署容器命令。下面选项的解释:
-p:将主机端口20000映射到容器的80端口上
–name: 容器名字
-v:~/nginx/www:/usr/share/nginx/html 将我们自己创建的www目录挂载到容器d的/usr/share/nginx/html
-v:~/nginx/conf /nginx.conf: /etc/nginx/nginx.conf 将我们自己创建的nginx.conf挂载到容器的
/etc/nginx/nginx.conf
-v:~/nginx/logs:/var/log/nginx 将我们自己创建的logs挂载到容器的/var/log/nginx

[root@docker ~]# docker run -itd -p 20000:80 --name nginx -test-1 -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx:latest
0731c685a98911ed0c49bc184bb59b96a099fe8d306a9b650d42ca469de20507
[root@docker ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                     NAMES
0731c685a989   nginx:latest   "/docker-entrypoint.…"   7 seconds ago    Up 6 seconds    0.0.0.0:20000->80/tcp, :::20000->80/tcp   nginx
0167cfe2e7af   nginx:latest   "/docker-entrypoint.…"   7 minutes ago    Up 7 minutes    0.0.0.0:80->80/tcp, :::80->80/tcp         nginx-test

docker容器部署WEB服务器
创建自己的网页,并访问:

[root@docker ~]# cd ~/nginx/www/
[root@docker www]# vim index.html
welcome to luoqi!!!
~ 

使用浏览器进行访问:

在这里插入图片描述

其他容器命令
docker container cp 复制文件
例如,将 本地的路径 data 复制到 centos 容器的/tmp 路径下:

[root@docker ~]# docker container cp data 0731c685a989:/tmp

docker container diff 查看变更:

例如,查看 0731c685a989 容器内的数据修改

[root@docker ~]# docker container diff 0731c685a989

docker container port 查看端口映射

[root@docker ~]# docker container port 0731c685a989
80/tcp -> 0.0.0.0:20000
80/tcp -> [::]:20000

总结
1、容器隔离的最重要方面之一是每个容器都与自己的专用文件系统进行交互
2、使用docker create 命令新建的容器处于停止状态,可以使用docker start命令来启动它
3、不建议大家使用docker attach,因为退出容器终端,会导致容器的停止;推荐大家使用docker exec命令,因为退出容器终端,不会导致容器的停止
4、docker rm命令只能删除已经处于终止或退出状态的容器,并不能删除还处于运行状态的容器。如果要直接删除一个运行中的容器,可以添加-f参数
5、需要将容器从一个系统迁移到另外一个系统,此时可以使用docker的导入和导出功能,这也是docker自身提供的一个重要特性
6、当我们启动一个web容器的时候,可以将容器的端口映射宿主机上面,这样便于我们访问该web服务器
7、镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
8、如果外部想访问容器所提供的服务,那么就需要将容器的端口映射到宿主机上
9、删除容器时,一定要保证容器出入停止状态
10、docker 子命令run、exec、stop、rm、start、cp等熟练使用

http://www.dtcms.com/a/457247.html

相关文章:

  • GIS+VR地理信息虚拟现实XR MR AR
  • K8s学习笔记(十四) DaemonSet
  • 视频网站建设应该注意什么北京建设网点地址查询
  • 面试技术栈 —— 简历篇
  • Python闭包内变量访问详解:从原理到高级实践
  • DNS隧道技术:隐秘通信的“毛细血管”通道
  • MySQL 性能监控与安全管理完全指南
  • 【Linux】进程控制(上)
  • 湖北省建设网站wordpress商务套餐
  • 网站建设推广的软文邢台建站企业邮箱
  • C++11并发支持库
  • 广东省省考备考(第一百一十八天10.8)——言语、资料分析、数量关系(强化训练)
  • 临沂网站制作页面如何查一个网站有没有做外链
  • 基于websocket的多用户网页五子棋(八)
  • Elastic 被评为 IDC MarketScape《2025 年全球扩展检测与响应软件供应商评估》中的领导者
  • 如何利用Python呼叫nexxim.exe执行电路模拟
  • APM学习(3):ArduPilot飞行模式
  • h5制作开发价目表常用seo站长工具
  • 忻州建设公司网站他达那非副作用太强了
  • pytest详细教程
  • 订单超时方案的选择
  • Redis 集群故障转移
  • 虚拟专用网络
  • 网站制作公司网站建设网站膳食管理东莞网站建设
  • Linux小课堂: 从零到上手的指南
  • DrissionPage防检测
  • 三亚官方网站建设ps如何做网页设计
  • Java体系总结——从基础语法到微服务
  • 深圳网站建设李天亮网站怎么做构成
  • Word卡顿,过很久才弹窗网络连接失败解决办法