我无法弄清楚如何在Docker中运行我的容器(通过docker-compose)。
过去几周我一直在阅读Docker,我有兴趣建立一个我可以开发的环境,我可以高效地复制,与同事合作。
我已阅读以下文章:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-centos-7
我已经通过Bash脚本安装了Docker和Docker Compose,该脚本由前面文章中的命令组成:(以sudo身份运行)
## Install Docker package
function docker_install {
echo "__ installing docker"
# Run installer script
wget -qO- https://get.docker.com/ | sh
# Add user parameter to docker group
usermod -aG docker $1
# Enable docker on boot
sudo systemctl enable docker.service
# Start docker now
sudo systemctl start docker.service
}
## Install docker-compose package
function docker-compose_install {
echo "__ installing docker-compose"
# Update yum repo
sudo yum install epel-release
# Install pip with "yes" flag
sudo yum install -y python-pip
# Install SSL Extension
sudo pip install backports.ssl_match_hostname --upgrade
# Install docker-compose through pip
sudo pip install docker-compose
# Upgrade python
sudo yum upgrade python*
}
# Call Functions
docker_install
docker-compose_install
我的Docker镜像有docker-compose.yml
个文件。 (目前我只是将PHP和Apache作为概念验证,我将包括MySQL一次可以让PHP和Apache协同工作)
php:
image: php
links:
- httpd
httpd:
image: httpd
ports:
- 80:80
我致电sudo docker-compose up -d
而我没有收到任何错误:
Creating containerwrap_httpd_1
Creating containerwrap_php_1
我的任何问题是:
当我在图片运行后运行php -v
和service httpd status
时,我会收到:
-bash: php: command not found
和
● httd.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
如果图像正在运行,为什么我无法使用PHP或查看Apache的状态?我该如何利用我的PHP和Apache容器?
我已经问过this question again更明智的版本。
答案 0 :(得分:2)
您缺少的是容器就像不同的机器。在Droplet上运行命令,您将看不到在这些机器上运行的任何内容。你需要连接到它们。一个简单的方法是使用一些东西:
docker exec -it CONTAINER_ID /bin/bash
。这将使您可以访问每个容器bash。
对于您的Apache服务器,它将是containerwrap_httpd_1,除非您在每次创建和启动服务时将docker-compose.yaml设置为使用常量名称,否则它将始终更改。当然,您可以curl localhost
或打开浏览器并浏览到您的Droplet的IP地址,前提是它在默认端口上转发http(或使用转发端口)。这样可以查看Apache的默认网页,因为您已为该服务设置了导出80:80规则。
答案 1 :(得分:1)
似乎你对Docker的概念有一些误解。您可以将每个docker容器映像为轻量级虚拟机(当然Docker容器与真实VM不同)。所以基本上在你创建了php和httpd容器之后,这些php和httpd命令只能在容器中使用'庆典。您无法在主机中执行这些命令,因为您的主机与容器不同。如果要附加到容器bash,请查看此命令exec。你应该能够在容器中运行php或httpd命令。 bash中。
如果您想从主机连接到您的php容器,可以尝试docker run -p参数,publish a container's port(s) to the host.
或者您希望将php和httpd容器连接在一起,您应该考虑阅读docker的网络文档,以了解如何使用link或docker network。