docker-bind/README.md

157 lines
5.8 KiB
Markdown
Raw Permalink Normal View History

2015-10-12 06:38:20 +00:00
[![Circle CI](https://circleci.com/gh/sameersbn/docker-bind.svg?style=shield)](https://circleci.com/gh/sameersbn/docker-bind) [![Docker Repository on Quay.io](https://quay.io/repository/sameersbn/bind/status "Docker Repository on Quay.io")](https://quay.io/repository/sameersbn/bind)
2015-05-04 13:02:58 +00:00
2020-05-24 14:29:31 +00:00
# sameersbn/bind:9.16.1-20200524
2015-04-14 11:34:43 +00:00
2014-06-29 07:02:58 +00:00
- [Introduction](#introduction)
2015-07-21 08:13:17 +00:00
- [Contributing](#contributing)
- [Issues](#issues)
- [Getting started](#getting-started)
- [Installation](#installation)
- [Quickstart](#quickstart)
- [Command-line arguments](#command-line-arguments)
2015-07-21 08:13:17 +00:00
- [Persistence](#persistence)
- [Maintenance](#maintenance)
- [Upgrading](#upgrading)
- [Shell Access](#shell-access)
2014-06-29 07:02:58 +00:00
# Introduction
2015-04-14 11:34:43 +00:00
2015-07-21 08:13:17 +00:00
`Dockerfile` to create a [Docker](https://www.docker.com/) container image for [BIND](https://www.isc.org/downloads/bind/) DNS server bundled with the [Webmin](http://www.webmin.com/) interface.
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
BIND is open source software that implements the Domain Name System (DNS) protocols for the Internet. It is a reference implementation of those protocols, but it is also production-grade software, suitable for use in high-volume and high-reliability applications.
## Contributing
2014-10-26 14:03:54 +00:00
If you find this image useful here's how you can help:
2015-07-21 08:13:17 +00:00
- Send a pull request with your awesome features and bug fixes
- Help users resolve their [issues](../../issues?q=is%3Aopen+is%3Aissue).
2015-07-13 09:22:01 +00:00
- Support the development of this image with a [donation](http://www.damagehead.com/donate/)
2014-10-26 14:03:54 +00:00
2015-07-21 08:13:17 +00:00
## Issues
2015-04-14 11:34:43 +00:00
2015-07-21 08:13:17 +00:00
Before reporting your issue please try updating Docker to the latest version and check if it resolves the issue. Refer to the Docker [installation guide](https://docs.docker.com/installation) for instructions.
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
SELinux users should try disabling SELinux using the command `setenforce 0` to see if it resolves the issue.
If the above recommendations do not help then [report your issue](../../issues/new) along with the following information:
- Output of the `docker version` and `docker info` commands
- The `docker run` command or `docker-compose.yml` used to start the image. Mask out the sensitive bits.
- Please state if you are using [Boot2Docker](http://www.boot2docker.io), [VirtualBox](https://www.virtualbox.org), etc.
# Getting started
## Installation
Automated builds of the image are available on [Dockerhub](https://hub.docker.com/r/sameersbn/bind) and is the recommended method of installation.
> **Note**: Builds are also available on [Quay.io](https://quay.io/repository/sameersbn/bind)
2015-07-21 08:13:17 +00:00
```bash
2020-05-24 14:29:31 +00:00
docker pull sameersbn/bind:9.16.1-20200524
2014-06-29 07:02:58 +00:00
```
2015-07-21 08:13:17 +00:00
Alternatively you can build the image yourself.
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
```bash
2015-11-19 16:55:34 +00:00
docker build -t sameersbn/bind github.com/sameersbn/docker-bind
2014-06-29 07:02:58 +00:00
```
2015-07-21 08:13:17 +00:00
## Quickstart
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
Start BIND using:
2014-06-29 07:02:58 +00:00
```bash
2015-07-21 08:13:17 +00:00
docker run --name bind -d --restart=always \
--publish 53:53/tcp --publish 53:53/udp --publish 10000:10000/tcp \
2015-07-21 08:13:17 +00:00
--volume /srv/docker/bind:/data \
2020-05-24 14:29:31 +00:00
sameersbn/bind:9.16.1-20200524
2014-06-29 07:02:58 +00:00
```
2015-07-21 08:13:17 +00:00
*Alternatively, you can use the sample [docker-compose.yml](docker-compose.yml) file to start the container using [Docker Compose](https://docs.docker.com/compose/)*
2014-06-29 07:02:58 +00:00
When the container is started the [Webmin](http://www.webmin.com/) service is also started and is accessible from the web browser at https://localhost:10000. Login to Webmin with the username `root` and password `password`. Specify `--env ROOT_PASSWORD=secretpassword` on the `docker run` command to set a password of your choosing.
2015-07-21 08:13:17 +00:00
The launch of Webmin can be disabled by adding `--env WEBMIN_ENABLED=false` to the `docker run` command. Note that the `ROOT_PASSWORD` parameter has no effect when the launch of Webmin is disabled.
2015-07-21 08:13:17 +00:00
Read the blog post [Deploying a DNS Server using Docker](http://www.damagehead.com/blog/2015/04/28/deploying-a-dns-server-using-docker/) for an example use case.
2014-06-29 07:02:58 +00:00
## Command-line arguments
You can customize the launch command of BIND server by specifying arguments to `named` on the `docker run` command. For example the following command prints the help menu of `named` command:
```bash
docker run --name bind -it --rm \
--publish 53:53/tcp --publish 53:53/udp --publish 10000:10000/tcp \
--volume /srv/docker/bind:/data \
2020-05-24 14:29:31 +00:00
sameersbn/bind:9.16.1-20200524 -h
```
2015-07-21 08:13:17 +00:00
## Persistence
For the BIND to preserve its state across container shutdown and startup you should mount a volume at `/data`.
2014-06-29 07:02:58 +00:00
2015-07-21 09:43:47 +00:00
> *The [Quickstart](#quickstart) command already mounts a volume for persistence.*
2014-11-25 05:21:10 +00:00
2015-07-21 08:13:17 +00:00
SELinux users should update the security context of the host mountpoint so that it plays nicely with Docker:
2014-11-25 05:21:10 +00:00
```bash
2015-07-21 08:13:17 +00:00
mkdir -p /srv/docker/bind
chcon -Rt svirt_sandbox_file_t /srv/docker/bind
2014-11-25 05:21:10 +00:00
```
2020-02-15 02:16:56 +00:00
## Reverse Proxying
If you need to run Webmin behind a reverse-proxy such as Nginx, you can tweak the following environment variables:
* `WEBMIN_INIT_SSL_ENABLED`: If Webmin should be served via SSL or not. Defaults to `true`.
If you do the SSL termination at an earlier stage, set this to false.
* `WEBMIN_INIT_REDIRECT_PORT`: The port Webmin is served from.
Set this to your reverse proxy port, such as `443`. Defaults to `10000`.
* `WEBMIN_INIT_REFERERS`: Sets the allowed referrers to Webmin.
Set this to your domain name of the reverse proxy. Example: `mywebmin.example.com`.
Defaults to empty (no referrer).
2015-07-21 08:13:17 +00:00
# Maintenance
2014-11-25 05:21:10 +00:00
2015-07-21 08:13:17 +00:00
## Upgrading
2014-11-25 05:21:10 +00:00
2015-07-21 08:13:17 +00:00
To upgrade to newer releases:
2014-11-25 05:21:10 +00:00
2015-07-21 08:13:17 +00:00
1. Download the updated Docker image:
2014-11-25 05:21:10 +00:00
2015-07-21 08:13:17 +00:00
```bash
2020-05-24 14:29:31 +00:00
docker pull sameersbn/bind:9.16.1-20200524
2015-07-21 08:13:17 +00:00
```
2014-11-25 05:21:10 +00:00
2015-07-21 08:13:17 +00:00
2. Stop the currently running image:
2014-11-25 05:21:10 +00:00
2015-07-21 08:13:17 +00:00
```bash
docker stop bind
```
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
3. Remove the stopped container
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
```bash
docker rm -v bind
```
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
4. Start the updated image
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
```bash
docker run -name bind -d \
[OPTIONS] \
2020-05-24 14:29:31 +00:00
sameersbn/bind:9.16.1-20200524
2015-07-21 08:13:17 +00:00
```
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
## Shell Access
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
For debugging and maintenance purposes you may want access the containers shell. If you are using Docker version `1.3.0` or higher you can access a running containers shell by starting `bash` using `docker exec`:
2014-06-29 07:02:58 +00:00
2015-07-21 08:13:17 +00:00
```bash
docker exec -it bind bash
2014-06-29 07:02:58 +00:00
```