도커 사용법-컨테이너 실행, 이미지 삭제하기 등

2021. 2. 24. 10:16

코딩 하다보면 환경 설정이나 패키지 설치에 많은 시간이 걸릴 때가 있다. 에러 없이 잘 진행되면 문제가 없지만, 중간에 잘 안 되면 해결하기가 쉽지 않은 경우도 많다. 그리고 설치하는 프로그램들끼지 연관성이 높은 경우, 버전이 맞지 않아 에러가 발생하기도 한다. 파이썬에서는 독립된 파이썬 개발환경을 만들어 패키지들간의 충돌을 막는다. 하지만, 파이썬외에 다른 서비스들도 필요한 경우에는 어떻게 해야 할까?

오늘은 도커(docker)란 무엇이고, 어떻게 사용하는지에 대해서 알아보도록 하겠다.

 

 

도커

 

 

도커는 리눅스 응용프로그램을 컨테이터 안에 배치시키는일을 자동화하는 오픈소스프로젝트이다.

도커를 이용하면 서로 다른 환경에서도 코드를 안정적으로 실행할 수 있다. 도커 파일에 원하는 환경을 설정하고, 특정 서버나 컴퓨터에서 실행하면 무엇이 필요한지 읽고 다운로드하여 이를 이미지로 만든다. 그리고, 이 이미지를 실행하여 동일한 환경을 이용할 수 있다.

 

이 이미지를 실행한 형태를 컨테이너라고 한다. 컨테이너 장점 중 하나는 하나의 서버에 여러 개의 컨테이너를 가질 수 있다는 것이다. 그래서, 특정 서비스의 트래픽이 많으면 해당 컨테이너를 늘리고 줄임으로써 이에 대응할 수 있다고 한다.

 

 

도커를 설치하는 방법은?

도커는 해당 홈페이지에서 설치할 수 있다. 맥이나 윈도우를 이용하고 있다면, 파일을 다운받아 실행하여 쉽게 설치할 수 있다. 리눅스를 이용하면 터미널을 이용해서 명령어를 입력해야 하는데, 자세한 내용은 도커 홈페이지를 참조하면 되겠다.

 

Docker Desktop for Mac and Windows | Docker

Learn why Docker Desktop is the preferred choice for millions of developers building containerized applications. Download for Mac or Windows.

www.docker.com

 

 

도커 다운로드

 

 

도커를 실행하는 방법은?

도커를 실행하기 위해서는 이미지가 필요하다. 하지만, ubuntu, redis, mysql 같은 서비스는 이미지가 없는 경우에 바로 다운로드가 된다. 예를 들어 mysql서비스를 이용하기 위해 이라고 입력하는 경우, image가 없을 때 바로 다운로드가 시작된다.

> docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7

 

image파일 리스트는 아래 명령어로 확인할 수 있다.

> docker image ls

 

불필요한 이미지는 아래 명령어로 지울 수 있다.

> docker image rm <IMAGE ID>

 

IMAGE ID를 입력하기 어렵다면, 아래와 같이 REPOSITORY명과 버전을 입력하여 지울 수도 있다.

> docker image rm -f mysql:5.7

 

다른 서비스를 이용하는 방법은 아래  포스팅에 잘 설명돼 있으니, 참고하기 바란다.

 

초보를 위한 도커 안내서 - 설치하고 컨테이너 실행하기

초보를 위한 도커 안내서 2번째 글입니다. 도커의 기본적인 내용을 이야기 했던 첫번째 글에 이어 실제로 도커를 설치하고 컨테이너를 실행하면서 도커 명령어를 알아봅니다. 도커를 처음 접하�

subicura.com

 

 

도커 image파일 만드는 방법은?

OPEN AI universe를 이용하기 위해서는 도커를 이용해야 한다. 하지만, image파일을 받아서 사용하는 것이 아니라 도커파일을 받아서 이미지를 생성해야 한다. OPEN AI universe는 github에서 다운받을 수 있다.

 

openai/universe

Universe: a software platform for measuring and training an AI's general intelligence across the world's supply of games, websites and other applications. - openai/universe

github.com

 

다운을 받고 이미지 파일을 생성하고자 했지만, mojoco-py라는 패키지를 설치할 때 에러가 발생한다.

Building wheel for mujoco-py (setup.py): started
Building wheel for mujoco-py (setup.py): finished with status 'error'
ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-6bm0pfge/mujoco-py/setup.py'"'"'; __file__='"'"'/tmp/pip-install-6bm0pfge/mujoco-py/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-ikgr1pk6 cwd: /tmp/pip-install-6bm0pfge/mujoco-py/ Complete output (25 lines): running bdist_wheel running build Traceback (most recent call last): File "", line 1, in File "/tmp/pip-install-6bm0pfge/mujoco-py/setup.py", line 44, in tests_require=read_requirements_file('requirements.dev.txt'), File "/usr/lib/python3.5/distutils/core.py", line 148, in setup dist.run_commands() File "/usr/lib/python3.5/distutils/dist.py", line 955, in run_commands self.run_command(cmd)
File "/usr/lib/python3.5/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/usr/lib/python3/dist-packages/wheel/bdist_wheel.py", line 179, in run self.run_command('build') File "/usr/lib/python3.5/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/usr/lib/python3.5/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/tmp/pip-install-6bm0pfge/mujoco-py/setup.py", line 28, in run import mujoco_py # noqa: force build File "/tmp/pip-install-6bm0pfge/mujoco-py/mujoco_py/__init__.py", line 3, in from mujoco_py.builder import cymj, ignore_mujoco_warnings, functions, MujocoException File "/tmp/pip-install-6bm0pfge/mujoco-py/mujoco_py/builder.py", line 16, in from cffi import FFI
ImportError: No module named 'cffi' ......


이미지를 생성할 때 설치하는 명령어는 DockerFile에서 확인할 수 있다. 여기서 gym[ALL]을 설치할 때 에러가 발생해서 버전을 지정하여 설치하도록 수정했다.

RUN pip3 install gym[ALL]
-> 
RUN pip3 install gym==0.7.0


이를 수정한 후 이미지 파일은 무사히 생성이 됐다. 이제 아래와 같이 run명령어를 실행하여 컨테이너를 생성하면 된다.

> docker run --privileged --rm -it -p 12345:12345 -p 5900:5900 -e
DOCKER_NET_HOST=172.17.0.1 universe /bin/bash


하지만, 해당 주소가 이미 사용중이라는 에러 메시지가 발생하여 포트번호를 변경하여 실행하였다.

 

 

오늘은 이렇게 도커에 대해서 알아보았다. OPEN AI universe를 이용하기 위해서 도커를 맥북에 설치해보았다. 속도도 빠르고 서비스를 설치하고 이용하는 것이 간편하다. 맥북에서 리눅스 서비스가 필요할 때 이용해도 괜찮지 않을까 싶다.

댓글()