Ubuntu에서 Docker 활용 flow

programming·2023년 2월 25일
0
post-thumbnail

기본 Flow

이미지 pull - 컨테이너 생성 - 네트워크 생성 - 네트워크 연결

0. ssh -i (키페어 파일) ubuntu@(IP주소) 입력

0 - (1). sudo -s 입력 (관리자 권한을 통해서 시작하기 ★★)
0 - (2). 컨테이너 확인하고 켜져있으면 중지, 삭제 => docker ps -a => docker stop (컨테이너이름) => docker rm (컨테이너이름)
0 - (3). 이미지 확인하고 있으면 삭제 => docker images => docker rmi 이미지이름(태그 이름까지 쓰기 ex. goingtodev/node:v1.0)

1. 이미지 pull

(1) 터미널 명령어: docker pull mysql:latest (이미지 이름:태그 이름)
(2) 터미널 명령어: docker images (다운로드한 Docker 이미지 확인)

2. 컨테이너 생성 및 실행

(1) mysql 컨테이너인 경우 : doker run --name mysql(예시 이름) -e MYSQL_ROOT_PASSWORD=<Docker 비밀번호> -d -p 3306:3306 mysql:latest(컨테이너 이름:Tag 이름)

3. 네트워크 만들기 ( ex. 예시이름 - net / mysql)

(1) docker network create net(네트워크 예시 명칭) <=네트워크 만들기
(2) docker network inspect net(네트워크 예시 명칭) <= 네트워크 및 ip 확인
(3) docker network connect net mysql(컨테이너 예시 명칭) <= 네트워크 연결
(4) mysql의 IP주소 확인

4. VScode에서 node 파일 이미지 빌드 과정

(1) 확인한 mysql의 IP주소를 express/model/database.js에서 로컬 주소 부분에 바꿔 넣기.
(2) Dockerfile 이라는 이름으로 파일 생성.
(3) 터미널 명령어: docker build -f Dockerfile -t <이미지 이름> . <== 이미지 이름쓰고 '한 칸 띄고 마침표'까지 적기.

5. VScode에서 node 파일 컨테이너 생성 및 실행

(1) 터미널 명령어: docker run -it -p 3000:3000 --name node(컨테이너 이름) goingtodev/node:v1.0 (이미지 이름:Tag) bash (bash 꼭 입력!!)
(2) docker network connect net node (node 파일 컨테이너 명칭) <= 네트워크 연결
(3) docker network inspect net(네트워크 이름) <= 네트워크 및 ip 확인

6. Docker node 컨테이너 누르고 Terminal 들어간 후, npm start 입력.

cf) [SequelizeConnectionError]: Unknown database 'board' 에러 뜨면, mysql 컨테이너로 가서, 터미널 간 다음에, board 생성.

(1) mysql -u root -p (로그인) 입력
(2) Docker 비밀번호 입력
(3) SHOW DATABASES; 입력
(4) create database board; 입력


Github Action 사용한다면 이후 작업(수정 등)을 터미널(관리자)에서 다룰 때

나의 예시 과정 기록

=> 깃허브 액션을 통해 수정된 파일을 Docker hub을 통해 터미널을 활용해 작업하는 과정

=> node 이미지, 컨테이너 지우고 다시 생성해야하는 상황


1. ssh -i /c/createbasicboard_keypair.pem ubuntu@3.38.106.4

2. sudo -s

3. docker ps -a


4. docker stop node

4.1. docker rm node

4.2. docker rmi goingtodev/node:v1.0


5. docker images로 이미지 삭제 확인

6. docker pull goingtodev/node:v1.0


7. docker images

8. docker run -it -p 3000:3000 --name node goingtodev/node:v1.0 bash

9. npm start

❌❌❌여기서 컨테이너 생성을 하고 바로 npm start를 해버리면 안된다. ❌❌❌

아직 컨테이너가 꺼져 있고, 네트워크에 연결이 안되어 있기 때문이다.

따라서 아래 과정들에 써놨듯이 exit를 통해 app 밖으로 나간 뒤, 컨테이너를 켜주고, 네트워크를 연결시켜, 다시 bash를 통해 들어와 npm start를 입력해야 한다!


10. exit

11. docker ps -a

12. docker start node

13. docker ps -a


14. docker network connect net node

15. docker network inspect

16. docker exec -it node bash

17. npm start

profile
개발 기록 일지

0개의 댓글