7.8

w0nyyy·2022년 7월 8일
0

매직변수 공부해보자
앤서블 아파치 설치, 삭제 알고 있자
테라폼 - gcp -> vm 만드는 과정에서 access_config - 퍼블릭 ip를 얻기 위한 장치였다.
앤서블 - 워드프레스 - > 구성관리도구 활용했다 (최종프로젝트)

도커 docker

도커 이미지

  • docker 컨테이너를 구성하는 파일 시스템과 실행할 애플리케이션 설정을 하나로 합친 것, 컨테이너를 생성하는 템플릿(금형) 역할을 함.

도커 컨테이너

  • docker 이미지를 기반으로 생성되며, 파일 시스템과 애플리케이션이 구체화되어 실행되는 상태입니다.

도커 가상머신 스펙

--- 센토스 도커 설치(DOCKER CE; Community Edition)

# curl -fsSL https://get.docker.com/ | sh
# yum -y install bash-completion wget unzip net-tools mysql telnet rdate
# rdate -s time.bora.net && clock -w
# curl https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker.sh
# systemctl enable --now docker

--> 도커 엔진 or 도커 호스트라고 부른다.

도커 허브에서 이미지 다운로드

# docker image ls // 도커 이미지 확인
# docker image pull nginx // 도커 허브에 있는 nginx 이미지 다운

# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    55f4b40fe486   2 weeks ago   142MB

# docker image inspect nginx

[root@localhost ~]# docker image inspect --format="{{ .Os}}" nginx
linux
[root@localhost ~]# docker image inspect --format="{{ .DockerVersion}}" nginx
20.10.12
[root@localhost ~]# docker image inspect --format="{{ .Metadata.LastTagTime}}" nginx
0001-01-01 00:00:00 +0000 UTC
[root@localhost ~]# docker container create -p 80:80
// 포트포워드 왼쪽 호스트 포트, 오른쪽이 컨테이너 포트

[root@localhost ~]# docker container create -p 80:80 --name webserver nginx
9ab6cb4ecf4cf7c1e580e5071acec5c19fd31fe265834410bbac7aa5220d0749
// 컨테이너 생성, 아이디가 나옴

[root@localhost ~]# docker container start webserver
webserver // 도커 실행 명령어 다시 ls하면 나온다 

[root@localhost ~]# docker container run -p 80:80 --name webserver nginx // run: create 와 start를 한번에, foreground 실행

[root@localhost ~]# docker container run -d -p 80:80 --name webserver nginx // backgroud 실행

[root@localhost ~]# docker container run -it --name test_bash centos /bin/bash //test_bash 안으로 들어와있음


[root@localhost ~]# docker container run -d --name test_ping centos /bin/ping localhost // 백그라운드에서 핑치고 있음

[root@localhost ~]# docker container logs -t test_ping
// logs로 잘 되고 있는 지 확인 가능

[root@localhost ~]# docker container run -d -p 8080:80 --name test_port nginx // 컨테이너 생성
[root@localhost ~]# docker container stats test_port // 

[root@localhost ~]# docker container run -d -p 8181:80 --cpus 1 --memory=256m --name test_resource nginx // cpu 개수와 메모리 용량 지정 후 컨테이너 생성

[root@localhost ~]# docker container stats test_resource
CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT   MEM %     NET I/O     BLOCK I/O     PIDS
a443666ca1e1   test_resource   0.00%     1.984MiB / 256MiB   0.78%     656B / 0B   0B / 6.66kB   3


// 컨테이너 디렉토리 공유, 바인드 마운트
[root@localhost ~]# docker container run -d -p 8282:80 --cpus=1 --memory=256m -v /tmp:/usr/share/nginx/html --name volume-container nginx
[root@localhost ~]# cd /tmp
[root@localhost tmp]# ls
ks-script-b_lheI  yum.log
[root@localhost tmp]# echo "Hello world" > index.html
-> 8282로 접속하면 hello world가 뜬다.

// 멈춰있는 컨테이너 리스트
[root@localhost tmp]# docker container ls -a -f exited=0

// 네임과 스테이터스 만 보여줌~
[root@localhost tmp]# docker container ls -a --format "table {{.Names}}\t{{.Status}}"
NAMES              STATUS
volume-container   Up 24 minutes
test_resource      Up 31 minutes
test_port          Up 41 minutes
test_ping          Up 44 minutes
test_bash          Exited (0) 53 minutes ago
test_cal           Exited (0) 2 hours ago
webserver          Up 3 hours

// -f 필터 옵션으로 컨테이너 찾기
[root@localhost tmp]# docker container ls -a -f name=test_bash
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
ad42cea60d41   centos    "/bin/bash"   58 minutes ago   Exited (0) 56 minutes ago             test_bash


// 동작중인 컨테이너 연결
[root@localhost tmp]# docker container start test_bash
[root@localhost tmp]# docker container attach test_bash
ctrl + p, ctrl + q
[root@localhost tmp]# docker container exec -it test_bash /bin/echo "Hello world" // 컨테이너에서 실행해서 바깥으로 출력해줌 헬로 월드를 .

// 복사 명령어 webserver 컨테이너에서 - 호스트의 루트 폴더로
[root@localhost tmp]# docker container cp webserver:/usr/share/nginx/html/index.html /root/index.html

// 호스트 루트폴더에서 webserver 컨테이너로
[root@localhost ~]# docker container cp index.html webserver:/usr/share/nginx/html/index.html

//폴더 통으로 옮기기
[root@localhost html]# tar -xvf aws.tar -C .
-> 호스트에서 html 폴더에 aws.tar 아카이브 풀기
[root@localhost ~]# docker container cp ./html webserver:/usr/share/nginx

// 컨테이너에서 이미지 만들기
[root@localhost ~]# docker container commit -a "wony<test@example.com>" -m "Nice to meet you" webserver test_commit:v1.0
sha256:bd85b1655fb2d6ac4dbae0e3f90c82f15e5d8b4c3689f7d78213fda33951acfd
[root@localhost ~]# docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
test_commit   v1.0      bd85b1655fb2   14 seconds ago   143MB

-d : detach 백그라운드 실행을 위한 옵션
bind mount 중요!!

--- 우분투 도커 설치

$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
$ sudo apt update
$ sudo apt-cache policy docker-ce
$ sudo apt install docker-ce
// 아카이브해서 내보내기
[root@localhost ~]# docker image save -o test_commit.tar test_commit:v1.0

// 커밋 이미지파일 생김 -> 우분투에 넘길 것
[root@localhost ~]# ls
anaconda-ks.cfg  html  index.html  test_commit.tar

// 파일 전송 !!! 기억하기 !!!
[root@localhost ~]# scp test_commit.tar root@192.168.0.219:/root

// 파일 도착
root@ubuntu-node01:~# ls
nfs  test_commit.tar

// 아카이브를 추출하면서 이미지로 만들어주는게 load
root@ubuntu-node01:~# docker image load -i test_commit.tar

// 우분투에서 컨테이너 런~
root@ubuntu-node01:~# docker container run -d -p 80:80 --name webserver test_commit:v1.0
-> 우분투 ip로 접속해보면 웹사이트 뜸

중요 개념

겁나 중요

0개의 댓글