분류 전체보기 96

[Docker] MongoDB가 설치된 우분투 이미지 만들기(feat. commit)

목표 도커 우분투 이미지로 컨테이너를 생성하고 생성된 이미지에 mongo DB를 설치해 ubuntu:mongodb 이미지를 작성한다. 컨테이너 실행 docker run -it [container] [image] 도커 우분투 이미지를 실행시켜 mongo DB를 설치할 컨테이너를 생성하도록 하자. docker run -it --name ubuntu_mongo ubuntu /bin/bash 설치 방법 패키지 업데이트 apt-get update 설치에 앞서 패키지 업데이트를 진행한다. wget 설치 apt-get install wget 도커 이미지의 경우, 리눅스 이미지를 받아오면 wget명령도 없을 것이다. 없다고 뜨는 것들은 설치한다음 다시 진행해주면 된다. 패키지 매니저 시스템을 사용해 공개키 받아오기 w..

Develop/Docker 2021.02.05

[Docker] zsh테마가 설정된 이미지 만들기 (feat. commit/Dockerfile)

목적 열심히 WSL위에 Docker를 설치하고 Docker로 Ubuntu컨테이너를 만들어 zsh과 oh-my-zsh을 통해 꾸며주었다. 이 과정을 다시 반복하지 않기 위해서이미지로 저장해두는 작업을 하려고 한다. 이미지 저장은 commit을 통해서 쉽게 할 수 있으나 dockerfile을 만들어보고 제대로 동작하는지 확인하는 과정을 거쳐보려고 한다. 방법 docker commit을 이용한 이미지 저장 ⇒ 변경하려면 앞의 모든 작업을 다시 수행 dockerfile을 이용한 이미지 저장 commit으로 저장하기 이미지 생성 docker commit Ubuntu-20.04 ubuntu:zsh Ubuntu-20.04라는 컨테이너를 ubuntu라는 이미지베이스에 zsh이라는 태그를 달아서 저장한다. 생성된 이미지..

Develop/Docker 2021.02.03

[Docker] Dockerfile 명령어

FROMFROM [image](:[tag])베이스이미지 지정tag가 없을 경우, 자동으로 latest태그의 이미지를 지정한다.베이스이미지가 OS가 아닐경우, 해당 이미지가 돌아갈 수 있는 최소한의 패키지가 포함되어있어 운영체제가 베이스가 되지 않아도 돌아갈 수 있다. MAINTAINERMAINTAINER [name]dockerfile을 관리하는 사람의 이름 또는 이메일 정보 지정한다.*빌드에 영향 없음COPY COPY [src] ... [dst]파일이나 디렉토리를 복사하고 없으면 자동 생성한다.ADDADD [src] ... [dst]COPY와 같은 역할src에 URL 입력이 가능하며 압축 파일일 경우 자동 압축 해제 후 복사된다.RUNRUN [command]shell 형식 - 설치해야하는 명령shell ..

Develop/Docker 2021.02.03

[Docker] 명령어

이미지이미지 검색docker search ([option]) [keyword]도커 허브에 존재하는 이미지를 검색한다. --no-trunc : 검색 결과 모두 표시--limit : 검색 결과를 n개로 제한--filter=stars=n : 즐겨찾기 수를 n개로 지정 이미지 다운로드 docker (image) pull ([option]) [image_name](:[tag])도커 허브에서 이미지를 다운받는다. (image는 생략가능)-a : 이미지에 존재하는 모든 태그 이미지 다운 이미지 정보 확인docker image inspect [image]받은 이미지에 대한 환경이나 아키텍쳐, 가상화 크기같은 자세한 정보를 확인한다. 존재하는 이미지 확인docker images 혹은 docker image ls로 확인할..

Develop/Docker 2021.02.03

[Linux] 기본 명령어

ls ([directory]||[condition]) list의 약자로 폴더내 파일들을 출력하는 명령어이다.조건이 있다면 해당 조건에 해당하는 파일들을 출력한다. 옵션 -a : 숨김 파일을 포함하는 전체 파일 목록을 출력한다.-l : 파일의 목록을 자세히 출력한다. 예시아래와 같은 구조로 폴더와 파일을 생성하고 명령어를 다르게 사용했을 때, 결과를 본다.lsls [directory]ls [condition]ls -als -l pwdPrint Working Directory의 약자로 현재 작업중인 디렉토리의 경로를 출력한다. 예시pwd cd [directory]Change Directory의 약자로 폴더간 이동을 담당하는 명령어이다.인자없이 cd만 실행할 경우, 현재 사용자의 home 디렉토리로 이동한다...

Develop/Linux 2021.02.02

[Docker] unminimize Ubuntu

man은 명령어에 대한 정보를 확인할 때 자주 쓰인다. docker로 만든 ubuntu 컨테이너에서 man명령어가 동작하지 않으면서 위와 같은 메시지를 출력했다. 대충 내용을 보니 이 시스템은 유저가 로그인하지 않는 시스템에 필요하지 않은 패키지와 내용물들을 제거한 최소화된 버전이다. 맨 페이지를 포함하는 내용을 복구하고 싶다면 unminimize명령을 사용할 수 있다. 이를 위해서 man-db패키지가 필요할 것이다. 라고 적혀있다. (틀릴지도 모른다..) 실제로 찾아보니 도커 깃허브에 해당 이슈와 관련된 내용이 있었고 도커에서 사용하는 기본적인 ubuntu 이미지가 minimal 버전의 ubuntu라는걸 알 수 있었다. unminimizeminimal 버전에서 다시 돌아가려면 메시지에 친절하게 나와있듯..

Develop/Docker 2021.02.02

[Linux] apt-get dpkg lock 오류

gedit을 설치하려는데 이런 오류를 만났다. 대충 내용을 읽어보니 dpkg frontend lock을 얻지 못했다. 다른 프로세스가 사용중인듯하다. 라고 적혀있다. 추가로 lock 파일을 삭제하는 건 해결책이 아니며 시스템을 고장낼 수 있다는 것도 알려준다. 해결 방법은 아래와 같다. ps -a 혹시 apt-get을 사용하고 있는 다른 프로세스가 있는지 확인한다. 다른 프로세스가 사용중인데 강제로 lock 파일을 삭제한다면 진짜 시스템에 문제가 생길지도 모른다. rm /var/lib/apt/lists/lock rm /var/cache/apt/archives/lock rm /var/lib/dpkg/lock* 다른 프로세스가 사용중이 아니라면 3번의 명령을 통해서 lock 파일들을 삭제해준다. dpkg -..

Develop/Linux 2021.02.02

Docker

도커란? 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 화물에 대한 규격을 컨테이너라고 부른다. 도커에서 컨테이너 역시 같은 의미를 가진다. 담기는 것은 무엇이든 컨테이너라는 같은 규격안에 존재하므로 무엇을 담던지 옮기기 쉽고 시간 또한 절약된다. 도커는 이런 컨테이너 방식의 가상화를 통해서 하나의 규격을 제공하며 컨테이너들을 관리할 수 있는 기능들을 제공해주는 플랫폼이다. 컨테이너와 이미지 컨테이너는 프로세스를 격리시켜 동작하게 하는 기술이다. 기존에 존재했던 OS 가상화 방식의 무겁고 느리다는 단점을 보완하며 프로세스만을 격리시키기때문에 성능의 향상이 높다는 장점을 가진다. 서버 하나에 가상머신 여러개를 올리는 것을 버거운 일일 수 밖에 없지만, 컨테이너 여러개를 올리고 실행하는 것은 성능적 손..

Develop/Docker 2021.02.02

Django - To Do List 만들기

프로젝트 생성먼저 앱을 구동할 Django 프로젝트를 설치한다.$ django-admin startproject TodoListdjango 명령어를 실행하기 위해 manage.py가 있는 프로젝트 폴더 안으로 이동한다.$ cd TodoListrunserver명령을 통해 프로젝트를 실행해본다.$ python manange.py runserverDjango 기본 실행화면 앱 생성 및 등록만들고자 하는 앱(Todo_app)을 생성한다.$ python manage.py startapp todo_app생성된 앱을 프로젝트에 등록한다.프로젝트 폴더에 settings.py에서 INSTALLED_APPS에 앱 이름을 추가한다. (쉼표 주의)INSTALLED_APPS = [ ... 'django.contrib.stati..

Develop/Django 2021.02.01

[Python] 10816 - 숫자 카드 2

문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.입력첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다.셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,000,..