我使用以下 var str = 'hello, how are you today? I am not bad and you?'
function checker(str){
var count = 0
for(var i = 0; i < str.length; i++){
if(str[i] == ",")
count++
}
return `There is ${count} comma`
}
checker(str)
//this returns "There is 1 comma"
扩展docker映像:
Dockerfile
请注意,FROM solr:6.6
COPY --chown=solr:solr ./services-core/search/A12Core /A12Core/
有一个solr:6.6
语句。
运行从该Dockerfile构建的容器时,尝试访问USER solr
下的文件或目录时,我获得了拒绝的权限:
/A12Core
我需要做什么才能获得访问$ docker run -it 2f3c58f093e6 /bin/bash
solr@c091f0cd9127:/opt/solr$ cd /A12Core
solr@c091f0cd9127:/A12Core$ cd conf
bash: cd: conf: Permission denied
solr@c091f0cd9127:/A12Core$ ls -l
total 8
drw-r--r-- 3 solr solr 4096 Aug 31 14:21 conf
-rw-r--r-- 1 solr solr 158 Jun 28 14:25 core.properties
solr@c091f0cd9127:/A12Core$ whoami
solr
solr@c091f0cd9127:/A12Core$
目录中文件和文件夹的权限?
请注意,我是从Windows 7运行docker构建的。我的docker版本是/A12Core
。
答案 0 :(得分:1)
我在这里还有另一个答案,这是错误的(但是仍然可以解决您的问题:),但是现在我在您的Dockerfile中看到了拼写错误。让我们看看这一行。
COPY --chown=solr:solr ./services-core/search/A12Core /A12Core/
COPY
命令检查容器中的目标路径是否存在。如果没有,它将在复制之前创建它。
A12Core
中的./services-core/search
。/A12Core
是否存在。root:root
创建它。A12Core
的内容复制到新创建的A12Core
。最后,您在/A12Core
中拥有所有内容,但它属于root
,因此您无法访问它。
由于solr
码头工人镜像已设置USER solr
,因此可以采用的方式是
RUN mkdir /A12Core
COPY ./services-core/search/A12Core /A12Core
USER
指令为{{1}之后的任何RUN
,CMD
和ENTRYPOINT
指令设置用户名...用户组... 1}}。
答案 1 :(得分:1)
您的目录没有执行权限:
drw-r--r-- 3 solr solr 4096 Aug 31 14:21 conf
否则,您将无法根据Linux文件系统权限进入该目录。您可以使用chmod在主机中修复该问题:
chmod +x conf
如果您在Dockerfile中执行此命令(使用RUN
行),将导致将所有修改后的文件复制到新层,因此,如果以递归方式运行此文件,则其大小可能会增加一倍图片,因此建议在可能的情况下将其修复在构建主机上。