Run container
常用选项
# docker run
--restart always
# 调整容器中的时间
-v /etc/localtime:/etc/localtime:ro
# 后台运行
-d
xhyve
# 安装 https://github.com/zchee/docker-machine-driver-xhyve#install
docker-machine create --driver xhyve xhyve
eval `docker-machine env xhyve`
docker info
MySQL
DIR=/data/mysql
# 自定义配置
mkdir -p /data/mysql/conf.d/
echo '
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
' > /data/mysql/conf.d/my.cnf
# 自定义数据目录
mkdir -p /data/mysql/conf.d/datadir
# 使用自定义的配置启动 MySQL
docker run -d --restart always -v /etc/localtime:/etc/localtime:ro \
-p 3306:3306 \
-v /data/mysql/datadir:/var/lib/mysql -v /data/mysql/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=ThisIsPassword \
--name mysql mysql
OwnCloud/Nextcloud
# 需要先创建名为 mysql 的 mysql 容器,如果没有,可去除 --link
# 启动 OwnCloud
docker run -d --restart always -v /etc/localtime:/etc/localtime:ro \
-p 8080:80 \
-v /data/owncloud:/var/www/html \
--link mysql:mysql \
--name owncloud owncloud
反向代理
sudo nano /data/owncloud/config/config.php
<?php
/* $CONFIG */
$EXTRA_CONFIG = array (
"trusted_proxies" => ['10.0.0.1'],
"overwritehost" => "ssl-proxy.tld",
"overwriteprotocol" => "https",
"overwritewebroot" => "/domain.tld/owncloud",
"overwritecondaddr" => "^10\.0\.0\.1$",
);
$CONFIG = array_merge($CONFIG, $EXTRA_CONFIG)
Jenkins
# 不用映射, 备份通过 docker cp $ID:/var/jenkins_home
# 设置 JENKINS_OPTS="--prefix=/jenkins" 来做反向代理
# 如果目录有权限问题可手动设置 mkdir -p /data/jenkins && chwon 1000:1000 /data/jenkins
docker run -d --restart always -v /etc/localtime:/etc/localtime:ro \
-p 8080:8080 -p 50000:50000 \
-v /data/jenkins:/var/jenkins_home \
--name jenkins jenkins
Jenkins 是离线的,由于 jenkins-ci.org
被墙,所以可能需要使用 HTTP 代理
gitea
docker run -d --restart always -v /etc/localtime:/etc/localtime:ro \
-p 3000:3000 \
-v /data/gitea:/data \
--name gitea gitea/gitea
PHP
官方提供了很多 PHP 版本, 如果需要额外的扩展建议自己 build 一个, 例如
php.dockerfile
FROM php:5-apache
RUN apt-get update
RUN apt-get install -y libcurl4-openssl-dev pkg-config libssl-dev \
&& pecl install mongodb \
&& docker-php-ext-enable mongodb
RUN pecl install redis && docker-php-ext-enabl redis
docker build -t wener/php -f php.dockerfile .
docker run -d --restart always -p 80:80 -v /data/php/www:/var/www/html --name php wener/php
# 也可以添加自己的配置
# 设置默认时区
echo 'date.timezone=Asia/Shanghai' > /data/php/config/php.ini;
docker run -d --restart always -p 80:80 -v /data/php/www:/var/www/html \
-v /data/php/config/php.ini:/usr/local/etc/php/php.ini --name php wener/php
Drone.io
# Drone 一般配合 Gogs 使用
mkdir /opt/apps/drone && cd /opt/apps/drone
# 用于存放数据
mkdir data
# 需要预先在 MySQL 中将 drone 库创建出来
# 需要将数据库修改为具体的
# 配置参考 http://readme.drone.io/setup/settings/
echo '
REMOTE_DRIVER=gogs
REMOTE_CONFIG=https://gogs.hooli.com?open=false
DATABASE_DRIVER=mysql
DATABASE_CONFIG=root:pa55word@tcp(localhost:3306)/drone?parseTime=true
# HTTPS_PROXY=https://proxy.example.com
# HTTP_PROXY=http://proxy.example.com
# NO_PROXY=.example.com, *.docker.example.com
' > dronerc
docker run -d --restart always -v /etc/localtime:/etc/localtime:ro \
-p=8080:8000 \
-v /opt/apps/drone/data:/var/lib/drone \
-v /var/run/docker.sock:/var/run/docker.sock \
--env-file ./dronerc \
--link mysql:mysql \
--name=drone drone/drone