转自:http://blog.csdn.net/zzulp/article/details/54175909
在Docker hub中已经有redmine和MySQL的官方镜像了。这里我选用mysql的5.7版本和redmine的3.2版本。
docker pull mysql:5.7 docker pull redmine:3.2 12 12安装成功之后,执行docker images,可以看到两个镜像的描述,类似如下:
#docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mysql 5.7 b73014bcbc5b 7 hours ago 400.2 MB redmine 3.2 6e3204627702 11 hours ago 636.1 MB 1234 1234这里为物理机和虚拟机的3306端口做了端口映射,以让外部用户可以通过3306端口访问mysql实例。
这里为物理机和虚拟机的8080与3000端口做了端口映射,使用外部用户可以通过8080端口访问redmine.
如果一切正常,那么使用docker ps -a可以看到下面的输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 36c529a03cab redmine:3.2 "/docker-entrypoint. 7 seconds ago Up 7 seconds 0.0.0.0:8080->3000/tcp server-redmine c28063bc0494 mysql:5.7 "docker-entrypoint.s About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp server-mysql 123 123目前为止,打开浏览器访问物理机的8080端口就可以打开redmine的页面了。
在redmine的使用过程中,通常会有用户上传文件,这些文件存放在/usr/src/redmine/files路径下,使用docker安装后,这些文件便在虚拟机中,如果日常需要备份等维护工作,能在物理机上进行操作是比较方便的。因此借助docker的数据卷功能以实现这种需求。
docker run -d -p 8080:3000 --name=server-redmine -e MYSQL_ROOT_PASSWORD="pass" --link server-mysql:mysql -v /redmine-dir:/usr/src/redmine/files redmine:3.2 1 1同样的mysql的数据存储目录也可以和物理机共享
docker run -d -p 3306:3306 --name server-mysql -v /mysql-dir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="pass" -e MYSQL_DATABASE=redmine mysql:5.7 1 1数据库备份的一种方法是dump成sql文件,见下面的命令。
$ docker exec server-mysql sh -c 'exec mysqldump --databases redmine -uroot -p"$MYSQL_ROOT_PASSWORD"' > /your/host/path/bak.sql 1 1如果想和虚拟机交互,可以启动一个虚拟机的shell:
docker exec -it $id /bin/bash 1 1如果想将虚拟机的文件复制出来,可以用:
docker cp server-mysql:/var/lib/mysql/redmine ./ 1 1在操作过程中,有时候会操作失败,产生一些不需要的文件,可以通过下面的方式删除
docker stop 36c529 #停止指定id的容器 docker rm 36c529 #删除指定id的容器 docker rmi b73014 #删除指定id的镜像 123 123docker的安装后,会在主机上添加docker虚拟网卡,将物理机和虚拟机组织在一个内网中。通过内网ip,也可以访问虚拟机上的服务。