Docker Версия: 17.09.1-ce Я новичок в Docker, и я пытаюсь построить образ Docker на Centos.Ниже приведен фрагмент файла Docker, который у меня есть
FROM centos
RUN yum -y install samba-common && \
yum -y install gcc perl mingw-binutils-generic mingw-filesystem-base mingw32-binutils mingw32-cpp mingw32-crt mingw32-filesystem mingw32-gcc mingw32-headers mingw64-binutils mingw64-cpp mingw64-crt mingw64-filesystem mingw64-gcc mingw64-headers libcom_err-devel popt-devel zlib-devel zlib-static glibc-devel glibc-static python-devel && \
yum -y install git gnutls-devel libacl1-dev libacl-devel libldap2-dev openldap-devel && \
yum -y remove libbsd-devel && \
WORKDIR /usr/src && \
git clone git://xxxxxxxx/p/winexe/winexe-waf winexe-winexe-wafgit && \
WORKDIR /usr/src/samba && \
WORKDIR /usr/src/winexe-winexe-wafgit/source && \
head -n -3 wscript_build > tmp.txt && cp -f tmp.txt wscript_build && \
echo -e '\t'"stlib='smb_static bsd z resolv rt'", >> wscript_build && \
echo -e '\t'"lib='dl gnutls'", >> wscript_build && \
echo -e '\t'")" >> wscript_build && \
rm -rf tmp.txt && \
./waf --samba-dir=../../samba configure build
Я пытался с нормальным cd
, который не работает.WORKDIR
не работает.Как я могу установить рабочий каталог в Dockerfile?
Я получаю сообщение об ошибке, как показано ниже: Dockerfile
/bin/sh: WORKDIR: command not found
The command '/bin/sh -c yum -y install samba-common && yum -y install gcc perl mingw-binutils-generic mingw-filesystem-base mingw32-binutils mingw32-cpp mingw32-crt mingw32-filesystem mingw32-gcc mingw32-headers mingw64-binutils mingw64-cpp mingw64-crt mingw64-filesystem mingw64-gcc mingw64-headers libcom_err-devel popt-devel zlib-devel zlib-static glibc-devel glibc-static python-devel && yum -y install git gnutls-devel libacl1-dev libacl-devel libldap2-dev openldap-devel && yum -y remove libbsd-devel && WORKDIR /usr/src && git clone git://xxxxxxxx/p/winexe/winexe-waf winexe-winexe-wafgit && WORKDIR /usr/src/samba && git reset --hard a6bda1f2bc85779feb9680bc74821da5ccd401c5 && WORKDIR /usr/src/winexe-winexe-wafgit/source && head -n -3 wscript_build > tmp.txt && cp -f tmp.txt wscript_build && echo -e '\t'"stlib='smb_static bsd z resolv rt'", >> wscript_build && echo -e '\t'"lib='dl gnutls'", >> wscript_build && echo -e '\t'")" >> wscript_build && rm -rf tmp.txt && ./waf --samba-dir=../../samba configure build' returned a non-zero code: 127
Когда я попытался с обычным CD вместо работы WORKDIR, то я получил нижеошибка /bin/sh: line 0: cd: /usr/src/samba: No such file or directory
но с помощью sudo я могу зайти в нее.Затем я попытался включить каталог sudo cd
в файл Docker, затем он сказал no sudo found
ОБНОВЛЕНИЕ 1: Так я начал сборку sudo docker build -t abwinexeimage -f ./abwinexeimage .
Сборка прошла успешно, но, к сожалению, когда я перечисляю изображения, я не вижу никакихизображение с тегом namme of abwinexeimage.

Я не понимаю, что это за первая запись с именем тега как none.что это представляет?он показывает размер 1,23 ГБ. Мне действительно нужно это изображение или я могу безопасно удалить его?
Когда я начал сборку, первая строка показала, что Sending build context to Docker daemon 303.9MB
означает, что в этом хранилище списка изображений с именем centos имя тега самое последнее:один правильный образ, который я построил?Я предполагаю, так как размер говорит 202 МБ?
Затем я выдал docker ps, но контейнер не работал, затем выдал docker ps -a, чтобы увидеть остановленные контейнеры 
Затем я попытался запустить образ как контейнер..

Теперь попытался выдать Docker PS, чтобы проверить, работает ли контейнер

Теперь я могу рассказать вам, почему меня так беспокоит наличие нескольких контейнеров.На самом деле я хотел вручную вставить CD в cd / usr / src / samba внутри контейнера Docker, чтобы проверить, правильно ли обновляются изменения, сделанные через файл Docker, или нет.Теперь, так как у меня есть несколько контейнеров, на самом деле не уверен, какой контейнер мне нужно посмотреть.В этом трюке я попытался запустить все контейнеры, а затем вручную выполнить docker exec -it CONTAINER_NAME [bash | sh]
, чтобы проверить, смогу ли я найти эту файловую систему там.По этой причине я спросил, могу ли я иметь один контейнер, чтобы я мог легко найти там файловую систему. Насколько я понимаю, поскольку несколько операторов RUN создали разные слои, мне трудно найти, в каком контейнере находится моя файловая система,так что я могу вставить в него CD .. извините за большое объяснение ... я пытаюсь лучше понять концепции.Ваши комментарии, пожалуйста ..