Docker 시작하기
도커 설치하기
curl -s https://get.docker.com/ | sudo sh // 최신버전의 도커를 설치
sudo usermod -aG docker ubuntu // ubuntu 유저 권한 추가
설치확인
$ docker version
Client: Docker Engine - Community
Azure integration 0.1.7
Version: 19.03.12
API version: 1.40
Go version: go1.13.10
Git commit: 48a66213fe
Built: Mon Jun 22 15:41:33 2020 OS/Arch: darwin/amd64
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 19.03.12
API version: 1.40 (minimum version 1.12) Go version: go1.13.10
... (생략)
Docker 기본 명령어
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
curl -s https://get.docker.com/ | sudo sh // 최신버전의 도커를 설치
sudo usermod -aG docker ubuntu // ubuntu 유저 권한 추가
$ docker version
Client: Docker Engine - Community
Azure integration 0.1.7
Version: 19.03.12
API version: 1.40
Go version: go1.13.10
Git commit: 48a66213fe
Built: Mon Jun 22 15:41:33 2020 OS/Arch: darwin/amd64
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 19.03.12
API version: 1.40 (minimum version 1.12) Go version: go1.13.10
... (생략)
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
옵션 리스트
-d : detacked mode(백그라운드 모드)
-p : 호스트와 컨테이너의 포트를 연결
-v : 호스트와 컨테이너의 디렉토리를 연결
-e : 컨테이너 내에서 사용할 환경변수 설정
--name : 컨테이너 이름 설정
--rm : 프로세스 종료시 컨테이너 자동 제거
-it : -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
--network : 네트워크 연결
docker run --rm -it ubuntu:20.04 /bin/sh
- 컨테이너 내부에 들어가기 위해 sh를 실행하고 키보드 입력을 위해 -it 옵션을 줍니다.
- --rm 옵션이 없다면 컨테이너가 종료되더라도 삭제되지 않고 남아 있어 수동으로 삭제 해야합니다.
컨테이너는 stop상태가 있고 아예 꺼져있는 상태가 있고 실행중인 상태가 있습니다.
docker ps // 실행중인 컨테이너 목록을 확인하는 명령어
docker ps -a // 중지된 컨테이너도 확인하려면 -a옵션을 붙입니다.
docker stop [OPTIONS] CONTAINER [CONTAINER...] // 실행중인 컨테이너를 중지하는 명령어이며 하나 또는 여러개 중지할 수 있습니다.
docker rm [OPTIONS] CONTAINER [CONTAINER...] // 종료된 컨테이너를 완전히 제거하는 명령어
docker logs [OPTIONS] CONTAINER // 컨테이너가 정상적으로 동작하는지 확인하는 좋은 방법은 로그를 확인하는 것입니다. 기본 옵션과 -f, --tail 옵션을 살펴봅니다.
docker images [OPTIONS]REPOSITORY[:TAG]] // 도커가 다운로드한 이미지 목록을 보는 명령어
docker pull [OPTIONS] NAME[:TAG|@DIGEST] // 이미지를 다운로드하는 명령어
ex) docker pull ubuntu:18.04
docker rmi [OPTIONS] IMAGE [IMAGE...] // 이미지를 삭제하는 방법입니다. images 명령어를 통해 얻는 이미지 목록에서 이미지 ID를 입력하면 삭제가 됩니다. 단 컨테이너가 실행중인 이미지는 삭제되지 않습니다.
docker network create [OPTIONS] NETWORK // 도커 컨테이너끼리 이름으로 통신할 수 있는 가상 네트워크를 만듭니다.
docker network create app-network // app-network라는 이름으로 통신할 네트워크를 만듭니다.
docker network connect [OPTIONS] NETWORK CONTAINER // 기존에 생성된 컨테이너에 네트워크를 추가합니다.
docker network connect app-network mysql // mysql 컨테이너에 네트워크를 추가합니다.
Docker로 MySQL 실행하기
docker run -d -p 3306:3306 \
-e MYSQL_ALLOW_EMPTY_PASSWORD=true \ --name mysql \
mysql:5.7
MySQL 데이터베이스를 실행
docker exec -it mysql mysql
create database wp CHARACTER SET utf8;
grant all privileges on wp.* to wp@'%' identified by 'wp'; flush privileges;
quit
exec 명령어
- exec 명령어는 run 명령어와 달리 실행중인 도커 컨테이너에 접속할 때 사용하며 컨테이너안에 ssh server등을 설치하지 않고 exec 명령어로 접속합니다.
mysql을 지우고 다시 띄우면 어떻게 될까?
컨테이너가 가상의 환경에 생성되어있는데 그 가상의 데이터도 컨테이너가 종료될때 같이 없어짐
-v /my/own/datadir:/var/lib/mysql : 해당경로에 연결을 해주겠다.
docker stop mysql
docker rm mysql
docker run -d -p 3306:3306 \
-e MYSQL_ALLOW_EMPTY_PASSWORD=true \
--network=app-network \
--name mysql \
-v /Users/subicura/Workspace/github.com/subicura/docker-guide/ch02/mysql:/var/lib/mysql \ mysql:5.7
- 참고문헌 : https://www.inflearn.com/course/%EB%8F%84%EC%BB%A4-%EC%9E%85%EB%AC%B8/lecture/52807?tab=curriculum
Author And Source
이 문제에 관하여(Docker 시작하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rudus1012/Docker저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)