Dockerfile.1
执行多个RUN
:
FROM busybox
RUN echo This is the A > a
RUN echo This is the B > b
RUN echo This is the C > c
Run Code Online (Sandbox Code Playgroud)
Dockerfile.2
加入他们:
FROM busybox
RUN echo This is the A > a &&\
echo This is the B > b &&\
echo This is the C > c
Run Code Online (Sandbox Code Playgroud)
每个都RUN
创建一个图层,所以我总是认为更少的图层更好,因此Dockerfile.2
更好.
当RUN
删除由前一个RUN
(即yum install nano && yum clean all
)添加的内容时,这显然是正确的,但是在每个RUN
添加内容的情况下,我们需要考虑以下几点:
图层都应该只是添加高于前一个差异,所以如果以后层不会删除的东西在前面的一个补充,不存在应节省多少磁盘空间这两种方法之间的优势...
从Docker …
我发现了一个奇怪的行为,我不知道如何解决.
$ var1=*
$ echo $var1
Audiobooks Downloads Desktop (etc.)
$ ls $var1
Audiobooks:
Downloads:
(etc)
Run Code Online (Sandbox Code Playgroud)
一切似乎都好.在声明时,变量被扩展,其他一切都可以工作.但看到这个:
$ var2=~/rpmbuild/{SRPMS,RPMS/*}/enki-*.rpm
$ echo $var2
/home/yajo/rpmbuild/{SRPMS,RPMS/*}/enki-*.rpm
$ ls $var2
ls: no se puede acceder a /home/yajo/rpmbuild/{SRPMS,RPMS/*}/enki-*.rpm: No existe el fichero o el directorio
$ ls /home/yajo/rpmbuild/{SRPMS,RPMS/*}/enki-*.rpm
/home/yajo/rpmbuild/RPMS/noarch/enki-12.10.3-1.fc18.noarch.rpm /home/yajo/rpmbuild/SRPMS/enki-12.10.3-1.fc18.src.rpm
/home/yajo/rpmbuild/RPMS/noarch/enki-12.10.3-1.fc19.noarch.rpm /home/yajo/rpmbuild/SRPMS/enki-12.10.3-1.fc19.src.rpm
Run Code Online (Sandbox Code Playgroud)
这一次,声明只会~
被扩展,这就产生了我无法将其作为参数传递给它ls
.但是,传递相同的字符串会产生预期的结果.
问题是:
$var1
有$var2
?谢谢.
额外说明:
我尝试使用双引号和单引号,但结果相同.
我在那里尝试过的每个调试器都需要一个源文件来调试。然而Python并不总是这样工作。
我有一个模块,它是一个文件夹,里面有__init__.py
和__main__.py
文件等,我通常这样执行:
$ cd /parent/folder
$ python3 -m module_folder --help
Run Code Online (Sandbox Code Playgroud)
如果我不使用-m
,相对导入就会失败。如果我只是将文件夹传递给pudb
,pdb
和其他人,调试器将失败:
$ cd /parent/folder
$ python3 -m pdb module_folder
Traceback (most recent call last):
File "/usr/lib64/python3.3/pdb.py", line 1658, in main
pdb._runscript(mainpyfile)
File "/usr/lib64/python3.3/pdb.py", line 1536, in _runscript
with open(filename, "rb") as fp:
IsADirectoryError: [Errno 21] Is a directory: 'module_folder'
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> /usr/lib64/python3.3/pdb.py(1536)_runscript()
-> with open(filename, "rb") as …
Run Code Online (Sandbox Code Playgroud) 我现在正在学习哈斯克尔。我读到的定义>>
是:
(>>) :: m a -> m b -> m b
x >> y = x >>= \_ -> y
Run Code Online (Sandbox Code Playgroud)
凉爽的。然而,如果x
没有被使用并且 Haskell 很懒,为什么会打印“hi”?
ghci> print "hi" >> return "end"
"hi"
"end"
Run Code Online (Sandbox Code Playgroud)
由于懒惰,类似的构造仅返回“end”并且永远不会解析第一个参数:
ghci> skip _ r = r
ghci> skip (print "hi") "end"
"end"
Run Code Online (Sandbox Code Playgroud)
我明白这>>
必须像现在这样工作,否则单子就会失去意义。但我不明白为什么它实际上有效。
我只想克隆一些东西,而不更改它们。
有什么方法可以克隆存储库,而又省去了开设帐户,设置SSH密钥等的麻烦呢?