我是码头工人的新手.我有一个shell脚本将数据加载到impala中,我想要一个运行的docker文件构建一个映像并运行容器.我在mac上,安装了boot2docker并DOCKER_HOST
设置了env.
bash-3.2$ docker info Containers: 0 Images: 0 Storage Driver: aufs Root Dir: /mnt/sda1/var/lib/docker/aufs Dirs: 0 Execution Driver: native-0.2 Kernel Version: 3.15.3-tinycore64 Debug mode (server): true Debug mode (client): false Fds: 10 Goroutines: 10 EventsListeners: 0 Init Path: /usr/local/bin/docker Sockets: [unix:///var/run/docker.sock tcp://0.0.0.0:2375]
我试图使用以下方法安装预先构建的图像:
sudo docker pull busybox
我收到此错误:
sudo docker pull busybox
2014/08/18 17:56:19 Post http:///var/run/docker.sock/images/create?fromImage=busybox&tag=: dial unix /var/run/docker.sock: no such file or directory
我的码头设置有问题吗?
当我这样做时docker pull busybox
,它会拉动图像并完成下载.
bash-3.2$ docker pull busybox Pulling repository busybox a9eb17255234: Download complete fd5373b3d938: Download complete d200959a3e91: Download complete 37fca75d01ff: Download complete 511136ea3c5a: Download complete 42eed7f1bf2a: Download complete c120b7cab0b0: Download complete f06b02872d52: Download complete 120e218dd395: Download complete 1f5049b3536e: Download complete bash-3.2$ docker run busybox /bin/echo Hello Doctor Hello Doctor
我错过了什么吗?
在我的MAC上,当我在终端上使用启动boot2docker-vm时
boot2docker start
我看到以下内容
To connect the Docker client to the Docker daemon, please set: export DOCKER_CERT_PATH= export DOCKER_TLS_VERIFY=1 export DOCKER_HOST=tcp://:2376
设置这些环境变量后,我能够运行构建没有问题.
更新[2016-04-28]如果您使用的是最新版本的docker,您可以这样做
eval $(docker-machine env)
将设置环境
(docker-machine env
将打印出口报表)
docker pull
如果docker service
没有运行将失败.确保它正在运行
:~$ ps aux | grep docker root 18745 1.7 0.9 284104 13976 ? Ssl 21:19 0:01 /usr/bin/docker -d
如果它没有运行,你可以启动它
sudo service docker start
适用于Ubuntu 15及以上版本
sudo systemctl start docker
您可以使用快速设置环境 shellinit
在命令提示符下执行:
$(boot2docker shellinit)
这将填充并导出环境变量并初始化其他功能.
我也遇到了这个错误.虽然,我没有使用boot2docker但只是在Ubuntu上安装了"普通" docker(请参阅https://docs.docker.com/installation/ubuntulinux/).
我收到错误("拨打unix /var/run/docker.sock:没有这样的文件或目录.您是否尝试连接到没有TLS的启用TLS的守护程序?")因为docker 守护程序尚未运行.
在Ubuntu上,您需要启动该服务:
sudo service docker start
另见http://blog.arungupta.me/resolve-dial-unix-docker-sock-error-techtip64
对于Windows上的boot2docker,看到:
FATA[0000] Get http:///var/run/docker.sock/v1.18/version: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
我所做的只是:
boot2docker start boot2docker shellinit
那产生了:
export DOCKER_CERT_PATH=C:\Users\vonc\.boot2docker\certs\boot2docker-vm export DOCKER_TLS_VERIFY=1 export DOCKER_HOST=tcp://192.168.59.103:2376
最后:
boot2docker ssh
码头工人再次工作
如果您使用的是CentOS 7,并且已经通过yum安装了Docker,请不要忘记运行:
$ sudo systemctl start docker $ sudo systemctl enable docker
这将启动服务器,并在启动时自动重新启动它.
在Linux中,首先sudo service docker start
在终端中执行.
您不需要像sudo
使用时boot2docker
那样运行任何docker命令,因为boot2docker
默认情况下,传递到VM的每个命令都以root身份运行.
当你运行时,你会看到错误,sudo
因为sudo
没有DOCKER_HOST
设置env,只有你的用户才有.
您可以通过以下方式确认:
$ env
然后一个
$ sudo env
并DOCKER_HOST
在每个输出中寻找.
至于有一个运行脚本的docker文件,这样的东西可能适合你:
Dockerfile
FROM busybox # Copy your script into the docker image ADD /path/to/your/script.sh /usr/local/bin/script.sh # Run your script CMD /usr/local/bin/script.sh
然后你可以运行:
docker build -t your-image-name:your-tag .
这将构建您的docker镜像,您可以通过执行以下操作来查看:
docker images
然后,要运行容器,您可以执行以下操作:
docker run your-image-name:your-tag
此运行命令将从您使用您Dockerfile
和您的构建命令创建的映像启动容器,然后它将在您script.sh
执行完毕后完成.