1) nginx docker image 불러오기
docker pull nginx:1.25.3-alpine
2) docker image 내역 확인해서 nginx가 잘 들어갔는지 확인하기
docker images
3) image를 container로 만들기(run 명령어)
docker run -d -p 8001:80 --name=myweb nginx:1.25.3-alpine
3-1) nginx의 port 확인하기
docker image history nginx:1.25.3-alpine
4) docker process 확인
docker ps
5) 웹 환경에 잘 뜨는지 확인(port 가 잘 열렸는지)
curl localhost:8001
웹소스를 포함한 새로운 이미지 생성 실습
1) 웹소스 생성
vi index.html
<h1> hello docker world , yoonjae </h1>
2) container안에 복사해주기
docker cp index.html myweb:/usr/share/nginx/html/index.html
3) 내가 원하는 웹소스로 변경되었는지 확인
curl localhost:8001
4) 새로운 이미지 생성을 위한 준비
4-1) 디렉토리 생성
mkdir myweb && cd $_
4-2) 위에서 작성한 index.html을 현재 디렉토리로 옮겨줌
mv ../index.html .
5) dockerfile 생성
vi Dockerfile
FROM nginx:1.25.3-alpine
COPY index.html /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
6) dockerfile을 image로 만들기 (build)
docker build -t myweb:1.0 .
7) image 확인하기
docker images
8) 잘 작동되는지 보기
docker run -d --name=myweb1 -p 8002:80 myweb:1.0
curl localhost:8002
9) Image upload 하기
8-1) docker hub에 로그인하기
docker login
docker info | grep -i username
8-2) image를 로그인된 저장소 영역에 저장하기
docker image tag myweb:1.0 yoonjaeo/myweb:1.0
9) push 해주기
docker push yoonjaeo/myweb:1.0
10) 결과 확인
11) 다른 사람거 pull 해오기
docker pull psb0120/myweb:1.0
1) docker file이 들어있는 git을 가지고 옴.
git clone https://github.com/brayanlee/docker-phpserver.git
2) clone된 폴더로 들어가기
cd docker-phpserver/
3) 폴더에 뭐가 있는지 확인해보기
ls
4) Dokcerfile이 어떻게 생겼는지 확인해보기
cat Dockerfile
FROM php:7.2-apache
MAINTAINER datastory Hub <hylee@dshub.cloud>
ADD index.php /var/www/html/index.php
EXPOSE 80
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
5) index.php파일을 확인해주기
cat index.php
<html>
<body>
<div style="font-size:25px">
<?php
$host=gethostname();
echo "Container Name : ";
echo $host;
?>
<p> Welcome to the Container world~! </p>
</div>
</body>
</html>
6) dockerfile을 image로 만들어주기 => build 해주기
docker build -t phpserver:1.0 .
7) image 파일을 container로 만들어주기 (run 명령어)
docker run -it -d -p 8004:80 -h phpserver --name=phpserver phpserver:1.0
8) container 확인
docker ps
9) 잘 뜨는지 확인하기 (curl)
curl localhost:8004
10) 지금 만든 image에서 index.php를 변경해주고 나만의 image로 생성하고 싶을때.
docker cp index.php2 phpserver:/var/www/html/index.php
11) index.php2 파일 내용으로 변경되어서 잘 뜨는지 확인하기 (curl)
curl localhost:8004
12) 내 계정에 image 올리기
docker-phpserver$ docker login
docker-phpserver$ docker image tag phpserver:1.0 본인계정/phpserver:1.0
docker-phpserver$ docker push 본인계정/phpserver:1.0
1) python 3.10-slim 버전 다운
docker pull python:3.10-slim
2) image 확인
docker images
3) lotto.py 작성
from random import shuffle
from time import sleep
gamenum = input('로또 게임 회수를 입력하세요: ')
for i in range(int(gamenum)):
balls = [x+1 for x in range(45)]
ret = []
for j in range(6):
shuffle(balls)
number = balls.pop()
ret.append(number)
print('로또번호[%d]: ' %(i+1), end='')
print(ret)
sleep(1)
4) docker container 만들기
-itd : 이 컨테이너에서 작업하겠다(backgroud 실행)
docker run -itd --name=python-env python:3.10-slim
5) python conatianer 속으로 넣기
docker cp lotto.py python-env:/lotto.py
6) container bash 환경으로 들어가기
docker exec -it python-env bash
이를 실행하면 다른 prompt가 생성됨
여기서 파이썬 실행가능
python lotto.py
1) runapp.js file 을 만들기
vi runapp.js
var http = require('http');
var content = function(req, resp) {
resp.end("Good morning Korea~!" + "\n");
resp.writeHead(200);
}
var web = http.createServer(content);
web.listen(8000);
2) node image 다운로드
docker pull node:22-alpine
3) image를 container로 만들기
docker run -itd --name=node-env -p 8005:8000 node:22-alpine
4) container 안으로 runapp.js copy
docker cp runapp.js node-env:/runapp.js
5) node로 runapp.js 돌리기
docker exec -it node-env node /runapp.js
5-1) container안으로 들어가서 돌리려면
docker exec -it node-env sh
node /runapp.js
6) 그 후에 크롬에서 ip:8005 하면 js 코드로 짠게 나옴
docker run \
--restart=always \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys/fs/cgroup:/sys/fs/cgroup:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8100:8080 \
--detach=true \
--name=cadvisor \
--privileged \
--device=/dev/kmsg \
gcr.io/cadvisor/cadvisor:latest
publish= 8100:8080으로 했기 때문에, 크롬에서 ip:8100으로 들어가게 되면 이러한 화면이 나옴
docker conatiners 를 누르면 내가 가진 container들이 나오고 모니터링 가능
# container가 받은 ip 주소
docker inspect node-env | grep -i ipaddress
# gateway 확인
docker inspect node-env | grep -i gateway
1) 연결할 폴더와 파일 만들어주기
mkdir test1 test2
echo 'volume test1' > test1/file1.txt
echo 'volume test2' > test2/file2.txt
2) bind mount 방식을 통한 container 생성
docker run -it --name=volume-test1 -v /home/ubuntu/LABs/test1:/mount1 -v /home/ubuntu/LABs/test2:/mount2 ubuntu:14.04 bash
3) ubuntu container안에서 mount1 폴더와 mount2 폴더가 잘 연동되었는지 확인해보기
4) ubuntu container안의 mount1 속 파일 생성해보기
echo "test2 in ubuntu container" > test2.txt
5) local 컴퓨터인 test1에도 잘 연동되어서 생성되었는지 확인해보기
1) volume을 생성해주기
docker volume create test-volume
2) docker volume 확인
docker volume ls
3) docker volume의 경로 확인하기
docker volume inspect test-volume
4) 컨테이너와 연결
docker run -it --name=volume-test3 \
-v test-volume:/mount1 \
ubuntu:14.04 bash