# docker pull rockylinux/rockylinux
도커에 로키 리눅스 설치
# docker run -d --privileged --hostname docker-rocky8 --name rocky8 -p 2222:22 rockylinux/rockylinux /usr/sbin/init
호스트 시스템과 비슷한 권한 부여
-p 2222:22
외부(호스트)의 2222포트를 도커의 22포트에 매핑
/usr/sbin/init
init 시스템을 실행하여 시스템 초기화
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a852b2e71c46 rockylinux/rockylinux "/usr/sbin/init" 7 minutes ago Up 7 minutes 0.0.0.0:2222->22/tcp, :::2222->22/tcp rocky8 |
활성화 확인
[root@rocky8 ~]# docker exec -it rocky8 /bin/bash
[root@docker-rocky8 /]#
접속
dnf -y
upgrade : 더 공격적이고 광범위한 업데이트, 모든 패키지를 최신상태로.
update : 비교적 보수적인 업데이트. 기존 패키지의 업데이트 위주
도커에 설치된 로키리눅스는 경량화되어 있으므로 vim이나 netstat, ssh 등을 따로 설치해주어야 한다
# dnf -y install iproute net-tools openssh-server passwd
ip, netstat, ssh, passwd 등.
# grep root /etc/shadow
root:!locked::0:99999:7:::
도커에서 처음엔 root 계정에 락이 걸려있으므로 passwd로 비밀번호를 재설정해준다.
윈도우에서 도커 2222 port로 원격접속
# w
04:59:06 up 4:49, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 192.168.100.1 04:57 0.00s 0.00s 0.00s w
w에서 FROM 접속 ip를 확인 가능
도커 커밋하기
현재 실행중인 도커 컨테이너를 새로운 이미지로 생성한다 (백업)
해당 이미지를 기반으로 새로운 컨테이너를 생성할 수 있다
# docker commit rocky8 rockylinux8_1
sha256:a8f89312efc7f69a2c3d02b9fefbf337cfd815e89aa0f2ba34ea0f5f15c89921
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rockylinux8_1 latest a8f89312efc7 8 seconds ago 510MB
rockylinux/rockylinux latest 523ffac7fb2e 2 years ago 196MB
도커 이미지로 생성된 것을 확인할 수 있다 태그는 지정하지 않으면 latest로 됨
# docker save -o rockylinux8_1.tar rockylinux8_1
# ls
a.txt rockylinux8_1.tar
docker save로 rockylinux8_1.tar로 빼냈음
gzip -N rockylinux8_1.tar 등으로 압축해서 백업해두면 된다
특정 이미지를 백업하거나 다른 시스템으로 이전할때 사용하면 유용
(인터넷 연결이 제한된 환경 등)
# scp rockylinux8_1.tar.gz 192.168.100.31:
The authenticity of host '192.168.100.31 (192.168.100.31)' can't be established.
ECDSA key fingerprint is SHA256:TBszhxzk5aPhIWt8vwv9K+pDfSGP7iBXzKZNa0IHarg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.100.31' (ECDSA) to the list of known hosts.
root@192.168.100.31's password:
rockylinux8_1.tar.gz 100% 184MB 199.8MB/s 00:00
=> 원격복사를 통해 다른 vm웨어로 백업한 도커 파일을 전송함
(사용자와 포트가 서로 다를경우는 명시해야한다)
현재 .tar.gz 파일로 되어 있는데,
zcat rockylinux8_1.tar.gz | docker load
이렇게 하면 압축 풀고 바로 docker로 load시킬 수 있다
.tar 파일인 경우 docker -load -i zcat rockylinux8_1.tar 명령어로 load 한다
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rockylinux8_1 latest a8f89312efc7 About an hour ago 510MB
로드된 도커 이미지
docker run 하여 띄운다음 ssh로 접속하면 접속된다
(이미 한 번 root 비밀번호 설정해놓은 것을 이미지로 로드했으므로)
APM 패키지 설치
dnf -y install mariadb mariadb-server php-{cli,fpm,zip,gd,mbstring,curl,xml,pear,bcmath,json,pdo} httpd php php-mysqlnd git systemctl enable --now php-fpm systemctl enable --now httpd sed -i '21icollation-server=utf8_general_ci' /etc/my.cnf.d/mariadb-server.cnf sed -i '22icharacter-set-server=utf8' /etc/my.cnf.d/mariadb-server.cnf systemctl enable --now mariadb mysqladmin -p'' password 'P@ssw0rd' cat << EOF > ~/.my.cnf [client] # host = localhost # user = root password = P@ssw0rd EOF cd /var/www/html git clone https://github.com/gnuboard/gnuboard5.git mkdir -m 777 gnuboard5/data chcon -t httpd_sys_rw_content_t gnuboard5/data/ mysql -e "CREATE DATABASE gnuboard" mysql -e "CREATE USER gnuboard@localhost IDENTIFIED BY 'gnuboard';" mysql -e "GRANT ALL PRIVILEGES ON gnuboard.* TO gnuboard@localhost; " 이후 http://로컬호스트:포트/gnuboard5/ 에서 그누보드 설치진행 |
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e941a633d434 rocky8_apm "/usr/sbin/init" 48 seconds ago Up 47 seconds 0.0.0.0:2222->22/tcp, :::2222->22/tcp, 0.0.0.0:8000->80/tcp, :::8000->80/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp rocky8
=> 그누보드를 위해 8000번 포트와 3307포트도 매핑해주었음
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
dnf module reset php -y
yum install yum-utils -y
yum upgrade
=> 최신버전으로 업데이트하는 법... 대충 upgrade 했다
도커 허브에 업데이트하기
먼저 회원가입한다
# docker login
도커 허브 또는 다른 도커 레지스트리 서버에 인증을 위해 사용하는 명령어
업로드나 다운로드 가능
로그인시 Username에는 이메일주소 또는 Docker ID를 넣는다
docker push boritea/test_docker
기본 태그는 latest이다
latest가 붙은 이미지들이 전부 업로드된다
근데 뭐가 어떤식으로 올라간건지 모르겠어서 좀 더 알아봐야할 것 같다 ...
WebGot
웹 어플리케이션 보안 교육 목적으로 개발된 오픈소스 프로젝트
의도적으로 보안 취약점을 포함한 웹 어플리케이션을 제공행 해킹기법을 학습하고 실습할 수 있음
# docker run -it --name webgoat --hostname webgoat -p 8080:8080 -p 9090:9090 ubuntu
# docker exec -it webgoat /bin/bash
# apt update
# apt -y install git vim
# apt install -y openjdk-17-jdk
# cd
# git clone -b v2023.3 https://github.com/WebGoat/WebGoat.git
-b는 브랜치를 의미함
호스트에서 접근할 수 있도록 설정파일 수정
# cd WebGoat/
# vi src/main/resources/application-webgoat.properties
webgoat.host=0.0.0.0
# vi src/main/resources/application-webwolf.properties
webwolf.host=0.0.0.0
접근가능하게 ip 수정
WebGoat/ 경로에서
# ./mvnw clean install 명령어로 Maven 빌드 명령을 실행
BUILD SUCCESS 나오면 성공
완료되면
# ./mvnw spring-boot:run
2024-08-18 17:46:01.752 INFO 454 --- [ main] org.owasp.webgoat.server.StartupMessage : Please browse to http://0.0.0.0:8080/WebGoat to get started..
대충 이런 내용이 나오면
http://지정된 주소:8080/WebGoat/ 로 접속한다
가입하면 나오는 페이지