附录二:热门镜像介绍
本章将介绍一些热门镜像的功能,使用方法等。包括 Ubuntu、CentOS、MySQL、MongoDB、Redis、Nginx、Wordpress、Node.js 等。
Ubuntu
基本信息
Ubuntu 是流行的 Linux 发行版,其自带软件版本往往较新一些。
该仓库位于 https://hub.docker.com/_/ubuntu/
,提供了 Ubuntu 从 12.04 ~ 18.04 各个版本的镜像。
使用方法
默认会启动一个最小化的 Ubuntu 环境。
docker run --name some-ubuntu -it ubuntu:18.04
root@523c70904d54:/#
Dockerfile
请到 https://github.com/docker-library/docs/tree/master/ubuntu 查看。
CentOS
基本信息
CentOS 是流行的 Linux 发行版,其软件包大多跟 RedHat 系列保持一致。
该仓库位于 https://hub.docker.com/_/centos
,提供了 CentOS 从 5 ~ 7 各个版本的镜像。
使用方法
默认会启动一个最小化的 CentOS 环境。
docker run --name centos -it centos bash
bash-4.2#
Dockerfile
请到 https://github.com/docker-library/docs/tree/master/centos 查看。
Nginx
基本信息
Nginx 是开源的高效的 Web 服务器实现,支持 HTTP、HTTPS、SMTP、POP3、IMAP 等协议。
该仓库位于 https://hub.docker.com/_/nginx/
,提供了 Nginx 1.0 ~ 1.15.x 各个版本的镜像。
使用方法
下面的命令将作为一个静态页面服务器启动。
docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx
用户也可以不使用这种映射方式,通过利用 Dockerfile 来直接将静态页面内容放到镜像中,内容为
FROM nginx
COPY static-html-directory /usr/share/nginx/html
之后生成新的镜像,并启动一个容器。
docker build -t some-content-nginx .
docker run --name some-nginx -d some-content-nginx
开放端口,并映射到本地的 8080
端口。
docker run --name some-nginx -d -p 8080:80 some-content-nginx
Nginx的默认配置文件路径为 /etc/nginx/nginx.conf
,可以通过映射它来使用本地的配置文件,例如
docker run -d \
--name some-nginx \
-v /some/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx
Dockerfile
请到 https://github.com/docker-library/docs/tree/master/nginx 查看。
MySQL
基本信息
MySQL 是开源的关系数据库实现。
该仓库位于 https://hub.docker.com/_/mysql/
,提供了 MySQL 5.5 ~ 8.x 各个版本的镜像。
使用方法
默认会在 3306
端口启动数据库。
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
之后就可以使用其它应用来连接到该容器。
docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql
或者通过 mysql
命令行连接。
docker run -it --rm \
--link some-mysql:mysql \
mysql \
sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
Dockerfile
请到 https://github.com/docker-library/docs/tree/master/mysql 查看
MongoDB
基本信息
MongoDB 是开源的 NoSQL 数据库实现。
该仓库位于 https://hub.docker.com/_/mongo/
,提供了 MongoDB 2.x ~ 4.x 各个版本的镜像。
使用方法
默认会在 27017
端口启动数据库。
docker run --name mongo -d mongo
使用其他应用连接到容器,可以用
docker run --name some-app --link some-mongo:mongo -d application-that-uses-mongo
或者通过 mongo
docker run -it --rm \
--link some-mongo:mongo \
mongo \
sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"'
Dockerfile
请到 https://github.com/docker-library/docs/tree/master/mongo 查看。
Redis
基本信息
Redis 是开源的内存 Key-Value 数据库实现。
该仓库位于 https://hub.docker.com/_/redis/
,提供了 Redis 3.x ~ 5.x 各个版本的镜像。
使用方法
默认会在 6379
端口启动数据库。
docker run --name some-redis -d redis
另外还可以启用 持久存储。
docker run --name some-redis -d redis redis-server --appendonly yes
默认数据存储位置在 VOLUME/data
。可以使用 --volumes-from some-volume-container
或 -v /docker/host/dir:/data
将数据存放到本地。
使用其他应用连接到容器,可以用
docker run --name some-app --link some-redis:redis -d application-that-uses-redis
或者通过 redis-cli
docker run -it --rm \
--link some-redis:redis \
redis \
sh -c 'exec redis-cli -h "$REDIS_PORT_6379_TCP_ADDR" -p "$REDIS_PORT_6379_TCP_PORT"'
Dockerfile
请到 https://github.com/docker-library/docs/tree/master/redis 查看。
Node.js
基本信息
Node.js 是基于 JavaScript 的可扩展服务端和网络软件开发平台。
该仓库位于 https://hub.docker.com/_/node/
,提供了 Node.js 0.10 ~ 11.x 各个版本的镜像。
使用方法
在项目中创建一个 Dockerfile。
FROM node:9
# replace this with your application's default port
EXPOSE 8888
然后创建镜像,并启动容器。
docker build -t my-nodejs-app
docker run -it --rm --name my-running-app my-nodejs-app
也可以直接运行一个简单容器。
docker run -it --rm \
--name my-running-script \
# -v "$(pwd)":/usr/src/myapp \
--mount type=bind,src=`$(pwd)`,target=/usr/src/myapp \
-w /usr/src/myapp \
node:9-alpine \
node your-daemon-or-script.js
Dockerfile
请到 https://github.com/docker-library/docs/tree/master/node 查看。