Docker를 처음 입문한건 텐서플로우를 윈도우에 설치하면서부터였다. 뭔가 바로 로컬에서 소스를 수정할 수 있는게 아니라서 뭔가 여간 불편해서 그 이후로 잘 안썼었는데.. 이 도커가 사람들은 정말 편리한지 이제 시장에서 배포환경이 거의다 도커가 되어버렸다(배포는 사실 진짜 편하긴하지..). 최근 회사에서도 도커를 쓸일이 생겨버려서.. 이젠 좀 체계적으로 정리를 해야겠다 싶다.
```docker images``` : 도커 이미지 목록 ```docker login``` : docker hub계정으로 로그인 가능 ```docker restart <도커id>``` : 도커 컨테이너 재실행 ```docker attach <도커id>``` : (실행중인)도커 컨테이너에 접속 (웹서버 같이 백그라운드에서 실행되는 컨테이너에 attach로 접속하면 커맨드를 입력할 수 없고 로그인만 볼 수 있음) ```docker inspect <도커id>``` : 도커 컨테이너의 공유폴더나 기타 옵션들을 다 볼수있음!
### Docker 컨테이너 & 이미지 삭제 ```docker rm <도커id>``` : 도커 컨테이너를 삭제함 ```docker rmi <도커id>``` : 도커 이미지를 삭제함 이미지까지 삭제해줘야 나중에 docker image를 업로드할때 같은 이름일경우 오류가 안남
### Docker 컨테이너 안에 접속 ```docker exec <도커id>``` : 컨테이너에 새로운 프로세스를 실행시킬 때 사용함(예를들면 쉘이나.. / 컨테이너가 재시작될때 같이 재시작되진 않는다고 함_체크필요!!) ```docker exec -it <도커id> /bin/bash```: 컨테이너에 접속해서 bash 쉘 실행! (-it 라고 덧붙여 주어야 한다. 이는 STDIN 표준 입출력을 열고 가상 tty (pseudo-TTY) 를 통해 접속하겠다는 의미) ### Docker 컨테이너 안에 파일 복사 ```docker cp /path/foo.txt <도커id>:/path/foo.txt```: 호스트에서 컨테이너로 파일 전송하는 방법 ```docker cp <도커id>:/path/foo.txt /path/foo.txt```:컨테이너에서 호스트로 파일 전송하는 방법
### Docker 실행 ```docker run -d -p 8888:8888 -p 6006:6006 dockerhub계정/이미지이름```: 도커 이미지 다운받고 포트포워딩 후 실행(아마 -d가 다운.. -p가 포트포워딩인듯?) ```docker run -p 443:1443 -p 8080:8000 -itd -v <호스트의 로컬디렉토리>:<컨테이너의 디렉토리> --name <생성할컨테이너이름> <이미지이름>```: -v 옵션으로 공유폴더 마운트를 해줄 수 있음! -d는 백그라운드 옵션 ```docker-compose up -d```
### Docker 이미지 업로드 ```docker commit -m "<메세지>" <도커id> dockerhub계정/이미지이름:태그```: docker 이미지 커밋(컨테이너에서 이미지 생성, 포트포워딩 새로 짜줄때 많이 씀) ```docker commit <도커id> <이미지이름>```: docker 이미지 커밋(컨테이너에서 이미지 생성, 포트포워딩 새로 짜줄때 많이 씀) ```docker push dockerhub계정/이미지이름:태그```: dockerhub에 이미지 업로드
```Python from tensorflow.python.client import device_lib def get_available_gpus(): return [x.name for x in device_lib.list_local_devices()] get_available_gpus()
# docker container 안에서 ssh-key 생성 결과 Generating public/private rsa key pair. Created directory '/root/.ssh'. Your identification has been saved in /root/.ssh/id_dsa. Your public key has been saved in /root/.ssh/id_dsa.pub. The key fingerprint is: SHA256:woWqfGuErQHO6/FCmDkpY8oD4UsVNqP3lrACrtc0g0M root@f44bce126400 The key's randomart image is: +---[RSA 2048]----+ | | | = . | | o + . . | |+.E+ o . | |BBo+= + S | |X@=o*+ . | |X+*Boo | |o*=.o. | |.ooo. | +----[SHA256]-----+
mkdir mecab_install cd mecab_install wget mecab-0.996-ko-0.9.2.tar.gz tar -zxvf mecab-*-ko-*.tar.gz cd mecab-0.996-ko-0.9.2 ./configure make make check make install mecab --version ldconfig mecab --version
tar zxfv mecab-0.996-ko-0.9.2.tar.gz cd mecab-0.996-ko-0.9.2 autoreconf -vi #./configure ./configure --with-mecab-config=./mecab-config --with-charset=utf8 make make check sudo make install cd ../
sudo ldconfig tar zxfv mecab-ko-dic-2.1.1-20180720.tar.gz cd mecab-ko-dic-2.1.1-20180720 autoreconf -vi ./configure make sudo make install
cd ../ git clone https://bitbucket.org/eunjeon/mecab-python-0.996.git cd mecab-python-0.996 python setup.py build python setup.py install
mecab-config --libs-only-L | sudo tee /etc/ld.so.conf.d/mecab.conf sudo ldconfig
wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.1.1-20180720.tar.gz tar -zxvf mecab-ko-dic-2.1.1-20180720.tar.gz cd mecab-ko-dic-2.1.1-20180720 ./configure make make install mecab -d /usr/local/lib/mecab/dic/mecab-ko-dic