需要两个images,nextcloud和mysql
docker pull nextcloud
docker pull mysql
一、 创建mysql container
1、 在宿主机创建一个目录映到container的数据存储目录
mkdir -p /data/docker/mysql/mysql-data
2、 使用docker run 命令创建container,container名字为mysql-nextcloud
2.1、进入到/data/docker/mysql/mysql-data
#到时候宿主机目录直接使用 $PWD 即可
cd /data/docker/mysql/mysql-data
docker run -d --privileged --name mysql-nextcloud \
-v $PWD:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_USER=nextcloud \
-e MYSQL_PASSWORD=nextcloud \
-e MYSQL_DATABASE=nextcloud \
docker.io/mysql
#–privileged 给容器权限
3、 进入容器并查看库是否存在
docker exec -it mysql-nextcloud /bin/bash
mysql -unextcloud -pnextcloud
#mysql容器就已经创建好了
二、 创建 nextcloud container
1、 在宿主机上创建一个存储nextcloud数据于配置文件的目录
mkdir -p /data/docker/nextcloud/
2、 创建一个简单的container实例,把container内/var/www/html下的文件拷到宿主机的/data/docker/nextcloud/html目录下
docker run -d --name nextcloud -v nextcloud:/var/www/html docker.io/nextcloud
docker cp nextcloud:/var/www/html /data/docker/nextcloud/
3、 删除掉nextcloud container 重新创建一个nextcloud并把/data/docker/nextcloud/html 映射到container 内部的/var/www/html
3.1、删除临时的nextcloud container
docker rm -f nextcloud && docker volume rm nextcloud
3.2、进入到/data/docker/nextcloud/html目录
cd /data/docker/nextcloud/html
docker run -id --name nextcloud -p 8080:80 -v $PWD:/var/www/html \
–link mysql-nextcloud \
-e MYSQL_DATABASE=nextcloud \
-e MYSQL_USER=nextcloud \
-e MYSQL_PASSWORD=nextcloud \
-e MYSQL_HOST=mysql-nextcloud \
docker.io/nextcloud
三、 container 已经创建现在试试访问
#nextcloud创建成功