///
Search

15.Docker 연습문제

출처

1. 도커 컨테이너 실행 연습문제 (Jenkins)

1.
기존에 설치된 모든 컨테이너와 이미지 정지 및 삭제
sudo docker stop `sudo docker ps -a -q` sudo docker rm `sudo docker ps -a -q` sudo docker rmi `sudo docker images -q`
Bash
복사
2.
도커 기능을 사용해 Jenkins 검색
sudo docker search jenkins
Bash
복사
3.
Jenkins를 사용하여 설치
sudo docker pull jenkins/jenkins:lts sudo docker inspect jenkins ## sudo docker run -d -p 8080:8080 --name jk jenkins test docker run -d -p 8181:8080 -v /jenkins:/var/jenkins_home --name jm_jenkins -u root jenkins/jenkins:lts ##// 위 명령어 옵션설명 ##-d detached mode 흔히 말하는 백그라운드 모드 ##-p 호스트와 컨테이너의 포트를 연결 (포워딩) ##-v 호스트와 컨테이너의 디렉토리를 연결 (마운트) ##–name 컨테이너 이름 설정 ##-u 실행할 사용자 지정 ##맨 마지막 jenkins/jenkins:lts 는 실행할 이미지의 레포지토리 이름이며 만약 이미지가 없을 경우 이미지를 docker hub 에서 땡겨오므로 주의한다.
Bash
복사
4.
Jenkins 포트로 접속하여 웹 서비스 열기
firefox http://localhost:8181/ 브라우저에 캐시가 남아있는 경우에는 ctl + shift + del
Bash
복사
5.
Jenkins의 초기 패스워드 찾아서 로그인하기
sudo docker exec -it jk cat /var/jenkins_home/secrets/initialAdminPassword sudo docker logs jk
Bash
복사

2. 환경변수를 사용해 도커에 MySQL 설치하기

docker hub에서 mysql 검색

https://hub.docker.com/search?q=mysql&type=image

환경 변수 사용해 데이터 전달하기

$ docker run -d --name nx -e env_name=test1234 nginx /# printenv env_name
Ruby
복사

MySQL 서비스 구축하기

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD='!비밀번호@' -d mysql
Ruby
복사

3. 도커에 주피터 노트북 설치하기

볼륨 마운트 옵션 사용해 로컬 파일 공유하기

명령어 형식
docker run -v <호스트 경로>:<컨테이너 내 경로>:<권한> # /tmp:home/user:ro
Bash
복사
권한의 종류
ro: 읽기 전용
rw: 읽기 및 쓰기

nginx로 볼륨마운트하기

sudo docker run -d -p 80:80 --rm -v /var/www:/usr/share/nginx/html:ro nginx curl 127.0.0.1 echo 1234 > /var/www/index.html curl 127.0.0.1
Bash
복사

Jupyter LAB 환경 구축하기

현재 디렉토리를 사용하여 notebook 컨테이너 실행
mkdir ~/jupyternotebook chmod 777 ~/jupyternotebook cd ~/jupyternotebook sudo docker run --rm -p 8080:8888 -e JUPYTER_ENABLE_LAB=yes -v "$PWD":/home/jovyan/work:rw jupyter/datascience-notebook:9b06df75e445
Bash
복사
실행하면 나오는 링크를 통해 접속한다.
http://127.0.0.1:8080/token=???????
Bash
복사
주피터랩 서버로 접속해서 work으로 접속하고 새 노트북 생성하고 코드를 작성한다.
print("파이썬 코드에요")
Python
복사

4.직접 도커 이미지 빌드하기

도커 빌드할 프로그램 준비

python를 사용해 단순한 서비스를 시작 작성한다. 다음 파일을 작성하여 test_server.py로 저장한다.
# test_server.py import socket with socket.socket() as s: s.bind(("0.0.0.0", 12345)) s.listen() print("server is started") conn, addr = s.accept() # conn 클라이언트와 통신할 소켓 # addr 클라이언트의 정보가 들어있음 with conn: print("Connected by", addr) while True: data = conn.recv(1024) if not data: break conn.sendall(data)
Python
복사
python3 test_server.py --- nc 127.0.0.1 12345
Bash
복사

도커 파일 생성

별도의 디렉토리를 생성하고 dockfile과 위에서 생성한 python파일을 새 디렉토리에 배치한다.
mkdir my_first_project mv test_server.py ./my_first_project/ cd my_first_project/ gedit dockerfile
Bash
복사

dockerfile

FROM python:3.7 RUN mkdir /echo COPY test_server.py /echo CMD ["python", "/echo/test_server.py"]
Docker
복사
빌드 후 테스트
ls dockerfile test_server.py sudo docker build -t ehco_test . sudo docker images sudo docker run -t -p 12345:12345 --name et --rm echo_test
Bash
복사
nc 127.0.0.1 12345
Bash
복사

5. 도커 이미지 푸시

도커 이미지 태그 변경 후 푸시

먼저 회원가입을 한다.
회원가입한 정보를 토대로 다음 내용을 작성한다.
login을 하지 않으면 정상 동작하지 않는다.
gasbugs라는 문자열은 여러분이 사용하는 아이디로 바꿔서 실행해야만 한다.
sudo docker login sudo docker tag echo_test gasbugs/echo_test:v3.7 sudo docker images sudo docker push gasbugs/echo_test:v3.7
Bash
복사
https://hub.docker.com/ 에 접속하여 내 레파지토리에 도커가 잘 등록됐는지 확인해본다.
모든 이미지 삭제 후 다시 gasbugs/echo_test 실행하여 잘 다운로드돼 실행되는지 테스트한다.
sudo docker rmi `docker images -q` -f sudo docker run -t -p 12345:12345 --name et --rm gasbugs/echo_test:v3.7
Bash
복사

도커 이미지 히스토리 확인

다음 명령을 사용하면 도커 이미지가 어떤 히스토리를 가졌는지 확인할 수 있다. 제일 상단에 앞서 우리가 dockerfile을 빌드해서 추가한 정보가 있다.
docker history gasbugs/echo_test
Bash
복사

6. 프라이베이트 레지스트리 구현 및 사용

private registry 만들기
docker run -d --name docker-registry -p 5000:5000 registry
Bash
복사
브라우저를 켜서 127.0.0.1:5000/v2/ 서비스 접속 가능한지 확인
프라이베이트 레지스트리에 이미지 푸시하기
sudo docker tag echo_test 127.0.0.1:5000/echo_test sudo docker push 127.0.0.1:5000/echo_test
Bash
복사

7. 워드프레스 도커 이미지 만들기 프로젝트

도커에서 제공하는 워드프레스와 MySQL은 따로 떨어진 형태로 존재한다. 여기서는 하나의 컨테이너에서 워드프레스와 MySQL을 동작시킬 수 있도록 만들어본다. 일단 가장 먼저 할 일은 PHP와 DB가 공존하는 환경을 찾는 것이다. 다양한 솔루션들이 있는데 그중에 XAMPP는 도커로 이미 만들어져있어 유용하게 사용할 수 있다. xampp는 apache, MariaDB, php가 설치돼 있다. 여기에 워드프레스만 올리면 바로 컨테이너를 만들 수 있다.
먼저 도커 허브에서 다음 사이트를 찾아내자.
이 사이트의 컨테이너를 불러온 뒤 워드프레스 설치 과정을 진행하도록 한다. 컨테이너에서 SSH와 다앙한 포트를 지원하지만 우리는 80포트만 사용할 예정이다.
sudo docker run --name WP -p 80:80 -d tomsik68/xampp
Bash
복사
이제 가상환경은 준비됐으니 워드프레스를 설치하는 작업만 남았다. "워드프레스 다운로드"를 검색하자.
워드프레스 바로가기: https://ko.wordpress.org/download/
wget을 사용해 다운로드하고 압축을 푼다.
wget https://ko.wordpress.org/latest-ko_KR.tar.gz tar -xf latest-ko_KR.tar.gz
Bash
복사
컨테이너 내의 웹 파일 정리
sudo docker exec -it WP bash chown daemon. /opt/lampp/htdocs cd /opt/lampp/htdocs/ mkdir backup mv * ./backup/ exit
Bash
복사
워드프레스 파일을 컨테이너에 복사하고 웹 루트 디렉토리에 배치
sudo docker cp wordpress WP:/opt/lampp/htdocs sudo docker exec -it WP bash mv /opt/lampp/htdocs/wordpress/* /opt/lampp/htdocs/ exit sudo docker restart WP
Python
복사
127.0.0.1/phpmyadmin으로 접속해서 wordpress 데이터베이스 생성한다.
마지막으로 127.0.0.1로 접속하여 워드프레스 설치를 웹 브라우저 화면으로 진행하면 된다.