我遇到了码头工人和卷大小问题。我正在使用docker-machine 三个容器。给我带来麻烦的是MySQL容器,它有一个 持久性的仅数据容器。当我尝试导入mysql文件时,mysql 抱怨table is full, 这实际上意味着磁盘空间不足。看看系统,我明白了 问题,但不知道如何纠正它:
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC
2015
Docker version 1.8.1, build d12ea79
docker@default:~$ sudo -i
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC
2015
Docker version 1.8.1, build d12ea79
root@default:~# df -h
Filesystem Size Used Available Use% Mounted on
tmpfs 896.6M 112.4M 784.2M 13% /
tmpfs 498.1M 136.0K 498.0M 0% /dev/shm
/dev/sda1 2.8G 2.7G 0 100% /mnt/sda1
cgroup 498.1M 0 498.1M 0% /sys/fs/cgroup
none 462.2G 32.8G 429.5G 7% /Users
/dev/sda1 2.8G 2.7G 0 100%
/mnt/sda1/var/lib/docker/aufs
none 2.8G 2.7G 0 100%
/mnt/sda1/var/lib/docker/aufs/mnt/0a90321d2e941e31385a4c4096e
none 2.8G 2.7G 0 100%
/mnt/sda1/var/lib/docker/aufs/mnt/bca6fc0c017233ed634e7e19284
none 2.8G 2.7G 0 100%
/mnt/sda1/var/lib/docker/aufs/mnt/7e432f020ee8fc9c6a211c810e5
我创建了这样的docker-machine,我认为它会给我我需要的空间,但它没有。
docker-machine create --virtualbox-disk-size 4000 -d virtualbox default
我正在创建像这样的
的mysql图像#!/bin/bash
echo "- checking that the image exists"
IMAGE=$(docker images | grep cp_mysql)
if [ -z "$IMAGE" ]; then
echo '- image does not exist, building'
docker build -t cp_mysql -f Dockerfile-app .
fi
echo "- checking if the mysql data volume exists"
DATA_VOL=$(docker ps -a | grep cp_mysql_data)
# if empty
if [ -z "$DATA_VOL" ]; then
echo '- data volume is empty - building'
DATA_VOL=$(docker build -t data -f Dockerfile-data_vol . | tail -n 1 | awk '{print $3}')
docker run --name cp_mysql_data $DATA_VOL
echo "- build data volume: $DATA_VOL"
else
DATA_VOL=$(echo $DATA_VOL | awk '{print $1}')
echo "- data volume is not empty - using existing volume: $DATA_VOL"
fi
echo '- check if existing cp_mysql_app exists'
APP=$(docker ps -a | grep cp_mysql_app)
if [ -z "$APP" ]; then
echo '- the app does not exist, let us create it'
docker run \
--restart=always \
--name cp_mysql_app \
--restart=always \
--volumes-from=cp_mysql_data \
-e MYSQL_USER=cp \
-e MYSQL_PASSWORD=cp \
-e MYSQL_DATABASE=cp \
-e MYSQL_ROOT_PASSWORD=root \
-d \
-p 3306:3306 cp_mysql
else
echo '- the does exist, let us just run it'
docker start cp_mysql_app
fi
这是该机器的泊坞窗信息
docker@default:~$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: tmpfs
Dirs: 0
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.0.9-boot2docker
Operating System: Boot2Docker 1.8.1 (TCL 6.3); master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
CPUs: 1
Total Memory: 996.2 MiB
Name: default
ID: XLSE:62WR:VWCR:T2Z6:FSE3:NTLV:EQRT:WLW5:NLPF:HPQH:JQGR:K4LZ
Debug mode (server): true
File Descriptors: 9
Goroutines: 16
System Time: 2015-09-08T16:31:38.029737031Z
EventsListeners: 0
Init SHA1:
Init Path: /usr/local/bin/docker
Docker Root Dir: /mnt/sda1/var/lib/docker
Labels:
provider=virtualbox
我基本上需要的是/dev/sda1
的无限空间,或者能够指定大的磁盘大小。我知道这源于我对Docker如何工作的误解,但我认为这个线程会启动我的研究。
提前致谢。
答案 0 :(得分:2)
需要以MB输入选项--virtualbox-disk-size
(请参阅Docker Machine Docs)。您创建了4GB的机器。这为docker 2.8GB提供了存储图像和在/dev/sda1
上运行容器的功能。
docker-machine create
使用的磁盘大小的默认值为20GB(根据上面链接的文档)。运行docker images -a
将显示您提取的图像需要多少磁盘空间。这将指示您需要多少空间。
通常20GB是一个很好的尺寸,可以拉出几个不同的图像并运行一些容器。所以也许你创建一个具有默认磁盘大小的新机器并尝试再次导入mysql文件。