환경 변수
cpu와 메모리
작동 확인
exec와 attach
cp 파일복사
diff
# 환경변수 제공 -e
vagrant@docker:~$ docker run -it -e A=123 ubuntu
root@5a5610043794:/#
# mysql 실행
vagrant@docker:~$ docker run -d mysql:5.7
75fe207042911fff271a9ddf3fcd66730c3c29702213a336dd223c2fe7000ee3
# 상태 확인
vagrant@docker:~$ docker ps vagrant@docker:~$ docker ps 확인-a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75fe20704291 mysql:5.7 "docker-entrypoint.s…" 7 seconds ago Exited (1) 6 seconds ago busy_leakey
-> 실행 후 바로 종료 된것을 확인
# 원인을 찾기 위해 로그 확인
vagrant@docker:~$ docker logs 75
2021-07-01 05:28:19+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.34-1debian10 started.
2021-07-01 05:28:19+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2021-07-01 05:28:19+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.34-1debian10 started.
2021-07-01 05:28:20+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
You need to specify one of the following:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
-> MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD, MYSQL_RANDOM_ROOT_PASSWORD 중 하나를
지정해야 한다
# 환경변수를 설정하고 실행
vagrant@docker:~$ docker run -d -e "MYSQL_ROOT_PASSWORD=0525" mysql:5.7
2e4d46aa30d6d95e952efc72d0c9ba75dc176b1473ea35051a7f8a13d7453f45
# 상태 확인
vagrant@docker:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2e4d46aa30d6 mysql:5.7 "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 3306/tcp, 33060/tcp competent_lamarr
->컨테이너가 종료되지 않고 계속 실행중임을 확인
# 변수를 제공해서 db 를 초기화 할수있도록 쉘스크립트가 만들어져있음
/usr/local/bin/docker-entrypoint.sh -> 파일 이름은 docker inspect dml "Entrypoint.sh" 확인
$MYSQL_ROOT_PASSWORD ~ 최소 설정
루트패스워드를 직접 지정
스크립트에 의해 환경변수 제공하는 이미지들이 있다
# cpu와 메모리 제한을 걸고 컨테이너 생성
vagrant@docker:~$ docker run -it --name dh --cpus 0.3 ubuntu
root@0321e1df8175:/#
vagrant@docker:~$ docker run -it --cpus 0.3 --memory 100m ubuntu
# cpu와 메모리 제한 변경
vagrant@docker:~$ docker update --cpus 0.5 dh
vagrant@docker:~$ docker update --memory 200m dh
# 작동 확인
vagrant@docker:~$ docker run --name web -d httpd
76337a16053c2b784e33ecaa5f4e37cc4ec2f71f71bac7d5c237187b00cc4922
vagrant@docker:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
76337a16053c httpd "httpd-foreground" 21 seconds ago Up 19 seconds 80/tcp web
vagrant@docker:~$ docker inspect 76
"IPAddress": "172.17.0.3",
vagrant@docker:~$ curl http://172.17.0.3
<html><body><h1>It works!</h1></body></html>
잘 작동되고있다
# exec
#실행중인 컨테이너에서 어플리케이션 추가로 실행
#임시로 쉘을 띄워 접속
#디버깅 용도
#standrad input, terminal => -it
vagrant@docker:~$ docker exec -it web bash
root@76337a16053c:/usr/local/apache2#
#종료하지 않고 빠져나가는 방법
ctrl+p+q
read escape sequence
# attach
# 컨테이너에 표준입출력을 연결
# 실시간으로 로그를 볼때 사용
vagrant@docker:~$ docker run -it ubuntu
vagrant@docker:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5dbab2373f3e ubuntu "bash" 48 seconds ago Up 48 seconds trusting_kilby
76337a16053c httpd "httpd-foreground" 11 minutes ago Up 11 minutes 80/tcp web
vagrant@docker:~$ docker attach 5d
root@5dbab2373f3e:/#
# host <-> container 파일 복사 (index.html 파일을 컨테이너에 복사 )
# host컴퓨터 index.html 생성
vagrant@docker:~$ echo "hello world" > index.html
vagrant@docker:~$ cat index.html
hello world
# 컨테이너 생성, 실행
vagrant@docker:~$ docker run -d httpd
vagrant@docker:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ccb7add2dae httpd "httpd-foreground" 18 seconds ago Up 18 seconds 80/tcp laughing_goodall
# 컨테이너의 index.html 파일 확인
vagrant@docker:~$ docker exec -it 7c bash
root@7ccb7add2dae:/usr/local/apache2# cd htdocs/
root@7ccb7add2dae:/usr/local/apache2/htdocs# ls
index.html
root@7ccb7add2dae:/usr/local/apache2/htdocs# cat index.html
<html><body><h1>It works!</h1></body></html>
# index.html 파일을 컨테이너에 복사
vagrant@docker:~$ docker cp index.html 7c:/usr/local/apache2/htdocs
# 컨테이너의 index.html 파일 확인
vagrant@docker:~$ docker exec -it 7c bash
root@7ccb7add2dae:/usr/local/apache2# cd htdocs/
root@7ccb7add2dae:/usr/local/apache2/htdocs# ls
index.html
root@7ccb7add2dae:/usr/local/apache2/htdocs# cat index.html
hello world
root@7ccb7add2dae:/usr/local/apache2/htdocs#
# docker diff
# 두가지의 차이를 보여줌
# 현재 컨테이너의 상태와 원래 이미지를 비교
vagrant@docker:~$ docker diff 7c
C /usr
C /usr/local
C /usr/local/apache2
C /usr/local/apache2/logs
A /usr/local/apache2/logs/httpd.pid
C /usr/local/apache2/htdocs
C /usr/local/apache2/htdocs/index.html
C /root
A /root/.bash_history
-> A: 파일이 추가 됨/C: 파일이 변경 됨 /D: 파일이 삭제 됨
'클라우드 > 도커(Docker)' 카테고리의 다른 글
도커 Docker 네트워크 / bridge, host, link (0) | 2021.07.01 |
---|---|
도커 Docker 볼륨 / Bind Mount, 도커 볼륨 (0) | 2021.07.01 |
도커 Docker Container 명령 (0) | 2021.07.01 |
도커 Docker 이미지 명령 (0) | 2021.07.01 |
도커 Docker 명령 (0) | 2021.06.30 |