출처 " https://nicewoong.github.io/development/2017/10/09/basic-usage-for-docker/
Docker 사용법 (Linux에서)
Reference
를 보고 직접 따라해본 것을 정리한 내용입니다.
- 도커란 무엇인가 - 조영규의 블로그 를 보고 개념을 이해하기 쉬웠습니다.
Docker 다운받기
curl -s https://get.docker.com/ | sudo sh
Docker 사용 권한 주기
- docker 는 기본적으로 root 권한이 필요로 되어있다고 함.
- sudo 명령어 없이 docker를 이요하고 싶다면 아래 커맨드로 사용자에게 권한을 줍시다.
sudo usermod -aG docker your-user
- 그리고나서
docker version
을 입력하면 아래와 같은 결과를 볼 수 있음. 버전확인하기- 버전정보 확인을 통해서 설치가 제대로 되었는지 판단가능 :)
~$ docker version
Client:
Version: 17.09.0-ce
API version: 1.32
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:42:18 2017
OS/Arch: linux/amd64
Server:
Version: 17.09.0-ce
API version: 1.32 (minimum version 1.12)
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:40:56 2017
OS/Arch: linux/amd64
Experimental: false
컨테이너사용
옵션
옵션 | 설명 |
---|---|
-d | detached mode 흔히 말하는 백그라운드 모드 |
-p | 호스트와 컨테이너의 포트를 연결 (포워딩) |
-v | 호스트와 컨테이너의 디렉토리를 연결 (마운트) |
-e | 컨테이너 내에서 사용할 환경변수 설정 |
–name | 컨테이너 이름 설정 |
–rm | 프로세스 종료시 컨테이너 자동 제거 |
-it | -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션 |
–link | 컨테이너 연결 [컨테이너명:별칭] |
출처 : 초보를 위한 도커 안내서 - 설치하고 컨테이너 실행하기
기본 Operation
- **이미지 다운받기 **
#우분투 이미지 다운받기 (pull)
~$ docker pull ubuntu:latest
# 아래와 같이 다운받는 과정이 나타남.
latest: Pulling from library/ubuntu
9fb6c798fa41: Downloading [=============================> ] 28MB/47.54MB
3b61febd4aef: Download complete
9d99b9777eb0: Verifying Checksum
d010c8cf75d7: Download complete
7fac07fb303e: Download complete
- 다운 받은 docker image 확인하기
~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest b6dddb991dfa 2 weeks ago 107MB
ubuntu 16.04 2d696327ab2e 2 weeks ago 122MB
ubuntu xenial 2d696327ab2e 2 weeks ago 122MB
centos latest 196e0ce0c9fb 3 weeks ago 197MB
ubuntu trusty dea1945146b9 3 weeks ago 188MB
- 이미지를 컨테이너로 실행한 뒤 bash shell 열기
- -i 옵션 : interactive
- -t 옵션 : tty
- –name ubuntu01 : 해당 컨테이너 이름을 ubuntu01 이라 지정
- /bin/bash : 해당 컨테이너의 bash shell 실행
- bash shell 에서 exit 하면 컨테이너가 자동으로 stop 됨.
~$ docker run -i -t --name ubuntu01 ubuntu /bin/bash
#ubuntu 자리에 image id 를 입력해도 됨
#아래와 같이 새로운 우분투 쉘로 진입한 것을 확인할 수 있음.
root@0a012fad0c3d:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
exit 하고 빠져나와서 다시 ubuntu01 시작할때
docker restart ubuntu01
그리고 다시 해당 컨테이너에 접속하기
~$ docker attach ubuntu01
# 새로 진입한 ubuntu01 에서 ls 명령 실행해보기
root@0a012fad0c3d:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
- 컨테이너 중지하기
~$ docker stop 5555b7dd1385
5555b7dd1385
- 모든 컨테이너 중지하기
~$ docker stop $(docker ps -a -q)
5555b7dd1385
b318cd2b8377
6c9e33af1272
a9ac6712167f
bb5b70c94b85
2ab2195d8895
5e53723c44cc
d4bdcfc7f373
b76f537a4fd6
- 컨테이너 재부팅하기
~$ docker restart 5555b7dd1385
5555b7dd1385
#ps 명령어로 확인해보기
wjhan@triton8:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5555b7dd1385 redis "docker-entrypoint..." 12 hours ago Up 5 seconds 6379/tcp sad_lichterman
- 컨테이너 확인하기 (-a 옵션으로 종료된 컨테이너까지 확인하기)
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5555b7dd1385 redis "docker-entrypoint..." 11 hours ago Up 11 hours 6379/tcp sad_lichterman
b318cd2b8377 redis "docker-entrypoint..." 11 hours ago Exited (0) 11 hours ago mystifying_yalow
6c9e33af1272 redis "docker-entrypoint..." 13 hours ago Exited (0) 12 hours ago hopeful_joliot
479266e88816 ubuntu:16.04 "/bin/bash" 18 hours ago Exited (0) 18 hours ago reverent_wright
a9ac6712167f centos "/bin/bash" 9 days ago Exited (127) 9 days ago gallant_mirzakhani
bb5b70c94b85 ubuntu:xenial "/bin/bash" 9 days ago Exited (0) 9 days ago vigorous_williams
2ab2195d8895 ubuntu:xenial "/bin/bash" 9 days ago Exited (0) 9 days ago modest_mccarthy
5e53723c44cc ubuntu:xenial "/bin/bash" 9 days ago Exited (0) 9 days ago clever_visvesvaraya
d4bdcfc7f373 ubuntu:xenial "/bin/bash" 9 days ago Exited (0) 9 days ago sleepy_cray
b76f537a4fd6 ubuntu:xenial "/bin/bash" 9 days ago Exited (0) 9 days ago peaceful_haibt
- 컨테이너 삭제하기
~$ docker rm 479266e88816
479266e88816
- 모든 컨테이너 삭제
~$ docker rm $(docker ps -a -q)
5555b7dd1385
b318cd2b8377
6c9e33af1272
a9ac6712167f
bb5b70c94b85
2ab2195d8895
5e53723c44cc
d4bdcfc7f373
b76f537a4fd6
- 이미지 삭제하기
docker rmi 이미지이름:이미지태그
- 모든 이미지 삭제하기
~$ docker rmi $(docker images -q)
Untagged: redis:latest
Untagged: redis@sha256:ebb396dc3ac00e8eb4a64c1c022ef41ef16801f31ff98b16916a77fdc7252e67
Deleted: sha256:b6dddb991dfa5f8e49b00d2d4ff1e46e6593101ace99cca0febf287cadc4febf
Deleted: sha256:de0975f9263db0f0d446f5ed2789ec8316a1b81954215815bec6b1813545094a
Deleted: sha256:f4bca552ddb640965abb7cc6457c88960ed7e9b27e9ee4ae4e79307b9abbf015
Deleted: sha256:60087bf380ab081eba07e40965078d82b3f759910318e0cfce118b3f46b5a1d9
Deleted: sha256:c5bc4c295a15c2ff31c9edb3ecdcc18b1271f3fc7e544f64cf5ffb99c07fb555
Deleted: sha256:8686ba556bab3b5149f39e3f4ec6c82f0cc79d3181caa2773900491a6baf3713
Deleted: sha256:eda7136a91b7b4ba57aee64509b42bda59e630afcb2b63482d1b3341bf6e2bbb
Untagged: centos:latest
Untagged: centos@sha256:eba772bac22c86d7d6e72421b4700c3f894ab6e35475a34014ff8de74c10872e
Deleted: sha256:196e0ce0c9fbb31da595b893dd39bc9fd4aa78a474bbdc21459a3ebe855b7768
Deleted: sha256:cf516324493c00941ac20020801553e87ed24c564fb3f269409ad138945948d4
Untagged: ubuntu:trusty
Untagged: ubuntu@sha256:6e3e3f3c5c36a91ba17ea002f63e5607ed6a8c8e5fbbddb31ad3e15638b51ebc
Deleted: sha256:dea1945146b96542e6e20642830c78df702d524a113605a906397db1db022703
Deleted: sha256:6401e3024b4d4ef4c981cde2e830858eb790ee84284e1401cf569a6db8df51d9
Deleted: sha256:f12ee38eb7aa0ffdd43c657b433d91ac4c2930887c02eb638fd1518f374bc738
Deleted: sha256:9ac64e2751425199591402799079940629829c7c2fc0e083fb714e5dd94d70a9
Deleted: sha256:12a6279e654d2f23c2fa086bf2dcd82e1a2c82b01028379bbf2cde061d9235e6
Deleted: sha256:c47d9b229ca4eaf5d3b85b6fa7f794d00910a42634dd0fd5107a9a937b13b20f
우분투 (ubuntu 16.04) 컨테이너 실행하기
해당 우분투 이미지가 없으면 알아서 설치하고나서 우분투를 실행함.
docker run ubuntu:16.04
이때 우분투 이미지를 새로 설치하고나서 바로 종료됨.
설치가 완료되고, 옵션과 함께 다시 실행해 봅시다.
docker run --rm -it ubuntu:16.04 /bin/bash
새로운 우분투 컨테이너로 진입한 상태를 알아챌 수 있을 것.
cat /etc/issue
명령어를 통해서 우분투 버전을 확인해봅시다.–rm 옵션 때문에 exit 하는 순간 모든 데이터 삭제됨.
Redis 컨테이너 실행하기
- detached mode (백그라운드모드)로 : -d 옵션
- 컨테이너 포트를 호스트의 포트로 연결 : -p 옵션
docker run -d -p 1234:6379 redis
- 없으니까 바로 다운로드 받고 실행됨
- -p 옵션을 이용: 호스트의 1234포트를 컨테이너의 6379포트로 연결, localhost의 1234포트로 접속하면 하면 redis를 사용 가능
~$ docker run -d -p 1234:6379 redis
Unable to find image 'redis:latest' locally
latest: Pulling from library/redis
065132d9f705: Pull complete
be9835c27852: Pull complete
f4a0d1212c38: Pull complete
43be9e9f0fb9: Pull complete
a1bca8e532ec: Pull complete
382eae952932: Pull complete
Digest: sha256:ebb396dc3ac00e8eb4a64c1c022ef41ef16801f31ff98b16916a77fdc7252e67
Status: Downloaded newer image for redis:latest
6c9e33af12720e6d5ad70506e709d7bfddc621ae9887270dd6da4be93fdea964
- 텔넷으로 연결해보기
~$ telnet localhost 1234
Trying ::1...
Connected to localhost.
Escape character is '^]'.
#아래와같이 명령어를 입력해보자.
set mykey hello
+OK
get mykey
$5
hello
'Code > 잡동사니' 카테고리의 다른 글
Ubuntu에서 Nvidia 드라이버 설치 시 유의사항 (0) | 2019.06.25 |
---|---|
라즈베리파이 삼바접속하기 (0) | 2019.06.01 |
visual studio code의 git 초기화 방법 (0) | 2019.03.30 |
라이젠에서 AVD(X86)가 실행되지 않을 때, (0) | 2019.02.19 |