如何在 Fedora 22 上面配置 Apache 的 Docker 容器

如题所述

安装并初体验Docker
要求
运行Docker,你至少需要满足这些:
你需要一个64位的内核,版本3.10或者更高
Iptables 1.4 - Docker会用它来做网络配置,如网络地址转换(NAT)
Git 1.7 - Docker会使用Git来与仓库交流,如Docker Hub
ps - 在大多数环境中这个工具都存在,在procps包里有提供
root - 尽管一般用户可以通过TCP或者其他方式来运行Docker,但是为了简化,我们会假定你就是root

使用dnf安装docker
以下的命令会安装Docker
dnf update && dnf install docker
注意:在Fedora 22里,你仍然可以使用Yum命令,但是它被DNF取代了,而且在纯净安装时不可用了。

检查安装
我们将要使用的第一个命令是docker info,这会输出很多信息给你:
docker info
也可以试着用docker version:
docker version

以守护进程方式启动Dcoker
你应该启动一个docker实例,然后她会处理我们的请求。
docker -d
现在我们设置 docker 随系统启动,以便我们不需要每次重启都需要运行上述命令。
chkconfig docker on
让我们用Busybox来打印hello world:
dockr run -t busybox /bin/echo "hello world"
这个命令里,我们告诉Docker在Busybox镜像的一个实例/容器里执行 /bin/echo "hello world"。Busybox是一个小型的POSIX环境,将许多小工具都结合到了一个单独的可执行程序里。
如果Docker不能在你的系统里找到本地的Busybox镜像,她就会自动从Docker Hub里拉取镜像,正如你可以看下如下的快照:

Hello world with Busybox
再次尝试相同的命令,这次由于Docker已经有了本地的Busybox镜像,你将会看到的全部就是echo的输出:
docker run -t busybox /bin/echo "hello world"
也可以尝试以下的命令进入到容器环境里去:
docker run -it busybox /bin/sh
使用exit命令可以离开容器并停止它

交互式地Docker化Apache
拉取/下载 Fedora 镜像:
docker pull fedora:22
启动一个容器在后台运行:
docker run -d -t fedora:22/bin/bash
列出正在运行地容器及其名字标识,如下
docker ps

使用docker ps列出,并使用docker attach进入一个容器里
angry_noble是docker分配给我们容器的名字,所以我们来连接上去:
docker attach angry_noble
注意:每次你启动一个容器,就会被给与一个新的名字,如果你的容器需要一个固定的名字,你应该在 docker run 命令里使用 -name 参数。

安装Apache
下面的命令会更新DNF的数据库,下载安装Apache(httpd包)并清理dnf缓存使镜像尽量小
dnf -y update && dnf -y install httpd && dnf -y clean all
配置Apache
我们需要修改httpd.conf的唯一地方就是ServerName,这会使Apache停止抱怨
sed -i.orig 's/#ServerName/ServerName/'/etc/httpd/conf/httpd.conf
设定环境
为了使Apache运行为独立模式,你必须以环境变量的格式提供一些信息,并且你也需要创建这些变量里的目录,所以我们将会用一个小的shell脚本干这个工作,当然也会启动Apache
vi /etc/httpd/run_apache_foreground
#!/bin/bash
#设置环境变量
APACHE_LOG_DI=R"/var/log/httpd"
APACHE_LOCK_DIR="/var/lock/httpd"
APACHE_RUN_USER="apache"
APACHE_RUN_GROUP="apache"
APACHE_PID_FILE="/var/run/httpd/httpd.pid"
APACHE_RUN_DIR="/var/run/httpd"
#如果需要的话,创建目录
if![-d /var/run/httpd ];then mkdir /var/run/httpd;fi
if![-d /var/log/httpd ];then mkdir /var/log/httpd;fi
if![-d /var/lock/httpd ];then mkdir /var/lock/httpd;fi
#运行 Apache
httpd -D FOREGROUND
上面的内嵌脚本会安装Git,克隆这个仓库,到文件里去运行脚本,并询问你是否卸载Git。
保存你的容器状态
你的容器现在准备好运行Apache,是时候保存容器当前的状态为一个镜像,以备你需要的时候使用。
为了离开容器环境,你必须顺序按下 Ctrl+q 和 Ctrl+p,如果你仅仅在shell执行exit,你同时也会停止容器,失去目前为止你做过的所有工作。
回到Docker主机,使用 docker commit 及容器名和你想要的仓库名字/标签:
docker commit angry_noble gaiada/apache
现在,你保存了容器的状态到一个镜像里,可以使用 docker stop 停止容器了:
docker stop angry_noble
温馨提示:内容为网友见解,仅供参考
无其他回答

如何交互式地创建一个Docker容器
1. 运行一个Docker实例 Docker首先会尝试从本地取得并运行所需的镜像,如果在本地主机上没有发现,它就会从Docker公共注册中心拉取。这里,我们将会拉取镜像并在 Docker 容器中创建一个fedora实例,并连接到它的 tty 上的bash shell。docker run -i -t fedora bash 2.安装Apache网络服务器 现在,在...

如何交互式地创建一个Docker容器
如下docker ps使用docker ps列出,并使用docker attach进入一个容器里angry_noble是docker分配给我们容器的名字,所以我们来连接上去:docker attach angry_noble注意:每次你启动一个容器,就会被给与一个新的名字,如果你的容器需要一个固定的名字,你应该在 docker run 命令里使用 -name 参数。 安装Apach...

如何在Docker CentOS容器中使用Systemd
你想启动一个新的Docker容器,就需要确定为容器使用哪个Docker映像。你可以搜索官方的Docker映像索引 ,上面列出了公开可用的Docker映像。Docker索引包括:Docker团队管理的Linux基本映像(比如Ubuntu、Debian、Fedora和 CentOS),以及用户贡献的自定义映像(比如MySQL、Redis和WordPress)。比如说,想在交互模式开...

如何在Ubuntu上借助Docker管理Linux容器
Docker使用Linux网桥将容器彼此互联起来,并将它们连接到外部网络。安装了Docker后,你应该会看到默认情况下自动组建的docker0 Linux网桥。你创建的每个容器都将连接到docker0网桥接口。自定义Linux网桥 如果你想,也可以使用自定义Linux网桥将诸容器互联起来。为此,你可以建立一个自定义网桥,并对它进行配置...

一台linux 最多运行多少个docker image
Mint\/Debian:sudo apt-get install docker对于 Fedora\/RHEL\/CentOS:sudo yum install docker对于 Fedora 22:dnf install docker你可以运行下面的命令来启动docker:sudo docker start首先运行下面的命令确保 Docker 服务运行正常:sudo docker statusKali Linux 的开发团队已将 Kali Linux 的 docker 镜像...

如何监控 docker container 的 cpu,memory,network
docker.io run -i -t fedora \/bin\/bash 如果系统中还不存在 Fedora Docker 镜像,这个命令会自动下载它,然后启动这个 Fedora 的 Docker 容器。如果你想要开启指定版本的系统,比如 Ubuntu 13.04,你可以使用下面的命令:docker.io run -i -t ubuntu:13.04 \/bin\/bash Container 容器网络设置 Docke...

CentOS6.x上部署Docker容器环境的全流程攻略
Docker.io 是轻量级的容器引擎+映像仓库,在LXC(linux轻量级容器)的基础上构建,可以运行任何应用程序。docker.io的核心层由以下几个部分组成:1、可执行程序,\/usr\/bin\/docker2、docker.io网站上有一系列创建好的操作系统和应用程序映像3、AUFS(另一个统一文件系统)来实现文件系统的快照,文件变化,...

请教kubernetes部署问题,pod一直处于pending状态
从 Docker 层面有一个可能的思路是在 Dockerfile 指定 ENTRYPOINT 为一个脚本文件,然后在脚本文件里加上特定信号的捕捉器,在捕捉器里面处理 Pod 退出时的逻辑。例如这个入口脚本就用了类似的功能。 function shutdown { -> 退出时的清理工作.。json模板:{ "id": "fedoraapache","kind": "Pod",...

谁是最棒的容器操作系统
Rancher 将容器操作系统的目标更进一步,在RancherOS中,所有都是一个 Docker容器。它们运行一个系统级别的Docker,PID=1,然后启动一个用户级别的Docker,可以运行所有的用户容器。听起来很疯狂,但操作系统本来就不该做其他事,只做有必要的事。Rancher剥离所有不必要的服务,使得操作系统很轻量级。ISO安装...

k8s安装部署
1、查看安装过的docker:yum list installed | grep docker 2、卸载docker:yum remove -y docker-ce.x86_64 0:18.03.0.ce-1.el7.centos 3、删除容器镜像:rm -rf \/var\/lib\/docker 再次安装kubernetes,安装成功,而且会自动安装docker 6.1修改apiserver服务的配置文件 [root@k8s-master kubernetes]# cat \/etc\/...

相似回答