sudo apt update
sudo apt install ca-certificates
sudo apt install curl
sudo apt install software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "dev [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
curl을 이용한 docker 다운로드 방법은 아래 링크가 최신이므로 참고하여 자신의 서버에 맞는 docker version을 다운로드하기 바란다.
https://docs.docker.com/engine/install/ubuntu/
간단하게 hello-world 이미지를 생성하고 실행해보자.
sudo apt update
sudo systemctl status docker
docker pull hello-world # 특정한 서버 파일을 이미지 형태로 다운로드 받음
docker images # 도커 이미지 확인
docker run hello-world # 도커 컨테이너 띄우기
docker ps -a # 컨테이너 상태 확인
docker rm (container id) # 컨테이너 삭제 (이미지는 삭제되지 않음)
dockerfile을 생성하여 서버 이미지를 직접 제작해보기
vi Dockerfile
FROM ubuntu:18.04
MAINTAINER MinGyeom <mingyum119@naver.com>
RUN apt-get update
RUN apt-get install -y apache2 # Install Apache web server (only "yes")
EXPOSE 80
CMD ["apachectl", "-D", "FOREGROUND"]
docker build -t example .
=> 자동으로 아파치 서버가 설치된다.
docker images 로 ubuntu 18.04 image가 제작되었는지 확인할 수 있다.
docker run -p 80:80 example # 컨테이너 구동. 현재 호스트의 포트와 컨테이너의 포트를 넣어주어 연결한다.
이때 인바운드 규칙을 사용해서 HTTP 80번 포트로 접속할 수 있게끔 한다.
나의 경우 image의 8000번 포트로 설정해서 localhost:8000을 입력했을 때 접근할 수 있게끔 하였다.
Docker 이미지로 Apache및 PHP개발환경 구축하기
docker ps -a # 현재 구동중인 컨테이너 확인
docker rm -f `docker ps -a -q` # 현재 존재하는 모든 컨테이너를 제거
docker ps -a # 모든 컨테이너가 삭제되었음을 확인
cd /home/ubuntu/example
vi Dockerfile
FROM ubuntu:18.04
MAINTAINER MinGyeom <mingyum119@naver.com>
# Avoiding user interaction with tzdata
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y apache2 # Install Apache web server (only "yes")
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:ondrej/php # For installing PHP 5.6
RUN apt-get update
RUN apt-get install -y php5.6
EXPOSE 80
CMD ["apachectl", "-D", "FOREGROUND"]
docker build -t example . # 재빌드
docker images # 이미지 생성 확인
docker rmi -f (사용되지 않는 이미지 ID)
docker rm -f (컨테이너 ID) # 이미지가 삭제되지 않는 경우에는 그 컨테이너를 우선 삭제해주어야 한다.
docker run -p 80:8000 -v /home/choice/example/html:/var/www/html example
를 입력해서 PHP가 적용되어 html 파일에 올라가도록 한다.
이제 docker run -p 81:80 -v /home/choice/example/html:/var/www/html example 을 실행하면 81번 포트로 실행할 수 있게 된다.
Docker로 MYSQL 을 컨테이너로 띄우기
sudo apt install mysql-client-core-5.7
docker run -d -p 9876:3306 -e MYSQL_ROOT_PASSWORD=password mysql:5.6
호스트의 9876 포트와 mysql 의 3306 포트를 연결한다.
docker ps -a
docker exec -it (컨테이너 ID) /bin/bash
mysql -u root -p # 위에서 입력한 패스워드 입력
> CREATE DATABASE TEST;
> SHOW DATABASES;
> exit;
docker ps -a
docker inspect (컨테이너 ID) # 컨테이너의 세부 정보를 확인할 수 있다.
이 시점에서 IP 주소를 확인하여 접속한다.
mysql -u root -p --host 172.17.0.2 --port 3306 # 컨테이너에 포함되어있는 mysql에 접속
docker ps -a
mysql -u root -p --host 127.0.0.1 --port 9876 # 호스트 포트를 통해 접속해도 컨테이너 mysql에 접속할 수 있다.
일반적으로 컨테이너는 쉽게 삭제될 수 있기 때문에 컨테이너로 MYSQL을 사용하지 않고 AWS의 RDS를 주로 사용한다.
MYSQL 컨테이너와 PHP컨테이너를 연동해보기
vi Dockerfile
FROM ubuntu:18.04
MAINTAINER MinGyeom <mingyum119@naver.com>
# Avoiding user interaction with tzdata
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y apache2 # Install Apache web server (only "yes")
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:ondrej/php # For installing PHP 5.6
RUN apt-get update
RUN apt-get install -y php5.6
# Connect PHP & MYSQL
RUN apt-get install -y php5.6-mysql
EXPOSE 8001
CMD ["apachectl", "-D", "FOREGROUND"]
docker build -t example .
docker run -p 80:80 -v /home/choice/example/html:/var/www/html example #컨테이너 구동
cd /home/choice/example/html
<?php
$conn = mysqli_connect(
'localhost',
'root',
'password',
'TEST',
'9876'
);
if(mysqli_connect_errno()){
echo "Failed to connect to MYSQL : ".mysqli_connect_error();
}
$sql = "SELECT VERSION()";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
print_r($row["VERSION()"]));
?>
MYSQL의 버전을 PHP문서에서 확인하는 예제이다.
'Server > Docker' 카테고리의 다른 글
[Trouble Shooting] Ubuntu 환경에서 gradlew build 시 createScriptPluginFactory() 관련 오류 (0) | 2023.05.07 |
---|---|
[Trouble Shooting] Ubuntu 환경에서 Docker Image Build 시 Geographic area에서 Building이 멈추는 현상 (0) | 2023.05.07 |
[ICE-LIFE] Docker web server 설치 + 데스크탑 Ubuntu PC에 Jupyter Notebook 설치하기 (0) | 2022.11.02 |
Docker Container 시작하기, Docker Voulme 사용 (0) | 2022.07.14 |
Docker-compose에 Spring Boot, MariaDB 올리기 (0) | 2021.12.28 |