例说图解TCP/IP协议族--HTTP篇(-)搭建HTTP服务器Apache【docker版】

本文详述了如何在Ubuntu 18.04上通过Docker搭建Apache HTTP服务器,包括安装Docker、修改权限、获取Apache镜像、拷贝镜像文件到宿主机、创建docker-compose.yml文件及自定义配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本文所有的命令都是在宿主机上执行,不需要进入到容器,这也就是docker相对于虚机的优势之一。

 

1 在宿主机上安装docker engine

    本文宿主机为ubuntu 18.04,直接执行命令

wenca@wenca-node1:~$ sudo snap install docker
wenca@wenca-node1:~$ sudo snap connect docker:home :home

    查看docker服务状态,执行以下命令

wenca@wenca-node1:~$ sudo snap services

Service         Startup  Current  Notes
docker.dockerd  enabled  active   -

    而不是以下命令,因为docker是由snap安装的。

wenca@wenca-node1:~$ sudo systemctl status docker

 

2 修改权限,让普通用户可以执行docker cli

wenca@wenca-node1:~$ ls -l /var/run/docker.sock 

srw-rw---- 1 root docker 0 Aug  5 02:23 /var/run/docker.sock

    确保owner为root,group为docker,否则可以通过以下命令修改

wenca@wenca-node1:~$ sudo chown root:docker /var/run/docker.sock

    增加当前登陆的账号到docker组

wenca@wenca-node1:~$ sudo adduser $USER docker

The user `wenca' is already a member of `docker'.

    退出当前会话,重新登陆,然后普通用户就可以执行docker命令,不需要增加sudo。

 

3 获取官方apache镜像

    执行命令,获取镜像

wenca@wenca-node1:~$ docker pull httpd:latest

latest: Pulling from library/httpd
Digest: sha256:dc4c86bc90593c6e4c5b06872a7a363fc7d4eec99c5d6bfac881f7371adcb2c4
Status: Image is up to date for httpd:latest

    查看获取镜像列表 

wenca@wenca-node1:~$ docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               latest              ee39f68eb241        3 weeks ago         154MB

 

4 拷贝apache镜像的相关文件到宿主机

    在宿主机上新建一个空目录,并切换到新建的空目录

wenca@wenca-node1:~$ mkdir -p Servers/apache
wenca@wenca-node1:~$ cd Servers/apache

    启动一个apache容器,在后台运行

wenca@wenca-node1:~/Servers/apache$ docker container run --name apache_temp -d httpd:latest

3c137b6b3c647fa06986caa9762842bcae19fe7fe2362be02109e5343d26cc58
wenca@wenca-node1:~/Servers/apache$ docker container ls -a

CONTAINER ID  IMAGE         COMMAND             CREATED         STATUS        PORTS  NAMES
3c137b6b3c64  httpd:latest  "httpd-foreground"  40 seconds ago  Up 38 seconds 80/tcp apache_temp

    复制容器里的相关文件和文件夹到宿主机

wenca@wenca-node1:~/Servers/apache$ docker cp apache_temp:/usr/local/apache2 ./

    查看来自容器里的文件和文件夹

wenca@wenca-node1:~/Servers/apache$ ls

bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  modules

    删除该容器

wenca@wenca-node1:~/Servers/apache$ docker container rm -f apache_temp

apache_temp

 

5 创建docker-compose.yml文件,运行apache容器

    在当前路径下新建docker-compose.yml

wenca@wenca-node1:~/Servers/apache$ ls -l
total 44
drwxr-xr-x 2 wenca wenca 4096 Jul 10 15:22 bin
drwxr-xr-x 2 wenca wenca 4096 Jul 10 15:22 build
drwxr-xr-x 2 wenca wenca 4096 Jul 10 15:22 cgi-bin
drwxr-xr-x 4 wenca wenca 4096 Aug  7 02:06 conf
-rw-rw-r-- 1 wenca wenca  349 Aug  7 02:04 docker-compose.yml
drwxr-xr-x 3 wenca wenca 4096 Jul 10 15:22 error
drwxr-xr-x 2 wenca wenca 4096 Aug  7 02:07 htdocs
drwxr-xr-x 3 wenca wenca 4096 Jul 10 15:22 icons
drwxr-xr-x 2 wenca wenca 4096 Jul 10 15:22 include
drwxr-xr-x 2 wenca wenca 4096 Aug  7 02:04 logs
drwxr-xr-x 2 wenca wenca 4096 Jul 10 15:22 modules

    docker-compose.yml文件内容是

version: "3.7"
  
services:
        apache_testing:
                image: httpd:latest
                container_name: apache_testing
                ports:
                        - 80:80
                        - 443:443
                volumes:
                        - $PWD:/usr/local/apache2:rw
                command: apachectl -D FOREGROUND

  根据docker-compose.yml,启动apache容器

wenca@wenca-node1:~/Servers/apache$ docker-compose -f docker-compose.yml up -d

Creating apache_testing ... done
wenca@wenca-node1:~/Servers/apache$ docker container ls -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
0613d6822448        httpd:latest        "apachectl -D FOREGR…"   17 seconds ago      Up 14 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   apache_testing

    可以在宿主机上直接更改conf/目录下的httpd.conf、httpd-ssl.conf等配置文件,完成自定义配置,然后再执行一遍以下命令,既可以让配置生效。

wenca@wenca-node1:~/Servers/apache$ docker-compose -f docker-compose.yml up -d

apache_testing is up-to-date

  直接运行上面命令有时候会有问题,建议先删除老的容器,再执行以上命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值