docker를 설치하는 방법은 두 가지가 있다.
CentOS7에서 설치하기
$ sudo yum install docker
$ docker search [ubuntu, centos]
$ docker pull centos
$ docker images
$ docker run -i -t --name hello centos /bin/bash
$ docker ps -a
$ docker start hello
$ docker restart hello
$ docker attach hello
$ docker exec hello echo "Hello World"
$ docker stop hello
$ docker stop hello
$ docker rm hello
$ docker rm hello
문법 | 설명 |
---|---|
> | 출력 리다이렉션, 명령 실행의 표춘 출력(stdout)을 파일로 저장합니다. 유닉스계열 운영체제는 장치도 파일로 처리하기 때문에 명령 실행 결과를 특정 장치로 보낼 수도있습니다
|
< | 입력 리다이렉션, 파일의 내용을 읽어 명령의 표준 입력(stdin)으로 사용합니다.
|
>> | 명령 실행의 표준 출력(stdout)을 파일에 추가합니다. >는 이미 있는 파일에 내용을 덮어 쓰지만 >>는 파일 뒷 부분에 내용을 추가 합니다.
|
2> | 명령 실행의 표준 에러(stderr)를 파일로 저장합니다. |
2>> | 명령 실행의 표준 에러(stderr)를 파일에 추가합니다. |
&> | 표준 출려과 표준 에러를 모두 파일로 저장합니다. |
1>$2 | 표준 출력을 표준 에러로 보냅니다. echo 명령으로 문자열을 표준 출력으로 출력했지만 표준 에러로 보냈기 때문에 변수에는 문자열이 들어가지 않습니다.
|
2>&1 | 표준 에러를 표준 출력으로 보냅니다. abcd라는 명령은 없음으로 에러가 발생하지만 에러를 표준출력으로 보낸 뒤 다시 /dev/null로 보냈기 떄문에 아무것도 출력 되지 않습니다.
|
| | 파이프 명령 실행의 표준 출력을 다른 명령의 표준 입력으로 보냅니다. 즉 첫 번쨰 명령의 출력 같을 두 번 쨰 명령에서 처리합니다.
|
\$ | bash의 변수 입니다. 값을 저장할 떄는 $를 붙이지 않고, 변수를 가져다 쓸 떄만 \$를 붙입니다.
|
\$() | 명령 실행결과를 변수화합니다. 명령 실행 결과를 변수에 저장하거나 다른 명령의 매개 변수로 넘겨줄 떄 사용합니다. 또는 문자열 안에 명령의 실행 결과를 넣을 때 사용합니다.
|
`` | $()꽈 마찬가지로 명령 실행 결과를 변수화합니다.
|
&& | 한 줄에서 명령을 여러 개 실행합니다. 단 앞에 있는 멸령이 에러 없이 실행되어야 뒤에 오는 명령이 실행됩니다.
|
; | 한 줄에서 명령을 여러 개 실행합니다. 단 앞에 있는 명령이 에러 없이 실행되어야 뒤에 오는 명령이 실행됩니다.
|
'' | 문자열입니다. ' '안에 들어있는 변수는 처리되지 않고 변수명 그대로 사용됩니다. 또한 "와 $()도 처리되지 않고 그대로 사용됩니다. 그대로 출력됩니다. |
"" | 문자열입니다. 명령에 문자열 매개 변수를 입력하거나 변수에 저장할 때 주로 사용합니다. '' 와는 달리 " "안에 변수가 들어 있으면 변수의 내용으로 바뀝니다. 또한 "와 $()도 실행 결과 값이 사용됩니다.
|
"''" | " "안에 ''가 들어갈 수 있습니다. 명령 안에서 다시 명령을 실행하고 매개 변수를 지정할 떄 사용합니다.
|
\" \$hello | ''안에서 "를 사용할 때 \"처럼 앞에 \를 붙여줍니다.
|
${} \$hello | 변수 치환입니다. " "문자열 안에서 변수를 출력할 때 주로 사용합니다. ${} 대신 $만 사용해도 됩니다. 스크립트에서 변수의 기본 값을 설정할 떄도 사용합니다. 다음은 HELLO변수가 있으면 그대로 사용하고 변수가 없으면 기본 값으로 설정한 abcd를 대입합니다. 값이 NULL인 HELLO 변수가 이미 있기 때문에 기본 값을대입하지 않습니다. 다음은 변수의 값이 있으면 그대로 사용하고, 값이 NULL이면 기본 값으로설정한 abcd를 대입합니다.
|
\ | 한 줄로된 명령을 여러 줄로 표현할 때 사용합니다.
|
{1..10} | 연속된 숫자를 표현합니다. {시작숫자..끝 숫자} 형식 |
{문자열1,문자열2} | {}안에 문자열을 여러 개 지정하여 명령 실행 횟수를 줄입니다. 다음은 hello.txt, world.txt 두 파일을 한 번에 hello-dir디렉 터리에 복사합니다.
|
if | if 조건문입니다. 변수와 변수끼리 또는 문자열과 비교할 때 사용합니다. 숫자 비교
문자열 비교
|
for | for 반복문입니다. 변수 안에 있는 값을 반복하거나 범위를 지정하여 반복할 수 있습니다.
|
while | while 반복문입니다.
|
<<< | 문자열을 명령(프로세스)의 표준 입력으로 보냅니다.
|
<<EOF EOF | 여러 줄의 문자열을 명령의 표준 입력으로 보냅니다. cat은 파일이나 표준 입력의 내용을 출력하는 명령입니다. cat의 표준 출력을 ./hello.txt로 저장하고, <
|
export | 설정한 값을 환경 변수로 만듭니다. export <변수>=<값> 형식
|
printf | 지정한 형식대로 값을 출력합니다. 파이프와 연동하여 명령(프로세스)에 값을 입력하는 효과를 낼 수 있습니다.
예를 들어 example-config는 Port, User, Save Configuration을 사용자에게 입력을 받습니다. printf로 미리 값을 설정하여 파이프로 example-config에 넘겨주면 사용자가 입력하지 않아도 자동으로 값이 입력되니다. 줄바꿈(개행)은\\n 으로 표현합니다. |
sed | 텍스트 파일에서 문자열을 변경합니다. hello.txt파일의 내용 중에서 hello하는 문자열을 찾아서 world 문자열로 바꾸려면 다음과 같이 실행합니다.
|
dockerfile은 Docker 이미지 설정 파일 입니다. Dockerfile에 설정된 내용대로 이미지를 생성합니다.
~$ mkdir example
~$ cd example
dockerfile 작성
이미지 생성 중에는 사용자 입력을 박을 수 없으므로 apt-get install 명령세서 -y 옵션을 사용합니다. (yum install도 동일)
나마지는 nginx 설정
-v /root/data:/data는 호스트의 /root/data/ 디렉터리를 Docker 컨테이너의 /data 디렉터리에 연결
FROM ubuntu:14.04
LABEL maintainer="jgi92@naver.com"
RUN apt-get update
RUN apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx
VOLUME [ "/data", "/etc/nginx/site-enabled", "/var/log/nginx" ]
WORKDIR /etc/nginx
CMD ["nginx"]
EXPOSE 80
EXPOSE 433
~$ docker build --tag hello:0.1 .
docker build <옵션> <Dockerfile 경로> 형식입니다. --tag 옵션으로 이미지 이름과 태그를 설정할 수 있입니다. 이미지 이르만 설정하면 태그는 lastest로 설정됩니다.$ docker run --name <실행시키고 싶은 이름> -d -p 80:80 -v /root/data:/data <이지미 경로>
$ docker history <이미지 이름> :<태그>
$ docker cp hello-nginx:/etc/nginx/nginx.conf ./
$ docker commit -a <작성 maintainer> -m "<로그파일.txt>" <컨테이너 이름> <뉴 이미지 이름>:<태그>
$ docker diff happygi
docker inspect happygi