2016-08-02 1 views
-1

저는 Docker를 처음 사용하고 Wordpress docker 이미지를 가져 와서 약간의 변경 작업, 커밋 및 새로운 이미지를 docker cloud에 업로드하려고했습니다.Docker Image Commit이 작동하지 않습니까?

그러나 도커 이미지를 다시 시작하면 이전에 커밋 된 상태로 돌아 가지 않습니다. 내가 뭔가 잘못하고 있는거야?

  1. docker pull tutum/wordpress:latest
  2. 설치 워드 프레스, 테마를 추가, 일부 페이지
  3. docker commit -m "First commit" <CONTAINER ID> foo/bar
  4. docker login
  5. docker push foo/bar:latest
  6. 을 다시 시작 고정 표시기 컨테이너를 추가, pluigins을 추가했다. 돌아 가기 곳에 나는 docker pull tutum/wordpress:latest

docker pull foo/bar:latest을 시도하고 Image is up to date for foo/bar:latest을 들었다 수행 한 후였다.

+0

변경하려는 내용은 무엇입니까? – johnharris85

+0

@JHarris 테마를 업로드하고 새 페이지를 추가했습니다. 이 도커 이미지에는 mysql이 번들되어 있으므로 도커 컨테이너를 커밋하지 않으면 MySQL에 추가 된 새 데이터가 저장되지 않습니까? – Nyxynyx

답변

0

컨테이너에는 상태가 없으므로 Docker 이미지를 다시 시작하면 기본적으로 해당 이미지의 새 컨테이너 인스턴스가 만들어집니다. 귀하의 Wordpress 컨테이너가 data volume에 데이터를 유지하지 않으면 현재 컨테이너가 삭제 된 후에 변경 사항이 사라집니다. 이미지의 Dockerfile이 게시되지 않았기 때문에 데이터가 보존되는 위치를 알려주지 못합니다. 다른 하나는 docker commitcommand이며 컨테이너 볼륨에 저장된 데이터는 커밋되지 않습니다.

this Wordpress image에서 살펴보면 MySQL 컨테이너를 지정하여 지속성을 유지할 수 있습니다.

1

당신은 아무 잘못도 없습니다! Docker의 핵심 테넌트 중 하나는 컨테이너가 변경 될 수 없다는 것입니다. 즉, 일단 컨테이너를 빌드하면 전체 수명주기 동안 동일하게 유지되는 상태를 기대해야합니다. https://hub.docker.com/_/wordpress/

경우 : 당신이 Tutum의 워드 프레스 파일로 시작된처럼 당신이 제공 한 정보에서, 그것은

https://github.com/tutumcloud/wordpress 곧 중단 될 것입니다, 그리고 당신은 공식적으로 지원 워드 프레스 고정 표시기 이미지를 사용하여 더 나은 운이 것, 보이는 로컬 환경이 해킹을 찾고, 및/또는 고정 표시기 이미지에 대한 변경 사항을 지속하고,이 같은 것을 설정 할 수 있습니다 (우리 Dockerfiles 중 하나에서 촬영) :

FROM wordpress:latest 

# installs php zip extensions - used for plugins like duplicator 
RUN docker-php-ext-install zip 

# Copy the existing app into our wp directory 

COPY . /var/www/html 

RUN chown -R www-data:www-data /var/www/html/ 

CMD ["apache2-foreground"] 

이미지를 변경하려면 (예 : 설치 플러그인 및 테마)를 사용하면 로컬 컴퓨터에서 고정 표시 장치 컨테이너로 마운트 지점을 만들 수 있습니다. 마운트 지점을 만들려면 컨테이너를 빌드 할 때 -v 태그를 사용하여 볼륨을 설정하십시오.

이에 대한 다른 방법은 (I이 추천, 우리는 사내 우리의 개발을 위해 사용) docker-compose를 사용하는 것입니다 : 다음 docker-compose.yml, 그리고 당신이 실행할 수

app: 
    build: . 
    volumes: 
    - .:/var/www/html 
    ports: 
    - "80:80" 

저장 docker-compose build/docker-compose up 귀하의 응용 프로그램을 지상에서 제거하십시오.

변경 사항을 적용한 후 (변경 사항이 적용된 마운트 지점 사용)이 이미지에 태그를 지정해야합니다.이미지에 태그를 지정하면 고유 한 사용자의 개인 도커 허브 레지스트리로 이미지를 푸시 할 수 있습니다.

로컬 환경에서 변경 한 내용이 이미지에 직접 복사되므로이 이미지에는 모든 변경 사항이 포함됩니다 (COPY 행 참고).

희망이 도움이됩니다.

-meoww-

관련 문제