728x90
[jquery core]
jQuery( selector, [ context ] )
 - $("input:radio", document.forms[0]);
 - $("div", xml.responseXML);
 - $('span', this) == $(this).find('span')
 
jQuery( element )
 - $("div")
 
jQuery( elementArray )
 - $("div > p")
 
jQuery( html, [ ownerDocument ] )
 - $("<div/>", {
                 "class": "test",
                 text: "Click me!",
                 click: function(){
                     $(this).toggleClass("test");
                 }
}).appendTo("body");
 
 
jQuery( callback )
 - jQuery(function() {} ); == jQuery(function($) { });
 
jQuery.noConflict(); :많은 자바스크립트 라이브러리가 $ 변수명을 사용한다. 
                     jQeury에서 $가 alias로 사용되기 때문에 jQuery.noConflict(); 구문은 jQuery에서 $를 사용하지 않겠다는 의미이다.
                     noConflict()를 호출하고서 $를 사용하는 방법
        jQuery.noConflict();
                        (function($) { 
                            $(function() {
                                // more code using $ as alias to jQuery
                             });
                         })(jQuery);
 
 
[Basic]
jQuery('*') : 모든 Element를 선택, 즉 전체를 선택
 (예) jquery("*").css("border", "1px");
 
jQuery('.class') : css 클래스명이 같은 Element를 선택
 (예) <div class="item"/> -> jquery(".item").css("height", "100px");
 (예) jquery(".item .color").css("height", "100px"); //css 클래스를 복수개로 설정하면 해당하는 element가 선택됨
 
jQuery('element') : element명과 같은 Element를 선택
 (예) ("div") 처럼 태그명을 직접 넣을 수 있다.
 
jQuery('#id') : html 태그의 id가 같은 Element를 선택 (id는 한개만 존재하므로 한개만 선택됨)
 (예) <div id="myDiv">id="myDiv"</div> -> jquery("#myDiv").css("border","3px solid red");<
 
jQuery('selector1, selector2, selectorN') : 다중 셀렉터 (예) $("div,span,p.myClass")
 
[Basic Filter]
jQuery(':animated') : 애니메이션되고있는 Element를 선택
 
jQuery(':eq(index)') : index번째의 Element를 선택, Zero-based index
 (예) jQuery('div:eq(2)') 라고 할 경우 3번째  div요소를 의미한다.
 
jQuery(':gt(index)') : index 번째 Element보다 큰 모든 Element를 선택, Zero-based index
 (예) jQuery('div:gt(2)') 라고 할 경우 2보다 큰 div요소이므로 3번째부터 선택된 div요소 모두를 의미한다.
 
jQuery(':lt(index)') : index 보다 작은 Element를 선택, Zero-based index
 (예) jQuery('div:lt(2)') 라고 할 경우 2보다 작 div요소이므로 1,2번째 div요소를 의미한다.
 
jQuery(':even') : index 짝수번째 Element를 선택, (index의0, 2, 4...), zero-indexed
 
jQuery(':odd') : index 홀수번째 Element를 선택, (index의 1, 3, 5...), zero-indexed  
 (예) $("tr:odd").css("background-color", "#bbbbff");
 
jQuery(':not(selector)') : 해당 selector가 아닌 Element를 선택
 (예) $("input:not(:checked)").css("background-color", "yellow");
 
jQuery(':header') : h1, h2, h3과 같은 Element를 선택
 
jQuery(':first') : 첫번째 Element를 선택
 (예) jQuery('div:first') == $("div:eq(0)") == $("div:lt(1)")
 
jQuery(':last') : 선택한 Element중 마지막 Element를 선택
 
[Child Filter]
jQuery(':first-child') :  부모 Element의 첫번째 자식 Element를 선택
 (예) jQuery(':first-child') == jQuery(':nth-child(1)')
 (예) jQeury("tr td:first-child") => tr이 복수개일 경우 그중 자식요소 중에 td의 첫번째 요소들이 선택된다.
 
jQuery(':last-child') : 부모 Element의 자식 Element중 마지막 Element를 선택
 (예) jQeury("tr td:last-child") => tr이 복수개일 경우 그중 자식요소 중에 td의 마지막 요소들이 선택된다.
 
jQuery(':nth-child(index/even/odd/equation)') : 부모 Element의 자식 index번째의 Element, index는 1부터 시작 
 (예) $("ul li:nth-child(2)") // ul 요소의 2번째 li요소들을 선택
 (예) $("ul li:even") // ul 요소의 짝수번째 li요소들을 선택
 (예) $("ul li:odd") // ul 요소의 홀수번째 li요소들을 선택
 (예) $("ul li::nth-child(3n)) // 3*0, 3*1, 3*2, ... 번째 요소들을 선택
 
jQuery(':only-child') : 부모Element의 자식Element가 딱 한개만 존재하는 Element
 (예) 
  <div>
    <button>Sibling!</button>
    <button>Sibling!</button>
  </div>
 
  <div>
    <button>Sibling!</button>
  </div>
 
  // 위의 첫번째 div는 button 자식요소가 2개이므로 선택에서 제외되고 아래 button이 한개인 button만 선택된다.
  $("div button:only-child").text("Alone").css("border", "2px blue solid"); 
 
[Filter]
jQuery(':contains(text)') : text를 포함한 Element를 선택
 (예) $("div:contains('John')") -> <div>~~~~ John~~~</div> 처럼 자식 Content에 John을 포함한 요소들이 선택된다.
 
jQuery(':empty') : <td></td>, <span/> 처럼 content가 없는 Element를 선택, 반대는 :parent
 (예) $("td:empty").text("Was empty!")
 
jQuery(':has(selector)') : selector에 해당하는 요소를 자식요소로 포함하는 Element를 선택
 (예) $("div:has(p)") -> <div><p>Hello in a paragraph</p></div>
 
jQuery(':parent') : 텍스트를 포함하고 있고 선택한 부모 Element 
 (예) <tr><td>abcd</td><td></td></tr> // $("td:parent").fadeTo(1500, 0.3); // 이럴 경우 abcd만 선택한다.
 
[Attribute]
jQuery('[attribute|=value]') : value와 같거나 value + 하이픈(-) 으로 시작하는 Element
jQuery('[attribute*=value]') : % + value + %
jQuery('[attribute$=value]') : % + value
jQuery('[attribute^=value]') : value + %
jQuery('[attribute~=value]') : value와 단어가 같은 Element
jQuery('[attribute=value]')  : value와 같은 Element
jQuery('[attribute!=value]') : value와 다른 Element
jQuery('[attribute]') : 해당 attribute가 존재하는 Element (예) $("div[id]")
jQuery('[attributeFilter1][attributeFilter2][attributeFilterN]') : 다중 속성 셀렉터 (예) $("input[id][name$='man']")
 
[Form]
jQuery(':button') : <input type="button"/> 또는 <button />
jQuery(':checkbox') : <input type="checkbox"/>, jQuery(':checkbox') == $('[type=checkbox]'), $(':checkbox') == $('*:checkbox'), 보통 $('input:checkbox') 형태
jQuery(':checked') : 체크박스에 체크된 Element
jQuery(':selected') : 콤보박스에 선택된 Element
jQuery(':disabled') : <input name="email" disabled="disabled" />
jQuery(':enabled') : 활성화되어있는 Element (jQuery(':disabled') 과 반대 )
jQuery(':file') : <input type="file"/> $(':file') == $('*:file'), 보통  $('input:file') 형태
jQuery(':image') : <input type="image" />
jQuery(':input') : <input />, <textarea />, <select />, <button />
jQuery(':password') : <input type="password" /> , $(':password') == $('[type=password]'), $(':password') == $('*:password'), 보통 $('input:password') 형태
jQuery(':radio') : <input type="radio" />, $(':radio') == $('[type=radio]'), $(':radio') == $('*:radio'), 보통 $('input:radio') 형태 (예) $('input[name=gender]:radio')
jQuery(':reset') : <input type="reset" /> (예) $("input:reset")
jQuery(':selected') : <option selected="selected">....</option> (예) $("select option:selected")
jQuery(':submit') : <input type="submit" />, <button type="submit">Button type="submit"</button> 또는 <button/>,  단 <button/>은 브라우저마다 type="submit"은 기본이 아닐 수 있다.
jQuery(':text') : <input type="text" />, $(':text') == $('[type=text]'), $(':text') == $('*:text'), 보통 $('input:text') 형태
 
 
[Hierarchy]
jQuery('parent > child') : parent(부모)의 child(자식) Element를 선택
 (예) $("div > span") -> <div><span>test</span></div>
 
jQuery('ancestor descendant') : ancestor 하위의 모든 descendant에 해당하는 Element를 선택
 (예) $("form input") // form 태그 하위의 input 태그 모두를 선택
 
jQuery('prev + next') : prev Element 다음에 나오는 형제 Element를 선택
 (예) $("label + input").css("color", "blue").val("Labeled!")
 
jQuery('prev ~ siblings') : prev Element 다음에 나오는 모든 형제 Element를 선택
 (예) $("#prev ~ div").css("border", "3px groove blue");
 
[Visibility Filter]
jQuery(':hidden')
  (1) display:none; 인 것 // visibility:hidden or opacity: 0 은 보이는 것으로 간주
  (2) type="hidden" 인 것 
  (3) width:0; height:0; 인 것 
  (4) 부모 Element가 hidden 인 것 
 
jQuery(':visible') : jQuery(':hidden')의 정반대 
  (1) display:none; 가 아닌 것 // visibility:hidden or opacity: 0 은 보이는 것으로 간주
  (2) type="hidden" 가 아닌 것 
  (3) width:0; height:0; 가 아닌 것 
  (4) 부모 Element가 hidden이 아닌 것 

 

728x90
728x90

어느 마을에 항상 긍정적인 생각으로 대화하고
늘 이웃에게 베푸는 사람이 있었습니다.

사람들은 특히 그의 행동보다도
'그와 대화하면 내가 가야 할 길이 보인다'라며
마을 사람들에게 호평받기도 했습니다.

어느 날 한 이웃이 그에게 인생에서
성공의 비결이 무엇인지 물었는데 그는 이렇게
답했습니다.

"다른 사람들은 해가 질 때 하루를 끝내지만
저는 해가 질 때 하루를 시작합니다."

이 대답을 들은 이웃은 이해하지 못했고
무슨 뜻인지 되묻자 그는 대답했습니다.

"하루를 밝게 시작해서 어둡게 끝내는 것보다
어둡게 시작해서 밝게 끝내는 정신으로
살았다는 뜻입니다."

728x90
728x90

== 백업 ==

DB전체 덤프
mysqldump -u[아이디] -p[비밀번호] -all-databases > [저장될 파일명]

DB만 덤프
mysqldump -u[아이디] -p[비밀번호] [디비명] > [저장될 파일명]

테이블 구조만
mysqldump -u[아이디] -p[비밀번호] --no-data [디비명] [테이블명] > [저장될 파일명]

테이블구조를 제외한 데이터만 덤프
mysqldump -u[아이디] -p[비밀번호] --no-create [디비명] [테이블명] > [저장될 파일명]

==복구 ==

덤프파일을 이용한 복구
mysql -u[아이디] -p[암호][디비명] < [파일명]

패스워드 동시 입력시 복구 안되면
mysql -u[아이디] -p[공백][디비명] < [파일명]

출처: https://damduc.tistory.com/96 [My Trace:티스토리]

728x90

'프로그래밍 > 웹서버' 카테고리의 다른 글

jenkins 셋팅  (0) 2022.07.06
728x90
  1. jenkins 설치
    // jenkins repository 설치(https://pkg.jenkins.io/redhat-stable/jenkins.io.key)
  2. //jenkins 설치
  3. rpm --import [https://pkg.jenkins.io/redhat-stable/jenkins.io.key]
  4. yum install jenkins
  5. wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
  6. jenkins 설정
    jenkins는 기본 포트로 톰캣과 같은 8080으로 쓰기 때문에 8082로 포트 변경
    vi /etc/sysconfig/jenkins
    // 하단 내용 입력
    #JENKINS_PORT="8080"
    JENKINS_PORT="9090"
  7. etc/sysconfig/jenkins 에는 JENKINS_HOME 이나 JENKINS_USER와 같은 jenkins 관련 설정을 할 수 있다.
    JENKINS_HOME="/var/lib/jenkins"
    JENKINS_USER="root"
    vi etc/passwd 를 통해 jenkins가 생성된 것 확인 할 수 있다.
    jenkins:x:997:994:Jenkins Automation Server:/var/lib/jenkins:/bin/false
    jenkins 사용자는 쉘 권한이 없기 때문에 terminal이나 command로 로그인을 할 수 없습니다.
    오로지 jenkins 웹을 통한 작업만 가능하다.
  8. jenkins 시작
    실행
  9. systemctl start jenkins

 

http://호스트주소:9090으로 접속  
  1. Maven plugin 설치, Subversion plugin 설치
  2. http://호스트주소:9090으로 접속
  3. CENTOS 기준
    1) jenkins 계정을 root 그룹으로 추가
  4. 쉘 추가
    cd /usr/local/W03/bin/ sudo ./shutdown.sh sudo rm -rf /home/whitestar/www/app/W03/webapps/ROOT sudo rm -rf /home/whitestar/www/templatesudo mv /var/lib/jenkins/workspace/Admin1/src/main/resources/properties/real/logback.xml /var/lib/jenkins/workspace/Admin1/target/ROOT/WEB-INF/classes/logback.xml
    sudo mv /var/lib/jenkins/workspace/Admin1/src/main/resources/properties/real/system-config.properties /var/lib/jenkins/workspace/Admin1/target/ROOT/WEB-INF/classes/properties/system-config.propertiesWAS_HOME="/usr/local/W03"
  5. sudo cp -R /var/lib/jenkins/workspace/Admin1/target/ROOT /home/whitestar/www/app/W03/webapps/ROOT
    sudo cp -R /var/lib/jenkins/workspace/Admin1/src/main/webroot/* /home/whitestar/www/web/W03/
    sudo cp -R /var/lib/jenkins/workspace/Admin1/target/ROOT/WEB-INF/template /home/whitestar/www/
  6. sudo rm /var/lib/jenkins/workspace/Admin1/target/ROOT/WEB-INF/classes/logback.xml
    sudo rm /var/lib/jenkins/workspace/Admin1/target/ROOT/WEB-INF/classes/properties/system-config.properties
  7. WAS 재구동if [ -z "${TomcatPID}" ]
    then echo "Empty"
    else
    echo "${TomcatPID}"
    kill ps -ef | grep "W03 " | grep -v grep | awk '{ print $2 }'
    fi
    sleep 1
  8. ${WAS_HOME}/bin/shutdown.sh
    ${WAS_HOME}/bin/startup.sh
  9. TomcatPID=ps -ef | grep "W03 " | grep -v grep | awk '{ print $2 }'
728x90

'프로그래밍 > 웹서버' 카테고리의 다른 글

mysql 백업 및 복원 방법  (0) 2022.07.13
728x90

# 폴더는 그대로 유지한 상태에서 파일만 삭제하도록 하는 도스 명령어입니다.

C:\>del /s /f /q D:\TEST

또는 삭제하려는 폴더가 위치한 경로로 들어가서

C:\>del /s /f /q *.*

# 지정한 폴더를 포함한 모든 하위 디렉토리 및 파일을 삭제하도록 하는 도스 명령어입니다.

C:\>rmdir /s /q D:\TEST

# 옵션설명

/S            모든 하위 디렉터리에서 삭제.

/F            읽기 전용 파일을 삭제.

/Q           삭제할 것인지 묻는 메시지를 표시하지 않음.

 

728x90
728x90

1. 도커 정의
도커는 리눅스 상에서 컨테이너 방식으로 프로세스를 격리해서 실행하고 관리할 수 있도록 도와주며, 
계층화된 파일 시스템에 기반해 효율적으로 이미지(프로세스 실행 환경)을 구축할 수 있도록 해줍니다. 
도커를 사용하면 이 이미지를 기반으로 컨테이너를 실행할 수 있으며, 다시 특정 컨테이너의 상태를 변경해 이미지로 만들 수 있습니다. 
이렇게 만들어진 이미지는 파일로 보관하거나 원격 저장소를 사용해 쉽게 공유할 수 있으며, 
도커만 설치되어 있다면 필요할 때 언제 어디서나 컨테이너로 실행하는 것이 가능합니다.

# 컨테이너는 프로세스의 실행 환경을 격리한다.
  가상머신의 역할을 넘어서 어느 플랫폼에서나 특정한 상태를 그대로 재현가능한 애플리케이션 컨테이너를 관리하는 도구
  운영체제 상에서 지원하는 방법을 통해서 하나의 프로세스(컨테이너)를 실행하기 위한 별도의 환경을 구축하는 일을 지원함.
<프로세스를 격리시켜 실행해주는 도구>

2. 도커 실행 예제
$ docker run -it --rm centos:latest bash
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
8d30e94188e7: Pull complete
Digest: sha256:2ae0d2c881c7123870114fb9cc7afabd1e31f9888dac8286884f6cf59373ed9b
Status: Downloaded newer image for centos:latest

[root@881189373f8b /]# 
[root@881189373f8b /]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)

3. 도커 설치하기
개발환경에서는 도커 포 맥과 도커 포 윈도우를 사용한다.

리눅스 환경에서는 각 배포판에서 제공하는 패키지 관리자를 사용해서 도커를 설치할 수 있다.

* curl이 없다면 sudo apt-get curl로 설치한다.
$ curl -s https://get.docker.com | sudo sh

패키지 관리자에서 도커에서 관리하는 저장소를 추가하고 docker-engine 패키지를 설치한다.

https://get.docker.com을 직접 열어서 스크립트 파일 내용을 확인한다.

*버전 확인

$docker -v

$ cat /etc/apt/sources.list.d/docker.list
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable

$ dpkg --get-selections | grep docker
docker-ce                                       install
docker-ce-cli                                   install

* docker 엔진 및 클라이언트
docker-ce , docker-ce-cli

* 현재 실행중인 모든 컨테이너 목록을 출력한다.
$ docker ps 
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied

* 관리자 권한으로 실행
$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

* docker 그룹에 사용자를 추가한다.
$ sudo usermod -aG docker $USER
$ sudo su - $USER

* sudo 명령 없이도 도커 명령어를 사로 사용할 수 있다.
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

4. 도커 이미지 기초 (docker image)
이미지는 가상머신에서 사용하는 이미지와 비슷한 역할을 한다.

[중요] 이미지는 어떤 어플리케이션을 실행하기 위한 환경이다.
이 환경은 파일들의 집합이다.

도커에서는 애플리케이션을 실행하기 위한 파일들을 모아놓고, 애플리케이션과 함께 이미지로 만들 수 있다.
이 이미지를 기반으로 애플리케이션을 배포한다.

1) 도커 레지스트리에서 centos 이미지를 PULL 받는다.
2) 이 이미지를 통해 컨테이너를 실행한다.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

도커에서는 docker pull <IMAGE_NAME> 명령어로 이미지를 풀 받을 수 있다.

$ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
8a29a15cefae: Pull complete
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

이미지 이름은 :을 구분자로 이미지 이름과 태그로 구분한다.
centos는 centos:latest와 같다.
도커는 먼저 이 이미지를 로컬에서 찾아보고 찾을 수 없으면 토커 공식 저장소에서 찾는다.
저장소에 해당하는 이미지가 존재하면 이미지 pull을 받아온다.
Downloaded newer image for centos:latest centos:latest  이미지가 다운로드 된 것을 알 수 있다.
(별다른 설정 없이 공식 저장소를 통해 이미지를 받아올 수 있다)
예를 들면 리눅스에서 apt, yum이고,
프로그래밍 언어에서는 gem, cpan, pip 같은 패키지다.

* 도커에서는 이미지를 다운 받을 때 install 혹은 download 같은 명령 대신 pull을 사용함.
  이미지를 업로드 할때는  push 명령어를 사용하고,
  새로운 이미지를 생성할 때는 commit을 쓰며,
  이미지의 차이를 확인 할 때는 diff 명령을 사용한다.

* 다운로드 받아온 이미지를 확인한다.
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              470671670cac        8 weeks ago         237MB

* 윈도 10에서 받아온 이미지를 확인한다.
C:\Users\sangrok>docker images
REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
centos                        latest    5d0da3dc9764   8 months ago    231MB
ghdudwkd4/docker101tutorial   latest    8e5d9e04fe5f   9 months ago    28.2MB
docker101tutorial             latest    8e5d9e04fe5f   9 months ago    28.2MB
alpine/git                    latest    b8f176fa3f0d   12 months ago   25.1MB
jaspeen/oracle-xe-11g         latest    52fbd1fe2d7a   6 years ago     792MB

가. 도커에서는 하나의 이미지를 저장소(repository)라 함.
나. tag는 임의로 붙여진 추가적인 이름이다.(이미지의 version을 확인하기 위해 사용함)
    도커 명령어에서 이미지를 지정할 때 태그를 생략하면 latest가 사용된다.
다. image id는 이미지를 가리키는 고유한 해시 값
라. created는 이미지가 생성된 시간
마. size는 이미지의 용량을 나타냄.

5. 도커 허브(Docker Hub) - 공식 이미지 레지스트리
도커에서 제공하는 이미지 호스팅 서비스 도커 허브D

* docker info를 통해서 클라이언트에 지정된 기본 레지스트리의 주소를 확인할 수 있다.
$ docker info | grep Registry
 Registry: https://index.docker.io/v1

 index.docker.io는 도커 허브의 과거 도메인, 이미지와 관련된 정보는 도커 허브에서 확인함

* 도커사에서 기본 제공하는 이미지
https://index.docker.io/search?q=&type=image

* 도커사에서 공식적으로 제공하는 이미지와 사용자들이 직접 만들어서 올린 이미지로 나눠진다.
우분투, 센트OS, mySql, Redis, wordpress와 같은 공식 이미지를 제공한다.

6. 컨테이너(Container) 이해하기 - 격리된 환경에서 실행되는 프로세스

1) 도커 레지스트리에서 centos 이미지를 풀 받아서 로컬로 다운로드 받는다.
2) 이 이미지를 통해서 컨테이너를 실행한다.

이미지는 어떤 환경이 구성되어 있는 상태를 저장해 놓은 파일 집합.
이미지의 환경 위에서 특정한 프로세스를 격리시켜 실행한 것을 컨테이너라 부른다.

[요점] 이미지는 파일들의 집합이고, 컨테이너는 이 파일들의 집합 위에서 실행된 특별한 프로세스이다.

* 컨테이너는 docker run을 통해 실행한다.
-it 쉘을 실행하기 위해 붙임.
docker run -it <이미지이름:태그> <명령어>
$ docker run -it centos:latest bash
[root@d3fef9c0f9e9 /]#

=>호스트OS와 격리된 환경에서 bash 프로그램을 실행했다고 이해하는 것이 더 정확하다.

실행중인 컨테이너 목록을 확인 하는 명령
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d3fef9c0f9e9        centos:latest       "bash"              3 minutes ago       Up 3 minutes                            sweet_keldysh

1) centos:latest이미지로 컨테이너를 생성
2) 이 격리된 환경에서 /bin/bash라는 명령어로 컨테이너를 실행함.
3) 도커를 실행하기 위해서 container id와 names를 사용함.
4) container id로 컨테이너를 조작할 수 있다.

[root@localhost.localdomain /]# docker ps
CONTAINER ID   IMAGE                         COMMAND                  CREATED         STATUS        PORTS                                                                NAMES
274194ed058c   romeoz/docker-nginx-php:7.0   "/usr/bin/supervisord"   13 months ago   Up 7 months   443/tcp, 9000/tcp, 0.0.0.0:55000->80/tcp                             test5_php_1
bbceaf0f6c49   romeoz/docker-nginx-php:5.6   "/usr/bin/supervisord"   13 months ago   Up 7 months   443/tcp, 9000/tcp, 0.0.0.0:11211->11211/tcp, 0.0.0.0:50000->80/tcp   crezone_php_1
5752d6e2f0ae   mysql:5.6                     "docker-entrypoint.s…"   13 months ago   Up 7 months   3306/tcp                                                             crezone_db_1
88608838407f   adminer                       "entrypoint.sh docke…"   13 months ago   Up 7 months   0.0.0.0:50001->8080/tcp                                              crezone_adminer_1

13개월 전에 컨테이너가 실행되고 있다는 것을 확인함.
 
* 죽은 컨테이너 목록까지 확인
$ docker ps -a

* 종료된 컨테이너 재시작 하기
$ docker restart d3fef9c0f9e9
d3fef9c0f9e9
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d3fef9c0f9e9        centos:latest       "bash"              14 minutes ago      Up 8 seconds                            compassionate_turing
$

* 쉘과 입출력을 주고 받으려면, attach 명령어를 이용한다.
$ docker attach d3fef9c0f9e9
[root@d3fef9c0f9e9 /]#

* 실행된 컨테이너 강제 종료 : stop
* 종료된 컨테이너를 삭제 : rm , --rm 플래그는 컨테이너가 종료 상태가 되면 컨테이너를 자동 삭제한다.
* 가상머신은 컴퓨터라면, 컨테이너는 격리된 프로세스이다.
* 컨테이너는 가상머신이라기 보다는 프로세스이다.

7. 도커와 버전 관리 시스템

1) 도커에서 이미지는 불변(immutable)한 저장 매체이다.
2) 이 이미지 위에 무언가를 더해서 새로운 이미지를 만들어내는 일이 가능하다.
3) 저장소(repository), 풀(pull), 푸시(push), 커밋(commit), 차분(diff) 사용가능함.

* 도커에서 새로운 이미지를 생성하는 과정
$ docker pull ubuntu:bionic
...
$ docker run -it ubuntu:bionic bash
root@65d60d3dd306:/#

이 컨테이너에 Git을 설치한다.
root@65d60d3dd306:/# git --version
bash: git: command not found

어떤 컨테이너와 이 컨테이너의 부모 이미지 간의 파일 변경사항을 확인할 수 있는 명령어를 제공
git diff명령어로 프로젝트의 변경사항을 확인하듯, docker diff명령어로 부모 이미지와 여기서 파생된 컨테이너의 파일 시스템간의 변경사항을 확인.

$ dockre ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
65d60d3dd306        ubuntu:bionic       "bash"              About a minute ago   Up About a minute                       distracted_ardinghelli

$ dokcker diff 65d60d3dd306

아무것도 출력되지 않는다.

* 공식 우분투 이미지는 사용자가 루트로 설정되어 있음
sudo 명령 없이 apt를 직접 사용해 패키지를 설치할 수 있다.
root@65d60d3dd306:/# apt update
...
root@65d60d3dd306:/# apt install -y git
...
root@65d60d3dd306:/# git --version
git version 2.17.1

$ docker diff 65d60d3dd306 | head
C /usr
C /usr/lib
A /usr/lib/ssl
A /usr/lib/ssl/certs
A /usr/lib/ssl/misc
A /usr/lib/ssl/misc/CA.pl
A /usr/lib/ssl/misc/tsget
A /usr/lib/ssl/misc/tsget.pl
A /usr/lib/ssl/openssl.cnf
A /usr/lib/ssl/private

결과가 많으므로 head 앞쪽 부분만 출력 함.
[의미]
A : ADD
C : CHANGE
D : DELETE

$ docker run -it --rm ubuntu:bionic bash
root@33f6039322df:/# git --version
bash: git: command not found
root@33f6039322df:/# exit

* 우분투 이미지에 GIT을 설치함.
$ docker commit 65d60d3dd306 ubuntu:git
sha256:12924460218feb38da74e9a64c95acd55d16297346b2698f47f396936636c93d
$ REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              git                 12924460218f        4 seconds ago       186MB
ubuntu              bionic              4e5021d210f6        8 hours ago         64.2MB
centos              latest              470671670cac        2 months ago        237MB

$ docker run -i -t ubuntu:git bash
root@2a00b9b2b7cc:/# git --version
git version 2.17.1
root@2a00b9b2b7cc:/# exit

* docker rm은 컨테이너를 삭제하는 명령
* docker rmi는 이미지를 삭제하는 명령
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
2a00b9b2b7cc        ubuntu:git          "bash"              2 minutes ago       Exited (130) 3 seconds ago                        cranky_franklin
$ docker rm 2a00b9b2b7cc
2a00b9b2b7cc
$ docker rmi ubuntu:git
Untagged: ubuntu:git
Deleted: sha256:487a3619305e68483059caa21eb54d1d812ced4282df9e2ba05ec46ed9a2b8f4
Deleted: sha256:9b6621e819f094c16ea9f63af90f7cb564a48133c05504fad0f28563865f957d

728x90
728x90

1. 롬복 설치하기

롬복 다운로드로 이동해서 롬복을 다운로드해 주세요.

버전은 2018-03-07일 기준으로 1.18.12 버전입니다.

"jar 파일은 다운로드 중에 컴퓨터를 손상시킬 수도 있다."라는 경고 메시지가 나오는데요,

무시하고 계속을 클릭해서 진행해 주시면 되겠습니다.

728x90
728x90

기본브라우저 설정에서 Internet Explorer 호환성 실행 안함을 선택하면 된다.

Internet Explorer 호환성

Internet Explorer 호환성

728x90

+ Recent posts