[Docker] - docker, kubernetes 기초설정, 예제
우선 docker hub에 사용할 ansible image를 올려준다
#tab1 ansible-server
docker login
docker run --privileged --name ansible-server -d -p 20022:22 -p 8081:8080 -e container=docker \
-v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host [username]/[Repositorie] /usr/sbin/init
위에 올린 image를 run 시켜준다
ex) hongildong/ansible
#ansible-server
docker exec -it ansible-server bash
cat /etc/*release
# clear, ifconfig 등 사용을 위해 설치
yum install -y ncurses net-tools nano
ansible에 접속해서 버전을 확인해 준다
* centos를 사용하므로 redhat계열 명령어 사용
#tab2 docker-server2
docker run --privileged --name docker-server2 -d -p 30022:22 -p 8082:8080 -e container=docker \
-v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host [username]/[repositorie] /usr/sbin/init
docker exec -it docker-server2 bash
#tab3 tomcat
docker run -d --name tomcat -p 8083:8080 tomcat:9.0
docker exec -it tomcat bash
#tab4 jenkins-server
docker run --privileged -d -p 8084:8080 -p 50000:50000 --restart=on-failure \
-v jenkins_home:/var/jenkins_home --name jenkins-server jenkins/jenkins
docker exec -it -u 0 jenkins-server bash
* -u 0 : jenkins 관리자접속
같은 image로 docker-server용으로 하나 더 열어주고 테스트용 tomcat도 하나 열어준다
ansible client용 jenkins도 접속해 준다
#tomcat, jenkins
apt update
apt install -y openssh-client openssh-server
passwd root / pw : 12345
nano /etc/ssh/sshd_config
#/etc/ssh/sshd_config
Port 22
ListenAddress 0.0.0.0
PermitRootLogin yes
PubkeyAuthentication yes
service reestart ssh
#ansible-server
mkdir /etc/ansible
nano /etc/ansible/hosts
#/etc/ansible/hosts
[jenkins-server]
172.17.0.2
[docker-server1-tomcat]
172.17.0.3
[ansible-server]
172.17.0.4
[docker-server2]
172.17.0.5
tomcat과 jenkins에 ssh를 설치 후 설정파일을 수정하고, ansible에 위 파일 및 설정을 추가해 준다
* hosts 파일의 내용은 해당 ip의 이름을 정해주는 내용 ip는 각 container들의 ip
#ansible-server
ssh-keygen
* 물음이 나오면 그냥 엔터
ssh-copy-id root@172.17.0.2 # pw 12345
ssh-copy-id root@172.17.0.3 # pw 12345
ssh-copy-id root@172.17.0.4 # pw P@ssw0rd
ssh-copy-id root@172.17.0.5 # pw P@ssw0rd
* 물음이 나오면 yes
ansible-server에서 key를 만들고 각 ssh에 비밀번호 없이 접속하도록 자동 로그인을 설정해 준다
#ansible-server
ansible all -m ping
ansible의 ping 모듈을 사용해 보니 모두 통신이 되는 걸 확인할 수 있다
172.17.0.2 | FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"module_stderr": "Shared connection to 172.17.0.2 closed.\r\n",
"module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n",
"msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error",
"rc": 127
}
* 위 error가 뜨면서 ping이 되지 않는다면 python3 설치를 확인해 보자
#ansible-server
ansible all -m shell -a "free -h"
ansible all -m shell -a "uptime"
쉘 모듈을 사용하면 명령어를 전송할 수 있다
#ansible-server
cat > test.txt
ansible -m shell -a "mkdir /test"
ansible -m copy -a "src=./test.txt dest=/test"
ansible -m shell -a "cat /test/test.txt"
위에 사용한 shell 모듈로 폴더를 만들고 copy 모듈을 사용해 파일을 복사해서 배포가 가능하다
#ansible-server
ansible docker-server1-tomcat -m apt -a "name=apache2 state=present"
#tomcat
service apache2 status
apt, yum 모듈을 사용해 해당 container에 package 설치도 가능하다
'Docker' 카테고리의 다른 글
docker image save/load (0) | 2023.10.06 |
---|---|
docker commit (0) | 2023.10.06 |
docker volume (0) | 2023.10.05 |
docker network (0) | 2023.10.05 |
docker compose를 활용한 wordpress 설치 (0) | 2023.10.05 |