阅读导航[toc]
安装docker环境,基于ubuntu14.04 LTS
wget -qO- https://get.docker.com/ | sh
#我的用户名为:justchen
sudo usermod -aG docker justchen
安装docker环境就这么简单,接下来安装各种其他应用.我喜欢把所有docker的文件集中放到 /home/dirdocker中
sudo mkdir /home/dirdocker
sudo chown -R justchen:justchen /home/dirdocker
进入镜像的bash
docker exec -it 镜像名 bash
docker attach 镜像名
删除镜像说明:
先用 docker pa -a
查看所有的镜像名称
然后 docker rm 镜像名
再 docker images
但看有哪些镜像
最后 docker rmi 编号
停止所有的容器
docker stop $(docker ps -aq)
删除所有的容器
docker rm $(docker ps -aq)
删除所有的镜像
docker rmi $(docker images -q)
复制文件
docker cp mycontainer:/opt/file.txt /opt/local/
docker cp /opt/local/file.txt mycontainer:/opt/
其他
docker image prune --force --all
或者docker image prune -f -a
: 删除所有不使用的镜像
docker container prune -f
: 删除所有停止的容器
虚拟机/vps上安装docker,容器无法连网
初步原因还是mtu导致的,默认的1500过大,在启动参数里加上 -mtu=1450 或修改docker的配置文件:
cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service
vim /etc/systemd/system/docker.service
#unbuntu的修改方法
ExecStart=/usr/bin/docker daemon -H fd:// –mtu=1450
#centos7的修改方法
ExecStart=/usr/bin/docker daemon –mtu=1450
安装gogs
mkdir /home/dirdocker/gogs
mkdir /home/dirdocker/mysqlgogs
#安装mysql5.7
docker run -d --name gogs-mysql -v /home/dirdocker/mysqlgogs:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=ROOT密码 -e MYSQL_USER=gogs -e MYSQL_PASSWORD=密码 -e MYSQL_DATABASE=gogs_sql mysql:5.7 --character-set-server=utf8 --collation-server=utf8_unicode_ci
docker run -d --privileged --name=gogs --link gogs-mysql:mysql -p 10022:22 -p 3000:3000 -v /home/dirdocker/gogs:/data gogs/gogs
解释:-v 是将本地目录挂载到容器里 --link 可以将两个容器链接在一起(同网段)
安装pptpd
mkdir /home/dirdocker/pptpd
编辑
nano /home/dirdocker/pptpd/chap-secrets
# Secrets for authentication using PAP
# client server secret acceptable local IP addresses
arm * 123456 *
然后
#docker run -d --name pptpd --privileged -p 1723:1723 -v /home/dirdocker/pptpd/chap-secrets:/etc/ppp/chap-secrets mobtitude/vpn-pptp
docker run -d --restart always --name pptpd --privileged -p 1723:1723 -v /home/dirdocker/pptpd/chap-secrets:/etc/ppp/chap-secrets mobtitude/vpn-pptp
安装redmine
mkdir /home/dirdocker/redmineMysql
mkdir /home/dirdocker/redmine
#按照官方教程没有设置MYSQL的编码格式.中文时会出问题
docker run -d --name redmine-mysql -v /home/dirdocker/redmineMysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=redmine mysql:5.7 --character-set-server=utf8 --collation-server=utf8_unicode_ci
#docker run -d --name redmine --link redmine-mysql:mysql -p 3000:3000 -v /home/dirdocker/redmine:/usr/src/redmine/files redmine:3.2.1
docker run --name=redmine -it --rm --link redmine-mysql:mysql \
--volume=/home/dirdocker/redmine:/home/redmine/data \
--env="DB_PASS=secret" --env="DB_NAME=redmine"\
--env="USERMAP_UID=998" \
--volumes-from gitlab \
-p 3000:80 \
sameersbn/redmine:latest
--volumes-from gitlab
使用与gitlab同一个volumes,这样才能访问到git内容,--env="USERMAP_UID=998"
表示以用户id 998来运行redmine,这个998是gitlab里的git用户,不然redmine会没权限获取到git数据
docker run -d --name=redmine -it --rm --link redmine-mysql:mysql \
--volume=/volume1/docker/redmine/redmine:/home/redmine/data \
--env="DB_PASS=secret" --env="DB_NAME=redmine"\
--env="USERMAP_UID=998" \
-p 3000:3000 \
redmine:3.4
wiznote
#for qnap
docker run --name wiz -it -d -v /share/appData/dirdocker/wiznote:/wiz/storage -v /etc/localtime:/etc/localtime -p 1081:80 -e SEARCH=true wiznote/wizserver
docker run --name wiz --restart=always -it -d -v /home/justchen/docker/wizdata:/wiz/storage -v /etc/localtime:/etc/localtime -p 10082:80 -p 9269:9269/udp wiznote/wizserver
群晖
docker run -d --name redmine-mysql \
--restart=always \
-v /volume2/docker/redmine/redmineMysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=redmine \
mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_unicode_ci
docker run -d --name=redmine -it --link redmine-mysql:mysql \
--volume=/volume2/docker/redmine/redmine/files:/usr/src/redmine/files \
--env="DB_PASS=secret" --env="DB_NAME=redmine"\
--env="USERMAP_UID=998" \
-p 3000:3000 \
redmine:3.4
安装shadowsocks服务
#请无视此福利
docker run -d --name ssserver -p 8066:8066 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 8066 -k 8926785 -m aes-256-cfb
安装gitlab
mkdir -p /home/dirdocker/gitlab/config
mkdir -p /home/dirdocker/gitlab/logs
mkdir -p /home/dirdocker/gitlab/data
docker run --detach \
--hostname git.justchen.com \
--publish 443:443 --publish 1081:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /home/dirdocker/gitlab/config:/etc/gitlab \
--volume /home/dirdocker/gitlab/logs:/var/log/gitlab \
--volume /home/dirdocker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
#升级处理:
docker stop gitlab
docker rm gitlab
docker pull gitlab/gitlab-ce:latest
#再执行最开始那条
#备份:将 <your container name> 更换为 gitlab
docker exec -t <your container name> gitlab-rake gitlab:backup:create
# 12.2 以后版本方式
docker exec -t <container name> gitlab-backup create
#恢复需要进入docker容器,运行 gitlab-rake gitlab:backup:restore BACKUP=1393513186_xxx.tar
onlyoffice
onlyoffice 需要ONLYOFFICE Document Server
Mail Server
以及Community Server
这三个项目配合使用,其中mail部份可以不需要, Document是用来在线处理文档用的,community则是用户以及项目管理中心.
环境安装
参考 https://github.com/ONLYOFFICE/Docker-CommunityServer
#创建需要的文件夹
mkdir -p /home/dirdocker/onlyoffice/DocumentServer/data
mkdir -p /home/dirdocker/onlyoffice/DocumentServer/logs
mkdir -p /home/dirdocker/onlyoffice/CommunityServer/logs
mkdir -p /home/dirdocker/onlyoffice/CommunityServer/data
mkdir -p /home/dirdocker/onlyoffice/CommunityServer/mysql
#创建网桥,因为用link的方式会与always启动顺序冲突
docker network create --driver bridge onlyoffice
docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-document-server \
-v /home/dirdocker/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /home/dirdocker/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
onlyoffice/documentserver
docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-community-server \
-p 81:80 \
-v /home/dirdocker/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \
-v /home/dirdocker/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \
-v /home/dirdocker/onlyoffice/CommunityServer/mysql:/var/lib/mysql \
-v /home/dirdocker/onlyoffice/DocumentServer/data:/var/www/onlyoffice/DocumentServerData \
-e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server \
onlyoffice/communityserver
world 中文乱码处理
参考https://github.com/ONLYOFFICE/DocumentServer/issues/7
apt-get install fonts-arphic-ukai
mkdir -p /usr/share/fonts/consolas
cd /usr/share/fonts/consolas/
wget https://raw.githubusercontent.com/justchen/yahei.consolas-font/master/YaHei.Consolas.1.12.ttf
chmod 644 *.ttf
cd /usr/share/fonts
tar cv * | docker exec -i onlyoffice-document-server tar x -C /usr/share/fonts/
docker exec onlyoffice-document-server documentserver-generate-allfonts.sh
安装 wordpress
前段间由于服务器被挂马,始终不知道是什么原因引起的,所以干脆把所有应用全部移到docker来处理,方便备份复恢复
待研究!!
群晖 docker 更新方法
引用自: https://blog.littlelanmoe.com/uncategorized/386
群晖上的Docker是个很好用的功能,本人也使用Docker安装了不少程序,总体来说使用还是很方便的。
但是最近冒出了一个问题:Docker里面的程序如果有新版本了要如何更新呢?
搜罗了一圈百度,结果没找到什么有价值的东西,果然百度一下,什么都不知道。最后还是用Google找到了办法,总结了两个办法:
第一个,笨办法:把下载的镜像删掉,容器也删掉,重新下载,保证是最新的;
第二个,保留容器的设置:首先在群晖的web页面上把docker里需要更新的程序停止,然后用命令docker pull
Cloudreve
参考 https://daqing.host/3630/cloudreve-docker-aria2/
# 下载
docker pull xavierniu/cloudreve
# 创建
mkdir -p ~/cloudreve/uploads \
&& mkdir -p ~/cloudreve/avatar \
&& touch ~/cloudreve/conf.ini \
&& touch ~/cloudreve/cloudreve.db
# 启动
docker run -d \
--name cloudreve \
-e PUID=$UID \
-e PGID=$GID \
-e TZ="Asia/Shanghai" \
-p 5212:5212 \
--restart=unless-stopped \
-v /cloudreve/uploads:/cloudreve/uploads \
-v ~/cloudreve/conf.ini:/cloudreve/conf.ini \
-v ~/cloudreve/cloudreve.db:/cloudreve/cloudreve.db \
-v ~/cloudreve/avatar:/cloudreve/avatar \
xavierniu/cloudreve
为了得到初始信息,需要执行docker logs -f cloudreve获取初始密码
transmission
docker run -d --name="transmission" \
-e USERNAME=justchen \
-e PASSWORD=************ \
-p 9091:9091 \
-p 51413:51413 \
-p 51413:51413/udp \
-v /mnt/vdb/docker/pt/downloads:/root/Downloads \
-v /mnt/vdb/docker/pt/config:/root/.config/transmission-daemon \
--restart=always \
helloz/transmission