<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://old.wiki.ubuntu-kr.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=175.196.251.92</id>
	<title>Ubuntu Korea Community Wiki - 사용자 기여 [ko]</title>
	<link rel="self" type="application/atom+xml" href="https://old.wiki.ubuntu-kr.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=175.196.251.92"/>
	<link rel="alternate" type="text/html" href="https://old.wiki.ubuntu-kr.org/index.php?title=%ED%8A%B9%EC%88%98:%EA%B8%B0%EC%97%AC/175.196.251.92"/>
	<updated>2026-10-17T03:15:16Z</updated>
	<subtitle>사용자 기여</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://old.wiki.ubuntu-kr.org/index.php?title=Docker_Study&amp;diff=4306</id>
		<title>Docker Study</title>
		<link rel="alternate" type="text/html" href="https://old.wiki.ubuntu-kr.org/index.php?title=Docker_Study&amp;diff=4306"/>
		<updated>2016-09-22T09:19:14Z</updated>

		<summary type="html">&lt;p&gt;175.196.251.92: /* 2016년 8월 24일 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 2016년 9월 21일 ==&lt;br /&gt;
Network : pdf 파일 보름 내로 다시 만들어서 드립니다. &amp;lt;br/&amp;gt;&lt;br /&gt;
Clustering &amp;amp; network -&amp;gt; Swarm(https://docs.docker.com/swarm/)&amp;lt;br/&amp;gt;&lt;br /&gt;
container 생성 후 동작 중간에 자원 performance 조절은 불가&amp;lt;br/&amp;gt;&lt;br /&gt;
docker run 옵션에서 제공하며, lxd에 비해 cgroup을 통해 조절되는 parameter의 양이 적음.&lt;br /&gt;
&lt;br /&gt;
Storage : https://docs.docker.com/engine/userguide/storagedriver/selectadriver/ &amp;lt;br/&amp;gt;&lt;br /&gt;
You can set the storage driver by passing the --storage-driver=&amp;lt;name&amp;gt; option to the dockerd command line, or by setting the option on the DOCKER_OPTS line in the /etc/default/docker file. -&amp;gt; 우분투 버그 &amp;lt;br/&amp;gt;&lt;br /&gt;
/etc/docker/ 에 daemon.json 파일을 생성하고 { &amp;quot;storage driver : zfs&amp;quot; } 입력하고 저장 &amp;lt;br/&amp;gt;&lt;br /&gt;
storage drive는 여러가지가 제공되나, host machine에서는 하나만 사용해야 함.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AUFS http://www.joinc.co.kr/w/man/12/docker/aufs&amp;lt;br/&amp;gt;&lt;br /&gt;
union mount&amp;lt;br/&amp;gt;&lt;br /&gt;
CoW : 변경점만 write한다&lt;br /&gt;
whitout : Image layer는 R/O이니&amp;lt;br/&amp;gt;&lt;br /&gt;
whiteout이 마치 지워진것처럼 인식하게 함.&amp;lt;br/&amp;gt;&lt;br /&gt;
아직 rename은 특정 조건에서 제대로 안될수도 있음.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ZFS http://www.howtogeek.com/175159/an-introduction-to-the-z-file-system-zfs-for-linux/&amp;lt;br/&amp;gt;&lt;br /&gt;
https://docs.docker.com/engine/userguide/storagedriver/zfs-driver/&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Security https://docs.docker.com/engine/security/security/&lt;br /&gt;
&lt;br /&gt;
도커 컨테이너는 보통 제한된 Capability 를 가지고 실행된다.&lt;br /&gt;
&lt;br /&gt;
capability 는 root/non-root 디렉터리를 fine-grained 접근 제어 시스템으로 바꾼다.&lt;br /&gt;
(루트 기반의 시스템 관리 권한은 각 앱이나 프로세스별 권한으로 세분화 한다.)&lt;br /&gt;
예 : 웹서버가 80번 포트에 바인드 할때, 루트로 바인드 하지 않고, &lt;br /&gt;
net_bind_service 같은 전용 권한으로 바인드 한다.&lt;br /&gt;
&lt;br /&gt;
보통의 서버는 많은 프로세스를 루트 권한으로 실행해야 하는 경우가 많다.&lt;br /&gt;
&lt;br /&gt;
도커 컨테이너 내부에서 대부분의 경우 루트 권한이 필요하지 않다.&lt;br /&gt;
ssh 연결은 도커 호스트 머신에 의해 실행된다.&lt;br /&gt;
cron 은 플렛폼 전체적으로 실행되기 보단, 사용자 프로세스로 실행되어야 한다&lt;br /&gt;
로그 관리는 도커 또는  Loggy, Splunk 같은 제3자 서비스로 관리된다.&lt;br /&gt;
하드웨어 관리는 udev 로 실행 되어야 한다.&lt;br /&gt;
네트워크 관리는 도커 컨테이너 밖에서 일어난다.&lt;br /&gt;
&lt;br /&gt;
그러므로 컨테이너의 루트는 호스트의 루트보다 훨씬 적은 privileges 를 가지고 있다.&lt;br /&gt;
예를 들어 아래와 같은 것이 가능해진다.&lt;br /&gt;
모든 마운트 작업 거부&lt;br /&gt;
raw 소켓 접근 거부&lt;br /&gt;
일부 파일시스템 작업 거부&lt;br /&gt;
모듈 로딩 거부&lt;br /&gt;
(기타 등등...)&lt;br /&gt;
&lt;br /&gt;
이는 침입자가 컨테이너에서 루트로 상승을 한다 해도 큰 영향을 주지 않음을 의미한다.&lt;br /&gt;
도커 컨체이너에서는 기본적으로 아래와 같이 필요한 capability 를 제외하고 모두 드롭한다.&lt;br /&gt;
&lt;br /&gt;
Linux Capability : http://man7.org/linux/man-pages/man7/capabilities.7.html&lt;br /&gt;
Arch Wiki - Capability : https://wiki.archlinux.org/index.php/Capabilities&lt;br /&gt;
Docker Docs - Linux Kernel Capabilities : https://docs.docker.com/engine/security/security/#/linux-kernel-capabilities&lt;br /&gt;
Default Docker Container Capability List - https://github.com/docker/docker/blob/master/oci/defaults_linux.go#L64-L79&lt;br /&gt;
Docker Run Reference - Capability 추가 및 제거 옵션 : https://docs.docker.com/engine/reference/run/#/runtime-privilege-and-linux-capabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2016년 9월 7일  ==&lt;br /&gt;
LXD 소개, 기본 사용법, 구조.&lt;br /&gt;
&lt;br /&gt;
http://www.ubuntu.com/cloud/lxd&lt;br /&gt;
&lt;br /&gt;
공유 문서&lt;br /&gt;
https://docs.google.com/document/d/1Hza6Me_xQU5XWhhCkki3vP7EEJgUEaoAHr34oqWjTcw/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== 2016년 8월 31일 ==&lt;br /&gt;
&lt;br /&gt;
Android App on ChromeBook 관련 기사&lt;br /&gt;
http://www.androidauthority.com/run-android-apps-chromebook-703248/&lt;br /&gt;
&lt;br /&gt;
Google I/O Chromebook 관련 영상&lt;br /&gt;
https://youtu.be/yDy1WWUdlY8?t=4m40s&lt;br /&gt;
이 영상에서 Android App들을 돌리는 시연 영상이 공개됨&lt;br /&gt;
&lt;br /&gt;
Tech Bits - Running Android apps in Docker using Googles ARC Welder&lt;br /&gt;
http://thshaw.blogspot.kr/2015/07/running-android-apps-in-docker-using.html&lt;br /&gt;
&lt;br /&gt;
https://chrome.googleblog.com/2016/05/the-google-play-store-coming-to.html&lt;br /&gt;
&lt;br /&gt;
https://support.google.com/chromebook/answer/1086915&lt;br /&gt;
&lt;br /&gt;
https://insights.ubuntu.com/2016/06/14/universal-snap-packages-launch-on-multiple-linux-distros/&lt;br /&gt;
&lt;br /&gt;
http://snapcraft.io/&lt;br /&gt;
&lt;br /&gt;
https://blog.jessfraz.com/post/docker-containers-on-the-desktop/&lt;br /&gt;
&lt;br /&gt;
* 웬만한 GUI application들은 docker run시에 data volume (-v) 옵션을 주어야 제대로 작동한다.&lt;br /&gt;
* https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes&lt;br /&gt;
&lt;br /&gt;
== 2016년 8월 24일 ==&lt;br /&gt;
* 유용 링크: https://github.com/wscherphof/oracle-12c#build &amp;lt; 설명: '''Oracledb''' 를 '''Oracle Linux 7 Docker image'''에서 설치하고 돌릴 수 있게 Dockerfile들을 제공한다. 자세한 것은 직접 방문해서 보면 된다. 친절하게 다 안내가 되어있다. 개발자가 사용한 '''Oracledb'''는  '''Oracle Database 12c Enterprise Edition Release 12.1.0.2.0''' 에서 실험이 진행되었다.&lt;br /&gt;
&lt;br /&gt;
Oracle에서 아예 공식 블로그와 자사 Github에 Oracle DB를 컨테이너 상에서 매우 쉽게 돌릴수 있도록 설명서와 프로그램들을 짜서 동봉 하였다. 그냥 다운로드 해서 쓰면 된다. 나머지 서비스나 라이선스 문제는 알아서 하면 될 것이다.&lt;br /&gt;
링크: https://blogs.oracle.com/developer/entry/creating_and_oracle_database_docker&lt;br /&gt;
&lt;br /&gt;
설명 간단 요약: 블로그 내용을 간단하게 요약하면 먼저 oracle.com에서 자신이 쓸 DB의 버젼과 일반용, 기업용을 상세히 고려해서 자신에게 맞는 것을 다운로드 한다.&lt;br /&gt;
그 다음에 docker-images-master/OracleDatabase/dockerfiles라는 폴더에 Oracle DB 버젼으로 이름지어진 폴더들이 있다. 자신의 버젼에 맞는 폴더에 다운로드한 모든 걸 옮겨 넣은 후에 OracleDatabase에&lt;br /&gt;
 buildDockerImage.sh 라는 것을 실행 시킨다. 실행 거부가 되면 해당 shell 스크립트 파일의 속성-권한-&amp;gt; 파일을 실행 프로그램으로 실행을 체크, 아니면 간단하게 chmod +x buildDockerImage.sh 하면 된다.&lt;br /&gt;
&lt;br /&gt;
그다음 이걸 실행 시키면서 반드시 옵션을 주어야 한다. 일반용인지 기업용인지를 반드시 명시하면 이미지가 자동 빌드된다. 그러면 반드시 docker 에서 Oracle DB 이미지가 보여야 한다. ./buildDockerImage.sh --help 를 통해 어떤 옵션을 줄 수 있는지 보면 된다.(필자의 경우 -e 옵션으로 기업용 버젼을 설치해 보았다.)&lt;br /&gt;
&lt;br /&gt;
다 만들어진 이미지를 이제 Port 1521로 호스트와 연결 지어주면 끝난다. 하지만 비밀번호가 자동 생성 되는데 run 명령어를 입력하는 순간 첫 줄에 비밀번호가 무엇인지 보이게 된다. 반드시 그 비밀번호를 빨리 소유한다. 안 그럼 다시 만들어야 한다.&lt;br /&gt;
sqldeveloper로 연결해 보면 아주 재대로 돌아가는 것을 볼 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
* vagrant 와 비슷 = http://www.libvirt.org/ 가상머신 관리 application. vagrant는 virtualbox를 지원.&lt;br /&gt;
* coreos https://discorery.etcd.io/&amp;lt;token&amp;gt; 이 token을 내가 원하는대로 생성이 가능? 아니면 자릿수만 맞춰서 난수로 clustering 서버에 제공?&lt;br /&gt;
* Core OS - Clustering Guide : https://coreos.com/etcd/docs/latest/clustering.html#discovery&lt;br /&gt;
* 따로 설정을 하지 않아도 어플리케이션이 실행되는 coresos 1이 죽으면 다른 cores 2, 3 등에서 실행이 된다. ＊＊&lt;br /&gt;
* 개발, 테스트, 운영을 통합 -&amp;gt; 실제로 굉장히 도입해 볼만함. 똑같은 환경. 특정 컨테이너의 특정한 커밋을 올려보고 테스트. 기본 모듈 개발 시 컨테이너에 장점. 특히 웹 개발.&lt;br /&gt;
* http://clusterlabs.org/wiki/Pacemaker&lt;br /&gt;
* clustering이 아직 생각보다 안정적이진 않다. cluster를 이용하기 때문에 생기는 또 다른 문제가 생길 것. etc는 누가 관리 할것이며...&lt;br /&gt;
* 구조 파악 : 네트웍, 스토리지, 시큐리티, (자원관리 -&amp;gt; cgroup을 어떻게 docker가 활용하는가?)&lt;br /&gt;
* 네트웍(장태희) : 1. packet이 host에서 container까지 들어가는 path 확인 2. docker 의 network mode가 있는데 mode 별로 path가 어떻게 잡히는지 3. network 구성이 바꿀 수 있는 방법이 무엇이 있는지. https://docs.docker.com/v1.10/engine/userguide/networking/ https://docs.docker.com/engine/userguide/networking/&lt;br /&gt;
* 스토리지(이희찬) : 1. docker 가 어떻게 host의 storage를 mount 해서 쓰는지 2. docker와 gfs의 다른 대안이 있는지 https://docs.docker.com/engine/userguide/storagedriver/selectadriver/ https://docs.docker.com/engine/userguide/storagedriver/aufs-driver/&lt;br /&gt;
* 시큐리티(한영빈) : 1. POSIX Capability를 이용한 Security control (어떤 process의 permission으로 network를 컨트롤 한다 안한다 등) previleged vs unprevileged&lt;br /&gt;
* 참고 : http://www.slideshare.net/janghoonsim/docker-container-and-lightweight-virtualization&lt;br /&gt;
&lt;br /&gt;
== 2016년 8월 17일 ==&lt;br /&gt;
* container가 돌아가고 있는 상태에서 업데이트가 가능? -&amp;gt; container기반 서비스에서 지향하는 것 == 기존의 것을 upgrade 하는 것보다 부시고 새로 만드는 것!&lt;br /&gt;
* Load balancer 가 이미지 스위칭을 담당&lt;br /&gt;
* MS Azure&lt;br /&gt;
** https://azure.microsoft.com/ko-kr/documentation/articles/xplat-cli-install/&lt;br /&gt;
** https://azure.microsoft.com/ko-kr/documentation/articles/xplat-cli-connect/&lt;br /&gt;
* http://trace32.com/wiki/index.php/Remote_API&lt;br /&gt;
* http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter14/01 -&amp;gt; sudo apt-get install python-docker 로 한방에 설치 가능&lt;br /&gt;
* Remote API 부분은 공식 문서를 참조하는 것이 조금 더 도움이 되는 것 같다.&lt;br /&gt;
** Docker Remote API : https://docs.docker.com/engine/reference/api/docker_remote_api/&lt;br /&gt;
** Docker Remote API v1.24 : https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/&lt;br /&gt;
* Remote API의 핵심은 Remote API!&lt;br /&gt;
* 다음주는 15번 부터&lt;br /&gt;
* dockerd 옵션&lt;br /&gt;
* dockerd remote API 지원 service 로 실행하기  &lt;br /&gt;
&lt;br /&gt;
1) /lib/systemd/system/docker.service 파일 수정&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[Service] section 에 &lt;br /&gt;
EnvironmentFile=-/etc/default/docker &amp;lt;- 추가&lt;br /&gt;
ExecStart=/usr/bin/dockerd $DOCKER_OPTS -H fd:// &amp;lt;- 수정&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
2) /etc/default/docker 파일 수정&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DOCKER_OPTS=&amp;quot;-H tcp://0.0.0.0:4243&amp;quot; 추가&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
3) 서비스 재시작&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;- systemctl daemon-reload&lt;br /&gt;
- service docker stop/start&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 도커 구조 파악&lt;br /&gt;
* container live migration 내용이 없다. https://en.wikipedia.org/wiki/Live_migration&lt;br /&gt;
* https://criu.org/Docker&lt;br /&gt;
&lt;br /&gt;
== 2016년 8월 10일 ==&lt;br /&gt;
* 출석 : 한영빈, 장태희 / 결석 : 심장훈(스케줄), 이희찬(병결)&lt;br /&gt;
* Git hook -&amp;gt; https://git-scm.com/book/ko/v2/Git%EB%A7%9E%EC%B6%A4-Git-Hooks&lt;br /&gt;
* git에서 특정 이벤트가 발생하면 실행되는 스크립트가 hook인데, 이벤트 중에 push가 해당&lt;br /&gt;
* post-receive는 서버측 스크립트&lt;br /&gt;
* heroku(https://www.heroku.com/) / dokku(http://dokku.viewdocs.io/dokku/)와 비슷하게 세팅하여 작동되는것 같다.(http://blog.nacyot.com/articles/2014-01-30-deploying-application-with-dokku/)&lt;br /&gt;
* 모니터링 서버를 localhost에 세팅 해도 되는가? -&amp;gt; 루프백 관련 문제 발생할듯.(http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter09/01)&lt;br /&gt;
* 모니터링과 어플리케이션 서버를 하나의 서버에 설치해도 되는가? -&amp;gt; Diamond 와 Graphite의 노출 포트가 겹치지 않도록 설정하면 가능함.&lt;br /&gt;
* rrdtool 을 이용하여 서버 모니터링을 한다고도 함.&lt;br /&gt;
* Graphite 사용 화면(그래프를 제대로 보려면, 최소 14시간 기다려야 제대로 된 간지나는(?) 그래프를 볼 수 있음)&lt;br /&gt;
[[파일:Example graphite usage.png]]&lt;br /&gt;
* &amp;lt;모니터링 서버 주소&amp;gt;/grafana 로 접속하면, grafana 로 데이터를 볼 수 있음.&lt;br /&gt;
[[파일:Example grafana usage.png]]&lt;br /&gt;
&lt;br /&gt;
== 2016년 8월 3일 ==&lt;br /&gt;
출석 : 한영빈, 이희찬, 심장훈, 장태희&lt;br /&gt;
* 6주차 : Docker + LXD 설명&lt;br /&gt;
* Chapter 05&lt;br /&gt;
** http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter05&lt;br /&gt;
** inspect 명령으로 세부 정보 확인하기 -&amp;gt; inspect file은 어디에 저장되는가?&lt;br /&gt;
** Dockerfile 내용 과는 전혀 다름&lt;br /&gt;
** JSON 방식으로 -f -format의 옵션은 JSON 항목을 그대로 입력하면 됨&lt;br /&gt;
** https://www.mankier.com/1/docker-inspect&lt;br /&gt;
** text 기반 setting 변경 보다 database화된 설정 저장으로 추측...&lt;br /&gt;
** 도커 명령어 정리 : http://blog.iolo.kr/510&lt;br /&gt;
&lt;br /&gt;
** http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter06/03&lt;br /&gt;
** 다른 서버의 Docker 컨테이너에 연결하기&lt;br /&gt;
** 앰배서더 컨테이너 -&amp;gt; 중간에 끼므로 인하여 생기는 문제(레이턴시 등)가 발생할 수도 있음.&lt;br /&gt;
** 각 서버의 컨테이너끼리 통신하는 방법도 생각 해 볼만 함.&lt;br /&gt;
&lt;br /&gt;
** http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter06/04&lt;br /&gt;
** Docker 데이터 볼륨 사용하기&lt;br /&gt;
** 호스트에 있는 파일을 수정했을 시 각 컨테이너 데이터 볼륨에서 파일의 접근 퍼미션은 어떻게? -&amp;gt; 확인 해 봐야 한다.&lt;br /&gt;
&lt;br /&gt;
** snapshot? commit으로 사용 하면 되지만 개념이 미묘하게 차이가 있는 듯.&lt;br /&gt;
&lt;br /&gt;
** 파일들의 위치 : /var/lib/docker -&amp;gt; containers, volumes&lt;br /&gt;
** 완벽한 sandbox 형태를 제공하지는 않는다. 접근이 가능하기 때문에 Host가 파일 변경은 수월하나 보안적으로는 취약함.&lt;br /&gt;
&lt;br /&gt;
** http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter06/07&lt;br /&gt;
** Docker 안에서 Docker 실행하기&lt;br /&gt;
** sudo docker run -i -t --privileged dind 실행 시 오류가 남&lt;br /&gt;
** Docker 버전 차이로 인하여 안되는 듯 함. docker documentation 문서를 참고하여 수정해서 다시 돌려봐야 할 듯 함.&lt;br /&gt;
&lt;br /&gt;
** CMD + ENTRYPOINT&lt;br /&gt;
** CMD는 Dockerfile에서 한 번만 정의 가능 / ENTRYPOINT는 Dockerfile에서 한 번만, 명령어에서 옵션을 주면 CMD 옵션을 덮어쓰게 됨.&lt;br /&gt;
&lt;br /&gt;
* 다음 주 8, 9 해오기&lt;br /&gt;
&lt;br /&gt;
== 2016년 7월 27일 ==&lt;br /&gt;
=== 커리큘럼 작성 ===&lt;br /&gt;
* 출석 : 장태희 / 이희찬 / 한영빈 / 심장훈&lt;br /&gt;
* 5주차 까지 Docker 책을 끝내고 나머지 3주는 각자 서비스 구현하는걸로...&lt;br /&gt;
* 책 이름 : 가장 빨리 만나는 Docker(http://pyrasis.com/private/2014/11/30/publish-docker-for-the-really-impatient-book) - (참고 : http://kubernetes.io/docs/hellonode/)&lt;br /&gt;
* 유용한 도구 모음&lt;br /&gt;
- Windows, OS X: Kitematic(Docker에서 공식적으로 권장함.) --&amp;gt; https://kitematic.com/&lt;br /&gt;
&lt;br /&gt;
- 운영체제 전부 지원:Simple Docker UI.--&amp;gt; https://chrome.google.com/webstore/detail/simple-docker-ui/jfaelnolkgonnjdlkfokjadedkacbnib?hl=ko(2016-7-27일 기준으로 Windows용 Docker Beta 버젼을 쓴다면 조금 설정이 바로 보고 쓰기에 좀 번거롭다. Windows 사용자라면 Kitematic을 쓰는게 훨씬 편하다.)&lt;br /&gt;
* 1주차 : 1 ~5장 Docker 살펴보기&lt;br /&gt;
* 2주차 : 5 ~7장&lt;br /&gt;
* 3주차 : 8 ~9장&lt;br /&gt;
* 4주차 : 10 ~ 15장&lt;br /&gt;
* 5주차 : 16 ~ 20장&lt;br /&gt;
* 6주차 :&lt;br /&gt;
* 7주차 :&lt;br /&gt;
* 8주차 :&lt;br /&gt;
&lt;br /&gt;
- 장훈님 : container의 성능 자체에 관심 / &lt;br /&gt;
* version : 1.10 stable로 맞추기&lt;br /&gt;
* http://m.blog.daum.net/sunwookim77/104&lt;br /&gt;
* docker 다운 받은 image를 삭제 하고 싶으면 image를 사용한 모든 container를 서비스 중지하고 삭제 하여야 함.&lt;br /&gt;
* sudo docker exec -i -t hello-nginx /bin/bash -&amp;gt; -i -t 옵션이 뒤에 가면 먹히지 않는다. 옵션 지정 위치가 중요.&lt;/div&gt;</summary>
		<author><name>175.196.251.92</name></author>
	</entry>
	<entry>
		<id>https://old.wiki.ubuntu-kr.org/index.php?title=Docker_%EC%B5%9C%EC%8B%A0_%EB%B2%84%EC%A0%84_%EC%84%A4%EC%B9%98_/_PPA_%EC%84%A4%EC%A0%95&amp;diff=3875</id>
		<title>Docker 최신 버전 설치 / PPA 설정</title>
		<link rel="alternate" type="text/html" href="https://old.wiki.ubuntu-kr.org/index.php?title=Docker_%EC%B5%9C%EC%8B%A0_%EB%B2%84%EC%A0%84_%EC%84%A4%EC%B9%98_/_PPA_%EC%84%A4%EC%A0%95&amp;diff=3875"/>
		<updated>2016-08-02T16:00:05Z</updated>

		<summary type="html">&lt;p&gt;175.196.251.92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;확인된 시스템: Ubuntu 14.04.3 LTS&lt;br /&gt;
Ubuntu 16.04.1 LTS&lt;br /&gt;
Windows 10 professional&lt;br /&gt;
&lt;br /&gt;
Docker 1.11 부터 Docker for Linux, Windows, Mac에 대대적인 기능 변화가 있었다.&lt;br /&gt;
이제 Docker를 Windows, Mac, Linux에서 좀 더 편하고 빠르게 쓸 수 있도록 된 것도 그중 하나이다.&lt;br /&gt;
&lt;br /&gt;
2가지 방법들을 적는데 Linux는 모두 할 수 있음을 알린다.&lt;br /&gt;
출처: docs.docker.com&lt;br /&gt;
&lt;br /&gt;
'''1 (Windows, Mac, Linux)&lt;br /&gt;
'''&lt;br /&gt;
먼저 Windows, Mac은 설치용 파일을 따로 받게 된다.&lt;br /&gt;
&lt;br /&gt;
*Windows (2016-8-3일 기준)&lt;br /&gt;
&lt;br /&gt;
Windows는 필수 사양이 7, 8, 8.1, 10 이면서 64-bit 이여야 한다. 권장은 pro 또는 enterprise 버젼. 만약 pro 또는 enterprise 가 아니라면 다른 것을 설치하여야 한다.&lt;br /&gt;
&lt;br /&gt;
Windows는 반드시 Hyper-V가 이용 가능한 Windows 10 pro 또는 enterprise 버젼으로 쓰기 바란다.&lt;br /&gt;
만약 그렇지 않는다면 Docker Toolbox, Oracle Virtualbox 라는 것들을 설치하여야 한다.&lt;br /&gt;
&lt;br /&gt;
Pro 또는 Enterprise: Hyper-V를 검색하고 만약 검색하고도 보이지 않는다면 설치가 안되있다는 뜻이니 반드시 '''Windows 기능 켜기/끄기'''에서 Hyper-V를 활성화 해야 한다.&lt;br /&gt;
&lt;br /&gt;
''여기서 부터 7이상 이면서 64-bit 운영체제 이기만 하면 된다.''&lt;br /&gt;
&lt;br /&gt;
이제 모두 준비 됬으면 설치한다. 설치 파일(확장자가 msi 이다.)을 사용해 설치.&lt;br /&gt;
&lt;br /&gt;
설치가 다되면 이제 남은 건 확인하는 것이다.&lt;br /&gt;
cmd, powershell 또는 기타 등등의 Shell을 연다.&lt;br /&gt;
&lt;br /&gt;
다음 명령어를 입력한다.&lt;br /&gt;
&amp;lt;code&amp;gt;docker run hello-world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
반드시 어떤 가이드 같은 것들이 출력되어야 한다.&lt;br /&gt;
만약 그렇지 않는다면 문제가 있는 것이다.&lt;br /&gt;
&lt;br /&gt;
출력이 되면 정상적으로 모든 것들이 설치가 된 것이다.&lt;br /&gt;
기본 설정이 Windows 시작시 Docker 시작이므로 그냥 쓰면 된다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Mac OS X&lt;br /&gt;
Mac은 확인을 하지 않아 적지를 않는다. 하지만 링크를 적어둔다.&lt;br /&gt;
https://docs.docker.com/toolbox/toolbox_install_mac/&lt;br /&gt;
&lt;br /&gt;
* Linux&lt;br /&gt;
&lt;br /&gt;
웬만한 Linux 라면 다 된다. --&amp;gt; https://docs.docker.com/engine/installation/linux/&lt;br /&gt;
여기서는 Ubuntu 배포판만 적어둔다. 하지만 위 링크에서 웬만한 배포판에 최적화된 설치 가이드가 주어지니 그걸 읽으면 그렇게 어렵진 않다.&lt;br /&gt;
&lt;br /&gt;
먼저 Kernel이 3.10 이상의 것이여야 한다. 최신 Ubuntu라면 4.x 이상이니 확인할 필요는 없다.&lt;br /&gt;
Ubuntu 12.04 LTS 이상이면 되므로 최신을 쓰면 이 역시 확인할 필요는 없다.&lt;br /&gt;
&lt;br /&gt;
apt-transport-https 와 ca-certificates, 이 둘이 설치되어야 하는데 이건 운영체제 설치과정에서 주어지므로 하지 않아도 된다. 허나 만약 설치가 안되 있으면 설치한다.&lt;br /&gt;
&lt;br /&gt;
터미널을 열고 그 다음 명령어를 입력한다. --&amp;gt; &amp;lt;code&amp;gt; sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
명령어를 입력하고 해당 키가 추가되면 &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt;에서 docker.list 라는 것을 편집해야 한다.&lt;br /&gt;
자신이 쓰고자 하는 편집기를 관리자 권한에서 실행하여 편집하면 된다. 없는 경우도 있는데 만들면 된다.&lt;br /&gt;
&lt;br /&gt;
예시: &amp;lt;code&amp;gt;sudo gedit /etc/apt/sources.list.d/docker.list&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
넣어야 할 내용은 다음 링크를 따라가면 된다. --&amp;gt; https://docs.docker.com/engine/installation/linux/ubuntulinux/#/update-your-apt-sources&lt;br /&gt;
버젼 별로 있으니 해당 내용을 읽고 자신 버젼에 맞게 넣으면 끝.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; 로 설정들을 전부 설치. 만약 lxc-docker 가 있으면 그걸 &amp;lt;code&amp;gt;purge&amp;lt;/code&amp;gt; 명령어로 지운다.&lt;br /&gt;
&lt;br /&gt;
이것으로 준비가 되었다. 12.04 LTS는 다음 링크 --&amp;gt; https://docs.docker.com/engine/installation/linux/ubuntulinux/#/prerequisites-by-ubuntu-version&lt;br /&gt;
&lt;br /&gt;
설치하는 단계이다. &amp;lt;code&amp;gt;sudo apt-get install docker-engine&amp;lt;/code&amp;gt; 를 입력하고 &amp;lt;code&amp;gt; sudo docker run hello-world&amp;lt;/code&amp;gt;로 설치된 docker가 돌아가는지 확인한다.&lt;br /&gt;
만약 안되면 &amp;lt;code&amp;gt; sudo service docker start&amp;lt;/code&amp;gt; 로 service를 돌려야 한다.&lt;br /&gt;
&lt;br /&gt;
그래도 안되면 무언가 잘못된 것이니 구글링 하는 것이 좋다.&lt;br /&gt;
&lt;br /&gt;
이제 확인 단계는 Windows 처럼 똑같이 무언가 나올 것이다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
정상 설치가 되었는지 여부를 보는 방법&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo docker run hello-world &amp;lt;/code&amp;gt; 를 입력하고 나서 다음 내용이 나오면 정상 설치된 것.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from Docker!&lt;br /&gt;
This message shows that your installation appears to be working correctly.&lt;br /&gt;
&lt;br /&gt;
To generate this message, Docker took the following steps:&lt;br /&gt;
 1. The Docker client contacted the Docker daemon.&lt;br /&gt;
 2. The Docker daemon pulled the &amp;quot;hello-world&amp;quot; image from the Docker Hub.&lt;br /&gt;
 3. The Docker daemon created a new container from that image which runs the&lt;br /&gt;
    executable that produces the output you are currently reading.&lt;br /&gt;
 4. The Docker daemon streamed that output to the Docker client, which sent it&lt;br /&gt;
    to your terminal.&lt;br /&gt;
&lt;br /&gt;
To try something more ambitious, you can run an Ubuntu container with:&lt;br /&gt;
 $ docker run -it ubuntu bash&lt;br /&gt;
&lt;br /&gt;
Share images, automate workflows, and more with a free Docker Hub account:&lt;br /&gt;
 https://hub.docker.com&lt;br /&gt;
&lt;br /&gt;
For more examples and ideas, visit:&lt;br /&gt;
 https://docs.docker.com/engine/userguide/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ docker images hello-world&lt;br /&gt;
REPOSITORY   TAG     IMAGE ID      SIZE&lt;br /&gt;
hello-world  latest  c54a2cc56cbb  1.848 kB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2 (Linux에만 해당)&lt;br /&gt;
'''&lt;br /&gt;
이 내용을 따라하기 위해 먼저 필요한 것: curl이 설치된 Ubuntu, 관리자 권한을 얻기 위한 정보&lt;br /&gt;
(curl은 &amp;quot;sudo apt-get install curl&amp;quot; 명령을 사용하여 설치 가능)&lt;br /&gt;
&lt;br /&gt;
다음 명령어를 실행하여 Docker 팀이 제공하는 설치 스크립트를 실행하면,&lt;br /&gt;
Docker 팀이 관리하는 PPA가 추가되고 최신 버전의 Docker가 설치된다.&lt;br /&gt;
&lt;br /&gt;
이 명령을 실행하기 위해서는 관리자 권한이 필요하기 때문에, 관리자 계정의 비밀번호를 입력하여야 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ curl -sSL https://get.docker.com/ubuntu/ | sudo sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
상기 주소에서 제공하던 배포판 별 설치 스크립트를 아래 주소로 통합하여 배포판을 자동 인식함.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ curl -sSL https://get.docker.com/ | sudo sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
실행되는 스크립트의 내용은 아래와 같다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
set -e&lt;br /&gt;
#&lt;br /&gt;
# This script is meant for quick &amp;amp; easy install via:&lt;br /&gt;
#   'curl -sSL https://get.docker.com/ | sh'&lt;br /&gt;
# or:&lt;br /&gt;
#   'wget -qO- https://get.docker.com/ | sh'&lt;br /&gt;
#&lt;br /&gt;
# For test builds (ie. release candidates):&lt;br /&gt;
#   'curl -fsSL https://test.docker.com/ | sh'&lt;br /&gt;
# or:&lt;br /&gt;
#   'wget -qO- https://test.docker.com/ | sh'&lt;br /&gt;
#&lt;br /&gt;
# For experimental builds:&lt;br /&gt;
#   'curl -fsSL https://experimental.docker.com/ | sh'&lt;br /&gt;
# or:&lt;br /&gt;
#   'wget -qO- https://experimental.docker.com/ | sh'&lt;br /&gt;
#&lt;br /&gt;
# Docker Maintainers:&lt;br /&gt;
#   To update this script on https://get.docker.com,&lt;br /&gt;
#   use hack/release.sh during a normal release,&lt;br /&gt;
#   or the following one-liner for script hotfixes:&lt;br /&gt;
#     s3cmd put --acl-public -P hack/install.sh s3://get.docker.com/index&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
url='https://get.docker.com/'&lt;br /&gt;
&lt;br /&gt;
command_exists() {&lt;br /&gt;
	command -v &amp;quot;$@&amp;quot; &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo_docker_as_nonroot() {&lt;br /&gt;
	if command_exists docker &amp;amp;&amp;amp; [ -e /var/run/docker.sock ]; then&lt;br /&gt;
		(&lt;br /&gt;
			set -x&lt;br /&gt;
			$sh_c 'docker version'&lt;br /&gt;
		) || true&lt;br /&gt;
	fi&lt;br /&gt;
	your_user=your-user&lt;br /&gt;
	[ &amp;quot;$user&amp;quot; != 'root' ] &amp;amp;&amp;amp; your_user=&amp;quot;$user&amp;quot;&lt;br /&gt;
	# intentionally mixed spaces and tabs here -- tabs are stripped by &amp;quot;&amp;lt;&amp;lt;-EOF&amp;quot;, spaces are kept in the output&lt;br /&gt;
	cat &amp;lt;&amp;lt;-EOF&lt;br /&gt;
&lt;br /&gt;
	If you would like to use Docker as a non-root user, you should now consider&lt;br /&gt;
	adding your user to the &amp;quot;docker&amp;quot; group with something like:&lt;br /&gt;
&lt;br /&gt;
	  sudo usermod -aG docker $your_user&lt;br /&gt;
&lt;br /&gt;
	Remember that you will have to log out and back in for this to take effect!&lt;br /&gt;
&lt;br /&gt;
	EOF&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Check if this is a forked Linux distro&lt;br /&gt;
check_forked() {&lt;br /&gt;
&lt;br /&gt;
	# Check for lsb_release command existence, it usually exists in forked distros&lt;br /&gt;
	if command_exists lsb_release; then&lt;br /&gt;
		# Check if the `-u` option is supported&lt;br /&gt;
		set +e&lt;br /&gt;
		lsb_release -a -u &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
		lsb_release_exit_code=$?&lt;br /&gt;
		set -e&lt;br /&gt;
&lt;br /&gt;
		# Check if the command has exited successfully, it means we're in a forked distro&lt;br /&gt;
		if [ &amp;quot;$lsb_release_exit_code&amp;quot; = &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
			# Print info about current distro&lt;br /&gt;
			cat &amp;lt;&amp;lt;-EOF&lt;br /&gt;
			You're using '$lsb_dist' version '$dist_version'.&lt;br /&gt;
			EOF&lt;br /&gt;
&lt;br /&gt;
			# Get the upstream release info&lt;br /&gt;
			lsb_dist=$(lsb_release -a -u 2&amp;gt;&amp;amp;1 | tr '[:upper:]' '[:lower:]' | grep -E 'id' | cut -d ':' -f 2 | tr -d '[[:space:]]')&lt;br /&gt;
			dist_version=$(lsb_release -a -u 2&amp;gt;&amp;amp;1 | tr '[:upper:]' '[:lower:]' | grep -E 'codename' | cut -d ':' -f 2 | tr -d '[[:space:]]')&lt;br /&gt;
&lt;br /&gt;
			# Print info about upstream distro&lt;br /&gt;
			cat &amp;lt;&amp;lt;-EOF&lt;br /&gt;
			Upstream release is '$lsb_dist' version '$dist_version'.&lt;br /&gt;
			EOF&lt;br /&gt;
		else&lt;br /&gt;
			if [ -r /etc/debian_version ] &amp;amp;&amp;amp; [ &amp;quot;$lsb_dist&amp;quot; != &amp;quot;ubuntu&amp;quot; ]; then&lt;br /&gt;
				# We're Debian and don't even know it!&lt;br /&gt;
				lsb_dist=debian&lt;br /&gt;
				dist_version=&amp;quot;$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')&amp;quot;&lt;br /&gt;
				case &amp;quot;$dist_version&amp;quot; in&lt;br /&gt;
					8|'Kali Linux 2')&lt;br /&gt;
						dist_version=&amp;quot;jessie&amp;quot;&lt;br /&gt;
					;;&lt;br /&gt;
					7)&lt;br /&gt;
						dist_version=&amp;quot;wheezy&amp;quot;&lt;br /&gt;
					;;&lt;br /&gt;
				esac&lt;br /&gt;
			fi&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
rpm_import_repository_key() {&lt;br /&gt;
	local key=$1; shift&lt;br /&gt;
	local tmpdir=$(mktemp -d)&lt;br /&gt;
	chmod 600 &amp;quot;$tmpdir&amp;quot;&lt;br /&gt;
	gpg --homedir &amp;quot;$tmpdir&amp;quot; --keyserver ha.pool.sks-keyservers.net --recv-keys &amp;quot;$key&amp;quot;&lt;br /&gt;
	gpg --homedir &amp;quot;$tmpdir&amp;quot; --export --armor &amp;quot;$key&amp;quot; &amp;gt; &amp;quot;$tmpdir&amp;quot;/repo.key&lt;br /&gt;
	rpm --import &amp;quot;$tmpdir&amp;quot;/repo.key&lt;br /&gt;
	rm -rf &amp;quot;$tmpdir&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
semverParse() {&lt;br /&gt;
	major=&amp;quot;${1%%.*}&amp;quot;&lt;br /&gt;
	minor=&amp;quot;${1#$major.}&amp;quot;&lt;br /&gt;
	minor=&amp;quot;${minor%%.*}&amp;quot;&lt;br /&gt;
	patch=&amp;quot;${1#$major.$minor.}&amp;quot;&lt;br /&gt;
	patch=&amp;quot;${patch%%[-.]*}&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
	case &amp;quot;$(uname -m)&amp;quot; in&lt;br /&gt;
		*64)&lt;br /&gt;
			;;&lt;br /&gt;
		*)&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			Error: you are not using a 64bit platform.&lt;br /&gt;
			Docker currently only supports 64bit platforms.&lt;br /&gt;
			EOF&lt;br /&gt;
			exit 1&lt;br /&gt;
			;;&lt;br /&gt;
	esac&lt;br /&gt;
&lt;br /&gt;
	if command_exists docker; then&lt;br /&gt;
		version=&amp;quot;$(docker -v | awk -F '[ ,]+' '{ print $3 }')&amp;quot;&lt;br /&gt;
		MAJOR_W=1&lt;br /&gt;
		MINOR_W=10&lt;br /&gt;
&lt;br /&gt;
		semverParse $version&lt;br /&gt;
&lt;br /&gt;
		shouldWarn=0&lt;br /&gt;
		if [ $major -lt $MAJOR_W ]; then&lt;br /&gt;
			shouldWarn=1&lt;br /&gt;
		fi&lt;br /&gt;
&lt;br /&gt;
		if [ $major -le $MAJOR_W ] &amp;amp;&amp;amp; [ $minor -lt $MINOR_W ]; then&lt;br /&gt;
			shouldWarn=1&lt;br /&gt;
		fi&lt;br /&gt;
&lt;br /&gt;
		cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			Warning: the &amp;quot;docker&amp;quot; command appears to already exist on this system.&lt;br /&gt;
&lt;br /&gt;
			If you already have Docker installed, this script can cause trouble, which is&lt;br /&gt;
			why we're displaying this warning and provide the opportunity to cancel the&lt;br /&gt;
			installation.&lt;br /&gt;
&lt;br /&gt;
			If you installed the current Docker package using this script and are using it&lt;br /&gt;
		EOF&lt;br /&gt;
&lt;br /&gt;
		if [ $shouldWarn -eq 1 ]; then&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			again to update Docker, we urge you to migrate your image store before upgrading&lt;br /&gt;
			to v1.10+.&lt;br /&gt;
&lt;br /&gt;
			You can find instructions for this here:&lt;br /&gt;
			https://github.com/docker/docker/wiki/Engine-v1.10.0-content-addressability-migration&lt;br /&gt;
			EOF&lt;br /&gt;
		else&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			again to update Docker, you can safely ignore this message.&lt;br /&gt;
			EOF&lt;br /&gt;
		fi&lt;br /&gt;
&lt;br /&gt;
		cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
&lt;br /&gt;
			You may press Ctrl+C now to abort this script.&lt;br /&gt;
		EOF&lt;br /&gt;
		( set -x; sleep 20 )&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	user=&amp;quot;$(id -un 2&amp;gt;/dev/null || true)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	sh_c='sh -c'&lt;br /&gt;
	if [ &amp;quot;$user&amp;quot; != 'root' ]; then&lt;br /&gt;
		if command_exists sudo; then&lt;br /&gt;
			sh_c='sudo -E sh -c'&lt;br /&gt;
		elif command_exists su; then&lt;br /&gt;
			sh_c='su -c'&lt;br /&gt;
		else&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			Error: this installer needs the ability to run commands as root.&lt;br /&gt;
			We are unable to find either &amp;quot;sudo&amp;quot; or &amp;quot;su&amp;quot; available to make this happen.&lt;br /&gt;
			EOF&lt;br /&gt;
			exit 1&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	curl=''&lt;br /&gt;
	if command_exists curl; then&lt;br /&gt;
		curl='curl -sSL'&lt;br /&gt;
	elif command_exists wget; then&lt;br /&gt;
		curl='wget -qO-'&lt;br /&gt;
	elif command_exists busybox &amp;amp;&amp;amp; busybox --list-modules | grep -q wget; then&lt;br /&gt;
		curl='busybox wget -qO-'&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	# check to see which repo they are trying to install from&lt;br /&gt;
	repo='main'&lt;br /&gt;
	if [ &amp;quot;https://test.docker.com/&amp;quot; = &amp;quot;$url&amp;quot; ]; then&lt;br /&gt;
		repo='testing'&lt;br /&gt;
	elif [ &amp;quot;https://experimental.docker.com/&amp;quot; = &amp;quot;$url&amp;quot; ]; then&lt;br /&gt;
		repo='experimental'&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	# perform some very rudimentary platform detection&lt;br /&gt;
	lsb_dist=''&lt;br /&gt;
	dist_version=''&lt;br /&gt;
	if command_exists lsb_release; then&lt;br /&gt;
		lsb_dist=&amp;quot;$(lsb_release -si)&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/lsb-release ]; then&lt;br /&gt;
		lsb_dist=&amp;quot;$(. /etc/lsb-release &amp;amp;&amp;amp; echo &amp;quot;$DISTRIB_ID&amp;quot;)&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/debian_version ]; then&lt;br /&gt;
		lsb_dist='debian'&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/fedora-release ]; then&lt;br /&gt;
		lsb_dist='fedora'&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/oracle-release ]; then&lt;br /&gt;
		lsb_dist='oracleserver'&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ]; then&lt;br /&gt;
		if [ -r /etc/centos-release ] || [ -r /etc/redhat-release ]; then&lt;br /&gt;
			lsb_dist='centos'&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/os-release ]; then&lt;br /&gt;
		lsb_dist=&amp;quot;$(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$ID&amp;quot;)&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	lsb_dist=&amp;quot;$(echo &amp;quot;$lsb_dist&amp;quot; | tr '[:upper:]' '[:lower:]')&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	case &amp;quot;$lsb_dist&amp;quot; in&lt;br /&gt;
&lt;br /&gt;
		ubuntu)&lt;br /&gt;
			if command_exists lsb_release; then&lt;br /&gt;
				dist_version=&amp;quot;$(lsb_release --codename | cut -f2)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
			if [ -z &amp;quot;$dist_version&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/lsb-release ]; then&lt;br /&gt;
				dist_version=&amp;quot;$(. /etc/lsb-release &amp;amp;&amp;amp; echo &amp;quot;$DISTRIB_CODENAME&amp;quot;)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		debian)&lt;br /&gt;
			dist_version=&amp;quot;$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')&amp;quot;&lt;br /&gt;
			case &amp;quot;$dist_version&amp;quot; in&lt;br /&gt;
				8)&lt;br /&gt;
					dist_version=&amp;quot;jessie&amp;quot;&lt;br /&gt;
				;;&lt;br /&gt;
				7)&lt;br /&gt;
					dist_version=&amp;quot;wheezy&amp;quot;&lt;br /&gt;
				;;&lt;br /&gt;
			esac&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		oracleserver)&lt;br /&gt;
			# need to switch lsb_dist to match yum repo URL&lt;br /&gt;
			lsb_dist=&amp;quot;oraclelinux&amp;quot;&lt;br /&gt;
			dist_version=&amp;quot;$(rpm -q --whatprovides redhat-release --queryformat &amp;quot;%{VERSION}\n&amp;quot; | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')&amp;quot;&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		fedora|centos)&lt;br /&gt;
			dist_version=&amp;quot;$(rpm -q --whatprovides redhat-release --queryformat &amp;quot;%{VERSION}\n&amp;quot; | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')&amp;quot;&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		*)&lt;br /&gt;
			if command_exists lsb_release; then&lt;br /&gt;
				dist_version=&amp;quot;$(lsb_release --codename | cut -f2)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
			if [ -z &amp;quot;$dist_version&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/os-release ]; then&lt;br /&gt;
				dist_version=&amp;quot;$(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_ID&amp;quot;)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	esac&lt;br /&gt;
&lt;br /&gt;
	# Check if this is a forked Linux distro&lt;br /&gt;
	check_forked&lt;br /&gt;
&lt;br /&gt;
	# Run setup for each distro accordingly&lt;br /&gt;
	case &amp;quot;$lsb_dist&amp;quot; in&lt;br /&gt;
		amzn)&lt;br /&gt;
			(&lt;br /&gt;
			set -x&lt;br /&gt;
			$sh_c 'sleep 3; yum -y -q install docker'&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		'opensuse project'|opensuse)&lt;br /&gt;
			echo 'Going to perform the following operations:'&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				echo '  * add repository obs://Virtualization:containers'&lt;br /&gt;
			fi&lt;br /&gt;
			echo '  * install Docker'&lt;br /&gt;
			$sh_c 'echo &amp;quot;Press CTRL-C to abort&amp;quot;; sleep 3'&lt;br /&gt;
&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				# install experimental packages from OBS://Virtualization:containers&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					zypper -n ar -f obs://Virtualization:containers Virtualization:containers&lt;br /&gt;
					rpm_import_repository_key 55A0B34D49501BB7CA474F5AA193FBB572174FC2&lt;br /&gt;
				)&lt;br /&gt;
			fi&lt;br /&gt;
			(&lt;br /&gt;
				set -x&lt;br /&gt;
				zypper -n install docker&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
		'suse linux'|sle[sd])&lt;br /&gt;
			echo 'Going to perform the following operations:'&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				echo '  * add repository obs://Virtualization:containers'&lt;br /&gt;
				echo '  * install experimental Docker using packages NOT supported by SUSE'&lt;br /&gt;
			else&lt;br /&gt;
				echo '  * add the &amp;quot;Containers&amp;quot; module'&lt;br /&gt;
				echo '  * install Docker using packages supported by SUSE'&lt;br /&gt;
			fi&lt;br /&gt;
			$sh_c 'echo &amp;quot;Press CTRL-C to abort&amp;quot;; sleep 3'&lt;br /&gt;
&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				# install experimental packages from OBS://Virtualization:containers&lt;br /&gt;
				echo &amp;gt;&amp;amp;2 'Warning: installing experimental packages from OBS, these packages are NOT supported by SUSE'&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					zypper -n ar -f obs://Virtualization:containers/SLE_12 Virtualization:containers&lt;br /&gt;
					rpm_import_repository_key 55A0B34D49501BB7CA474F5AA193FBB572174FC2&lt;br /&gt;
				)&lt;br /&gt;
			else&lt;br /&gt;
				# Add the containers module&lt;br /&gt;
				# Note well-1: the SLE machine must already be registered against SUSE Customer Center&lt;br /&gt;
				# Note well-2: the `-r &amp;quot;&amp;quot;` is required to workaround a known issue of SUSEConnect&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					SUSEConnect -p sle-module-containers/12/x86_64 -r &amp;quot;&amp;quot;&lt;br /&gt;
				)&lt;br /&gt;
			fi&lt;br /&gt;
			(&lt;br /&gt;
				set -x&lt;br /&gt;
				zypper -n install docker&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		ubuntu|debian)&lt;br /&gt;
			export DEBIAN_FRONTEND=noninteractive&lt;br /&gt;
&lt;br /&gt;
			did_apt_get_update=&lt;br /&gt;
			apt_get_update() {&lt;br /&gt;
				if [ -z &amp;quot;$did_apt_get_update&amp;quot; ]; then&lt;br /&gt;
					( set -x; $sh_c 'sleep 3; apt-get update' )&lt;br /&gt;
					did_apt_get_update=1&lt;br /&gt;
				fi&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			# aufs is preferred over devicemapper; try to ensure the driver is available.&lt;br /&gt;
			if ! grep -q aufs /proc/filesystems &amp;amp;&amp;amp; ! $sh_c 'modprobe aufs'; then&lt;br /&gt;
				if uname -r | grep -q -- '-generic' &amp;amp;&amp;amp; dpkg -l 'linux-image-*-generic' | grep -qE '^ii|^hi' 2&amp;gt;/dev/null; then&lt;br /&gt;
					kern_extras=&amp;quot;linux-image-extra-$(uname -r) linux-image-extra-virtual&amp;quot;&lt;br /&gt;
&lt;br /&gt;
					apt_get_update&lt;br /&gt;
					( set -x; $sh_c 'sleep 3; apt-get install -y -q '&amp;quot;$kern_extras&amp;quot; ) || true&lt;br /&gt;
&lt;br /&gt;
					if ! grep -q aufs /proc/filesystems &amp;amp;&amp;amp; ! $sh_c 'modprobe aufs'; then&lt;br /&gt;
						echo &amp;gt;&amp;amp;2 'Warning: tried to install '&amp;quot;$kern_extras&amp;quot;' (for AUFS)'&lt;br /&gt;
						echo &amp;gt;&amp;amp;2 ' but we still have no AUFS.  Docker may not work. Proceeding anyways!'&lt;br /&gt;
						( set -x; sleep 10 )&lt;br /&gt;
					fi&lt;br /&gt;
				else&lt;br /&gt;
					echo &amp;gt;&amp;amp;2 'Warning: current kernel is not supported by the linux-image-extra-virtual'&lt;br /&gt;
					echo &amp;gt;&amp;amp;2 ' package.  We have no AUFS support.  Consider installing the packages'&lt;br /&gt;
					echo &amp;gt;&amp;amp;2 ' linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.'&lt;br /&gt;
					( set -x; sleep 10 )&lt;br /&gt;
				fi&lt;br /&gt;
			fi&lt;br /&gt;
&lt;br /&gt;
			# install apparmor utils if they're missing and apparmor is enabled in the kernel&lt;br /&gt;
			# otherwise Docker will fail to start&lt;br /&gt;
			if [ &amp;quot;$(cat /sys/module/apparmor/parameters/enabled 2&amp;gt;/dev/null)&amp;quot; = 'Y' ]; then&lt;br /&gt;
				if command -v apparmor_parser &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
					echo 'apparmor is enabled in the kernel and apparmor utils were already installed'&lt;br /&gt;
				else&lt;br /&gt;
					echo 'apparmor is enabled in the kernel, but apparmor_parser missing'&lt;br /&gt;
					apt_get_update&lt;br /&gt;
					( set -x; $sh_c 'sleep 3; apt-get install -y -q apparmor' )&lt;br /&gt;
				fi&lt;br /&gt;
			fi&lt;br /&gt;
&lt;br /&gt;
			if [ ! -e /usr/lib/apt/methods/https ]; then&lt;br /&gt;
				apt_get_update&lt;br /&gt;
				( set -x; $sh_c 'sleep 3; apt-get install -y -q apt-transport-https ca-certificates' )&lt;br /&gt;
			fi&lt;br /&gt;
			if [ -z &amp;quot;$curl&amp;quot; ]; then&lt;br /&gt;
				apt_get_update&lt;br /&gt;
				( set -x; $sh_c 'sleep 3; apt-get install -y -q curl ca-certificates' )&lt;br /&gt;
				curl='curl -sSL'&lt;br /&gt;
			fi&lt;br /&gt;
			(&lt;br /&gt;
			set -x&lt;br /&gt;
			$sh_c &amp;quot;apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D&amp;quot;&lt;br /&gt;
			$sh_c &amp;quot;mkdir -p /etc/apt/sources.list.d&amp;quot;&lt;br /&gt;
			$sh_c &amp;quot;echo deb [arch=$(dpkg --print-architecture)] https://apt.dockerproject.org/repo ${lsb_dist}-${dist_version} ${repo} &amp;gt; /etc/apt/sources.list.d/docker.list&amp;quot;&lt;br /&gt;
			$sh_c 'sleep 3; apt-get update; apt-get install -y -q docker-engine'&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		fedora|centos|oraclelinux)&lt;br /&gt;
			$sh_c &amp;quot;cat &amp;gt;/etc/yum.repos.d/docker-${repo}.repo&amp;quot; &amp;lt;&amp;lt;-EOF&lt;br /&gt;
			[docker-${repo}-repo]&lt;br /&gt;
			name=Docker ${repo} Repository&lt;br /&gt;
			baseurl=https://yum.dockerproject.org/repo/${repo}/${lsb_dist}/${dist_version}&lt;br /&gt;
			enabled=1&lt;br /&gt;
			gpgcheck=1&lt;br /&gt;
			gpgkey=https://yum.dockerproject.org/gpg&lt;br /&gt;
			EOF&lt;br /&gt;
			if [ &amp;quot;$lsb_dist&amp;quot; = &amp;quot;fedora&amp;quot; ] &amp;amp;&amp;amp; [ &amp;quot;$dist_version&amp;quot; -ge &amp;quot;22&amp;quot; ]; then&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					$sh_c 'sleep 3; dnf -y -q install docker-engine'&lt;br /&gt;
				)&lt;br /&gt;
			else&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					$sh_c 'sleep 3; yum -y -q install docker-engine'&lt;br /&gt;
				)&lt;br /&gt;
			fi&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
		gentoo)&lt;br /&gt;
			if [ &amp;quot;$url&amp;quot; = &amp;quot;https://test.docker.com/&amp;quot; ]; then&lt;br /&gt;
				# intentionally mixed spaces and tabs here -- tabs are stripped by &amp;quot;&amp;lt;&amp;lt;-'EOF'&amp;quot;, spaces are kept in the output&lt;br /&gt;
				cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
&lt;br /&gt;
				  You appear to be trying to install the latest nightly build in Gentoo.'&lt;br /&gt;
				  The portage tree should contain the latest stable release of Docker, but'&lt;br /&gt;
				  if you want something more recent, you can always use the live ebuild'&lt;br /&gt;
				  provided in the &amp;quot;docker&amp;quot; overlay available via layman.  For more'&lt;br /&gt;
				  instructions, please see the following URL:'&lt;br /&gt;
&lt;br /&gt;
				    https://github.com/tianon/docker-overlay#using-this-overlay'&lt;br /&gt;
&lt;br /&gt;
				  After adding the &amp;quot;docker&amp;quot; overlay, you should be able to:'&lt;br /&gt;
&lt;br /&gt;
				    emerge -av =app-emulation/docker-9999'&lt;br /&gt;
&lt;br /&gt;
				EOF&lt;br /&gt;
				exit 1&lt;br /&gt;
			fi&lt;br /&gt;
&lt;br /&gt;
			(&lt;br /&gt;
				set -x&lt;br /&gt;
				$sh_c 'sleep 3; emerge app-emulation/docker'&lt;br /&gt;
			)&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
	esac&lt;br /&gt;
&lt;br /&gt;
	# intentionally mixed spaces and tabs here -- tabs are stripped by &amp;quot;&amp;lt;&amp;lt;-'EOF'&amp;quot;, spaces are kept in the output&lt;br /&gt;
	cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
&lt;br /&gt;
	  Either your platform is not easily detectable, is not supported by this&lt;br /&gt;
	  installer script (yet - PRs welcome! [hack/install.sh]), or does not yet have&lt;br /&gt;
	  a package for Docker.  Please visit the following URL for more detailed&lt;br /&gt;
	  installation instructions:&lt;br /&gt;
&lt;br /&gt;
	    https://docs.docker.com/engine/installation/&lt;br /&gt;
&lt;br /&gt;
	EOF&lt;br /&gt;
	exit 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# wrapped up in a function so that we have some protection against only getting&lt;br /&gt;
# half the file during &amp;quot;curl | sh&amp;quot;&lt;br /&gt;
do_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>175.196.251.92</name></author>
	</entry>
	<entry>
		<id>https://old.wiki.ubuntu-kr.org/index.php?title=Docker_%EC%B5%9C%EC%8B%A0_%EB%B2%84%EC%A0%84_%EC%84%A4%EC%B9%98_/_PPA_%EC%84%A4%EC%A0%95&amp;diff=3874</id>
		<title>Docker 최신 버전 설치 / PPA 설정</title>
		<link rel="alternate" type="text/html" href="https://old.wiki.ubuntu-kr.org/index.php?title=Docker_%EC%B5%9C%EC%8B%A0_%EB%B2%84%EC%A0%84_%EC%84%A4%EC%B9%98_/_PPA_%EC%84%A4%EC%A0%95&amp;diff=3874"/>
		<updated>2016-08-02T15:59:21Z</updated>

		<summary type="html">&lt;p&gt;175.196.251.92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;확인된 시스템: Ubuntu 14.04.3 LTS&lt;br /&gt;
Ubuntu 16.04.1 LTS&lt;br /&gt;
Windows 10 professional&lt;br /&gt;
&lt;br /&gt;
Docker 1.11 부터 Docker for Linux, Windows, Mac에 대대적인 기능 변화가 있었다.&lt;br /&gt;
이제 Docker를 Windows, Mac, Linux에서 좀 더 편하고 빠르게 쓸 수 있도록 된 것도 그중 하나이다.&lt;br /&gt;
&lt;br /&gt;
2가지 방법들을 적는데 Linux는 모두 할 수 있음을 알린다.&lt;br /&gt;
출처: docs.docker.com&lt;br /&gt;
&lt;br /&gt;
#1 (Windows, Mac, Linux)&lt;br /&gt;
&lt;br /&gt;
먼저 Windows, Mac은 설치용 파일을 따로 받게 된다.&lt;br /&gt;
&lt;br /&gt;
*Windows (2016-8-3일 기준)&lt;br /&gt;
&lt;br /&gt;
Windows는 필수 사양이 7, 8, 8.1, 10 이면서 64-bit 이여야 한다. 권장은 pro 또는 enterprise 버젼. 만약 pro 또는 enterprise 가 아니라면 다른 것을 설치하여야 한다.&lt;br /&gt;
&lt;br /&gt;
Windows는 반드시 Hyper-V가 이용 가능한 Windows 10 pro 또는 enterprise 버젼으로 쓰기 바란다.&lt;br /&gt;
만약 그렇지 않는다면 Docker Toolbox, Oracle Virtualbox 라는 것들을 설치하여야 한다.&lt;br /&gt;
&lt;br /&gt;
Pro 또는 Enterprise: Hyper-V를 검색하고 만약 검색하고도 보이지 않는다면 설치가 안되있다는 뜻이니 반드시 '''Windows 기능 켜기/끄기'''에서 Hyper-V를 활성화 해야 한다.&lt;br /&gt;
&lt;br /&gt;
''여기서 부터 7이상 이면서 64-bit 운영체제 이기만 하면 된다.''&lt;br /&gt;
&lt;br /&gt;
이제 모두 준비 됬으면 설치한다. 설치 파일(확장자가 msi 이다.)을 사용해 설치.&lt;br /&gt;
&lt;br /&gt;
설치가 다되면 이제 남은 건 확인하는 것이다.&lt;br /&gt;
cmd, powershell 또는 기타 등등의 Shell을 연다.&lt;br /&gt;
&lt;br /&gt;
다음 명령어를 입력한다.&lt;br /&gt;
&amp;lt;code&amp;gt;docker run hello-world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
반드시 어떤 가이드 같은 것들이 출력되어야 한다.&lt;br /&gt;
만약 그렇지 않는다면 문제가 있는 것이다.&lt;br /&gt;
&lt;br /&gt;
출력이 되면 정상적으로 모든 것들이 설치가 된 것이다.&lt;br /&gt;
기본 설정이 Windows 시작시 Docker 시작이므로 그냥 쓰면 된다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Mac OS X&lt;br /&gt;
Mac은 확인을 하지 않아 적지를 않는다. 하지만 링크를 적어둔다.&lt;br /&gt;
https://docs.docker.com/toolbox/toolbox_install_mac/&lt;br /&gt;
&lt;br /&gt;
* Linux&lt;br /&gt;
&lt;br /&gt;
웬만한 Linux 라면 다 된다. --&amp;gt; https://docs.docker.com/engine/installation/linux/&lt;br /&gt;
여기서는 Ubuntu 배포판만 적어둔다. 하지만 위 링크에서 웬만한 배포판에 최적화된 설치 가이드가 주어지니 그걸 읽으면 그렇게 어렵진 않다.&lt;br /&gt;
&lt;br /&gt;
먼저 Kernel이 3.10 이상의 것이여야 한다. 최신 Ubuntu라면 4.x 이상이니 확인할 필요는 없다.&lt;br /&gt;
Ubuntu 12.04 LTS 이상이면 되므로 최신을 쓰면 이 역시 확인할 필요는 없다.&lt;br /&gt;
&lt;br /&gt;
apt-transport-https 와 ca-certificates, 이 둘이 설치되어야 하는데 이건 운영체제 설치과정에서 주어지므로 하지 않아도 된다. 허나 만약 설치가 안되 있으면 설치한다.&lt;br /&gt;
&lt;br /&gt;
터미널을 열고 그 다음 명령어를 입력한다. --&amp;gt; &amp;lt;code&amp;gt; sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
명령어를 입력하고 해당 키가 추가되면 &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt;에서 docker.list 라는 것을 편집해야 한다.&lt;br /&gt;
자신이 쓰고자 하는 편집기를 관리자 권한에서 실행하여 편집하면 된다. 없는 경우도 있는데 만들면 된다.&lt;br /&gt;
&lt;br /&gt;
예시: &amp;lt;code&amp;gt;sudo gedit /etc/apt/sources.list.d/docker.list&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
넣어야 할 내용은 다음 링크를 따라가면 된다. --&amp;gt; https://docs.docker.com/engine/installation/linux/ubuntulinux/#/update-your-apt-sources&lt;br /&gt;
버젼 별로 있으니 해당 내용을 읽고 자신 버젼에 맞게 넣으면 끝.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; 로 설정들을 전부 설치. 만약 lxc-docker 가 있으면 그걸 &amp;lt;code&amp;gt;purge&amp;lt;/code&amp;gt; 명령어로 지운다.&lt;br /&gt;
&lt;br /&gt;
이것으로 준비가 되었다. 12.04 LTS는 다음 링크 --&amp;gt; https://docs.docker.com/engine/installation/linux/ubuntulinux/#/prerequisites-by-ubuntu-version&lt;br /&gt;
&lt;br /&gt;
설치하는 단계이다. &amp;lt;code&amp;gt;sudo apt-get install docker-engine&amp;lt;/code&amp;gt; 를 입력하고 &amp;lt;code&amp;gt; sudo docker run hello-world&amp;lt;/code&amp;gt;로 설치된 docker가 돌아가는지 확인한다.&lt;br /&gt;
만약 안되면 &amp;lt;code&amp;gt; sudo service docker start&amp;lt;/code&amp;gt; 로 service를 돌려야 한다.&lt;br /&gt;
&lt;br /&gt;
그래도 안되면 무언가 잘못된 것이니 구글링 하는 것이 좋다.&lt;br /&gt;
&lt;br /&gt;
이제 확인 단계는 Windows 처럼 똑같이 무언가 나올 것이다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
정상 설치가 되었는지 여부를 보는 방법&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo docker run hello-world &amp;lt;/code&amp;gt; 를 입력하고 나서 다음 내용이 나오면 정상 설치된 것.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from Docker!&lt;br /&gt;
This message shows that your installation appears to be working correctly.&lt;br /&gt;
&lt;br /&gt;
To generate this message, Docker took the following steps:&lt;br /&gt;
 1. The Docker client contacted the Docker daemon.&lt;br /&gt;
 2. The Docker daemon pulled the &amp;quot;hello-world&amp;quot; image from the Docker Hub.&lt;br /&gt;
 3. The Docker daemon created a new container from that image which runs the&lt;br /&gt;
    executable that produces the output you are currently reading.&lt;br /&gt;
 4. The Docker daemon streamed that output to the Docker client, which sent it&lt;br /&gt;
    to your terminal.&lt;br /&gt;
&lt;br /&gt;
To try something more ambitious, you can run an Ubuntu container with:&lt;br /&gt;
 $ docker run -it ubuntu bash&lt;br /&gt;
&lt;br /&gt;
Share images, automate workflows, and more with a free Docker Hub account:&lt;br /&gt;
 https://hub.docker.com&lt;br /&gt;
&lt;br /&gt;
For more examples and ideas, visit:&lt;br /&gt;
 https://docs.docker.com/engine/userguide/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ docker images hello-world&lt;br /&gt;
REPOSITORY   TAG     IMAGE ID      SIZE&lt;br /&gt;
hello-world  latest  c54a2cc56cbb  1.848 kB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#2 (Linux에만 해당)&lt;br /&gt;
&lt;br /&gt;
이 내용을 따라하기 위해 먼저 필요한 것: curl이 설치된 Ubuntu, 관리자 권한을 얻기 위한 정보&lt;br /&gt;
(curl은 &amp;quot;sudo apt-get install curl&amp;quot; 명령을 사용하여 설치 가능)&lt;br /&gt;
&lt;br /&gt;
다음 명령어를 실행하여 Docker 팀이 제공하는 설치 스크립트를 실행하면,&lt;br /&gt;
Docker 팀이 관리하는 PPA가 추가되고 최신 버전의 Docker가 설치된다.&lt;br /&gt;
&lt;br /&gt;
이 명령을 실행하기 위해서는 관리자 권한이 필요하기 때문에, 관리자 계정의 비밀번호를 입력하여야 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ curl -sSL https://get.docker.com/ubuntu/ | sudo sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
상기 주소에서 제공하던 배포판 별 설치 스크립트를 아래 주소로 통합하여 배포판을 자동 인식함.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ curl -sSL https://get.docker.com/ | sudo sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
실행되는 스크립트의 내용은 아래와 같다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
set -e&lt;br /&gt;
#&lt;br /&gt;
# This script is meant for quick &amp;amp; easy install via:&lt;br /&gt;
#   'curl -sSL https://get.docker.com/ | sh'&lt;br /&gt;
# or:&lt;br /&gt;
#   'wget -qO- https://get.docker.com/ | sh'&lt;br /&gt;
#&lt;br /&gt;
# For test builds (ie. release candidates):&lt;br /&gt;
#   'curl -fsSL https://test.docker.com/ | sh'&lt;br /&gt;
# or:&lt;br /&gt;
#   'wget -qO- https://test.docker.com/ | sh'&lt;br /&gt;
#&lt;br /&gt;
# For experimental builds:&lt;br /&gt;
#   'curl -fsSL https://experimental.docker.com/ | sh'&lt;br /&gt;
# or:&lt;br /&gt;
#   'wget -qO- https://experimental.docker.com/ | sh'&lt;br /&gt;
#&lt;br /&gt;
# Docker Maintainers:&lt;br /&gt;
#   To update this script on https://get.docker.com,&lt;br /&gt;
#   use hack/release.sh during a normal release,&lt;br /&gt;
#   or the following one-liner for script hotfixes:&lt;br /&gt;
#     s3cmd put --acl-public -P hack/install.sh s3://get.docker.com/index&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
url='https://get.docker.com/'&lt;br /&gt;
&lt;br /&gt;
command_exists() {&lt;br /&gt;
	command -v &amp;quot;$@&amp;quot; &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo_docker_as_nonroot() {&lt;br /&gt;
	if command_exists docker &amp;amp;&amp;amp; [ -e /var/run/docker.sock ]; then&lt;br /&gt;
		(&lt;br /&gt;
			set -x&lt;br /&gt;
			$sh_c 'docker version'&lt;br /&gt;
		) || true&lt;br /&gt;
	fi&lt;br /&gt;
	your_user=your-user&lt;br /&gt;
	[ &amp;quot;$user&amp;quot; != 'root' ] &amp;amp;&amp;amp; your_user=&amp;quot;$user&amp;quot;&lt;br /&gt;
	# intentionally mixed spaces and tabs here -- tabs are stripped by &amp;quot;&amp;lt;&amp;lt;-EOF&amp;quot;, spaces are kept in the output&lt;br /&gt;
	cat &amp;lt;&amp;lt;-EOF&lt;br /&gt;
&lt;br /&gt;
	If you would like to use Docker as a non-root user, you should now consider&lt;br /&gt;
	adding your user to the &amp;quot;docker&amp;quot; group with something like:&lt;br /&gt;
&lt;br /&gt;
	  sudo usermod -aG docker $your_user&lt;br /&gt;
&lt;br /&gt;
	Remember that you will have to log out and back in for this to take effect!&lt;br /&gt;
&lt;br /&gt;
	EOF&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Check if this is a forked Linux distro&lt;br /&gt;
check_forked() {&lt;br /&gt;
&lt;br /&gt;
	# Check for lsb_release command existence, it usually exists in forked distros&lt;br /&gt;
	if command_exists lsb_release; then&lt;br /&gt;
		# Check if the `-u` option is supported&lt;br /&gt;
		set +e&lt;br /&gt;
		lsb_release -a -u &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
		lsb_release_exit_code=$?&lt;br /&gt;
		set -e&lt;br /&gt;
&lt;br /&gt;
		# Check if the command has exited successfully, it means we're in a forked distro&lt;br /&gt;
		if [ &amp;quot;$lsb_release_exit_code&amp;quot; = &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
			# Print info about current distro&lt;br /&gt;
			cat &amp;lt;&amp;lt;-EOF&lt;br /&gt;
			You're using '$lsb_dist' version '$dist_version'.&lt;br /&gt;
			EOF&lt;br /&gt;
&lt;br /&gt;
			# Get the upstream release info&lt;br /&gt;
			lsb_dist=$(lsb_release -a -u 2&amp;gt;&amp;amp;1 | tr '[:upper:]' '[:lower:]' | grep -E 'id' | cut -d ':' -f 2 | tr -d '[[:space:]]')&lt;br /&gt;
			dist_version=$(lsb_release -a -u 2&amp;gt;&amp;amp;1 | tr '[:upper:]' '[:lower:]' | grep -E 'codename' | cut -d ':' -f 2 | tr -d '[[:space:]]')&lt;br /&gt;
&lt;br /&gt;
			# Print info about upstream distro&lt;br /&gt;
			cat &amp;lt;&amp;lt;-EOF&lt;br /&gt;
			Upstream release is '$lsb_dist' version '$dist_version'.&lt;br /&gt;
			EOF&lt;br /&gt;
		else&lt;br /&gt;
			if [ -r /etc/debian_version ] &amp;amp;&amp;amp; [ &amp;quot;$lsb_dist&amp;quot; != &amp;quot;ubuntu&amp;quot; ]; then&lt;br /&gt;
				# We're Debian and don't even know it!&lt;br /&gt;
				lsb_dist=debian&lt;br /&gt;
				dist_version=&amp;quot;$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')&amp;quot;&lt;br /&gt;
				case &amp;quot;$dist_version&amp;quot; in&lt;br /&gt;
					8|'Kali Linux 2')&lt;br /&gt;
						dist_version=&amp;quot;jessie&amp;quot;&lt;br /&gt;
					;;&lt;br /&gt;
					7)&lt;br /&gt;
						dist_version=&amp;quot;wheezy&amp;quot;&lt;br /&gt;
					;;&lt;br /&gt;
				esac&lt;br /&gt;
			fi&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
rpm_import_repository_key() {&lt;br /&gt;
	local key=$1; shift&lt;br /&gt;
	local tmpdir=$(mktemp -d)&lt;br /&gt;
	chmod 600 &amp;quot;$tmpdir&amp;quot;&lt;br /&gt;
	gpg --homedir &amp;quot;$tmpdir&amp;quot; --keyserver ha.pool.sks-keyservers.net --recv-keys &amp;quot;$key&amp;quot;&lt;br /&gt;
	gpg --homedir &amp;quot;$tmpdir&amp;quot; --export --armor &amp;quot;$key&amp;quot; &amp;gt; &amp;quot;$tmpdir&amp;quot;/repo.key&lt;br /&gt;
	rpm --import &amp;quot;$tmpdir&amp;quot;/repo.key&lt;br /&gt;
	rm -rf &amp;quot;$tmpdir&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
semverParse() {&lt;br /&gt;
	major=&amp;quot;${1%%.*}&amp;quot;&lt;br /&gt;
	minor=&amp;quot;${1#$major.}&amp;quot;&lt;br /&gt;
	minor=&amp;quot;${minor%%.*}&amp;quot;&lt;br /&gt;
	patch=&amp;quot;${1#$major.$minor.}&amp;quot;&lt;br /&gt;
	patch=&amp;quot;${patch%%[-.]*}&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
	case &amp;quot;$(uname -m)&amp;quot; in&lt;br /&gt;
		*64)&lt;br /&gt;
			;;&lt;br /&gt;
		*)&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			Error: you are not using a 64bit platform.&lt;br /&gt;
			Docker currently only supports 64bit platforms.&lt;br /&gt;
			EOF&lt;br /&gt;
			exit 1&lt;br /&gt;
			;;&lt;br /&gt;
	esac&lt;br /&gt;
&lt;br /&gt;
	if command_exists docker; then&lt;br /&gt;
		version=&amp;quot;$(docker -v | awk -F '[ ,]+' '{ print $3 }')&amp;quot;&lt;br /&gt;
		MAJOR_W=1&lt;br /&gt;
		MINOR_W=10&lt;br /&gt;
&lt;br /&gt;
		semverParse $version&lt;br /&gt;
&lt;br /&gt;
		shouldWarn=0&lt;br /&gt;
		if [ $major -lt $MAJOR_W ]; then&lt;br /&gt;
			shouldWarn=1&lt;br /&gt;
		fi&lt;br /&gt;
&lt;br /&gt;
		if [ $major -le $MAJOR_W ] &amp;amp;&amp;amp; [ $minor -lt $MINOR_W ]; then&lt;br /&gt;
			shouldWarn=1&lt;br /&gt;
		fi&lt;br /&gt;
&lt;br /&gt;
		cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			Warning: the &amp;quot;docker&amp;quot; command appears to already exist on this system.&lt;br /&gt;
&lt;br /&gt;
			If you already have Docker installed, this script can cause trouble, which is&lt;br /&gt;
			why we're displaying this warning and provide the opportunity to cancel the&lt;br /&gt;
			installation.&lt;br /&gt;
&lt;br /&gt;
			If you installed the current Docker package using this script and are using it&lt;br /&gt;
		EOF&lt;br /&gt;
&lt;br /&gt;
		if [ $shouldWarn -eq 1 ]; then&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			again to update Docker, we urge you to migrate your image store before upgrading&lt;br /&gt;
			to v1.10+.&lt;br /&gt;
&lt;br /&gt;
			You can find instructions for this here:&lt;br /&gt;
			https://github.com/docker/docker/wiki/Engine-v1.10.0-content-addressability-migration&lt;br /&gt;
			EOF&lt;br /&gt;
		else&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			again to update Docker, you can safely ignore this message.&lt;br /&gt;
			EOF&lt;br /&gt;
		fi&lt;br /&gt;
&lt;br /&gt;
		cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
&lt;br /&gt;
			You may press Ctrl+C now to abort this script.&lt;br /&gt;
		EOF&lt;br /&gt;
		( set -x; sleep 20 )&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	user=&amp;quot;$(id -un 2&amp;gt;/dev/null || true)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	sh_c='sh -c'&lt;br /&gt;
	if [ &amp;quot;$user&amp;quot; != 'root' ]; then&lt;br /&gt;
		if command_exists sudo; then&lt;br /&gt;
			sh_c='sudo -E sh -c'&lt;br /&gt;
		elif command_exists su; then&lt;br /&gt;
			sh_c='su -c'&lt;br /&gt;
		else&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			Error: this installer needs the ability to run commands as root.&lt;br /&gt;
			We are unable to find either &amp;quot;sudo&amp;quot; or &amp;quot;su&amp;quot; available to make this happen.&lt;br /&gt;
			EOF&lt;br /&gt;
			exit 1&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	curl=''&lt;br /&gt;
	if command_exists curl; then&lt;br /&gt;
		curl='curl -sSL'&lt;br /&gt;
	elif command_exists wget; then&lt;br /&gt;
		curl='wget -qO-'&lt;br /&gt;
	elif command_exists busybox &amp;amp;&amp;amp; busybox --list-modules | grep -q wget; then&lt;br /&gt;
		curl='busybox wget -qO-'&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	# check to see which repo they are trying to install from&lt;br /&gt;
	repo='main'&lt;br /&gt;
	if [ &amp;quot;https://test.docker.com/&amp;quot; = &amp;quot;$url&amp;quot; ]; then&lt;br /&gt;
		repo='testing'&lt;br /&gt;
	elif [ &amp;quot;https://experimental.docker.com/&amp;quot; = &amp;quot;$url&amp;quot; ]; then&lt;br /&gt;
		repo='experimental'&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	# perform some very rudimentary platform detection&lt;br /&gt;
	lsb_dist=''&lt;br /&gt;
	dist_version=''&lt;br /&gt;
	if command_exists lsb_release; then&lt;br /&gt;
		lsb_dist=&amp;quot;$(lsb_release -si)&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/lsb-release ]; then&lt;br /&gt;
		lsb_dist=&amp;quot;$(. /etc/lsb-release &amp;amp;&amp;amp; echo &amp;quot;$DISTRIB_ID&amp;quot;)&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/debian_version ]; then&lt;br /&gt;
		lsb_dist='debian'&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/fedora-release ]; then&lt;br /&gt;
		lsb_dist='fedora'&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/oracle-release ]; then&lt;br /&gt;
		lsb_dist='oracleserver'&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ]; then&lt;br /&gt;
		if [ -r /etc/centos-release ] || [ -r /etc/redhat-release ]; then&lt;br /&gt;
			lsb_dist='centos'&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/os-release ]; then&lt;br /&gt;
		lsb_dist=&amp;quot;$(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$ID&amp;quot;)&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	lsb_dist=&amp;quot;$(echo &amp;quot;$lsb_dist&amp;quot; | tr '[:upper:]' '[:lower:]')&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	case &amp;quot;$lsb_dist&amp;quot; in&lt;br /&gt;
&lt;br /&gt;
		ubuntu)&lt;br /&gt;
			if command_exists lsb_release; then&lt;br /&gt;
				dist_version=&amp;quot;$(lsb_release --codename | cut -f2)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
			if [ -z &amp;quot;$dist_version&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/lsb-release ]; then&lt;br /&gt;
				dist_version=&amp;quot;$(. /etc/lsb-release &amp;amp;&amp;amp; echo &amp;quot;$DISTRIB_CODENAME&amp;quot;)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		debian)&lt;br /&gt;
			dist_version=&amp;quot;$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')&amp;quot;&lt;br /&gt;
			case &amp;quot;$dist_version&amp;quot; in&lt;br /&gt;
				8)&lt;br /&gt;
					dist_version=&amp;quot;jessie&amp;quot;&lt;br /&gt;
				;;&lt;br /&gt;
				7)&lt;br /&gt;
					dist_version=&amp;quot;wheezy&amp;quot;&lt;br /&gt;
				;;&lt;br /&gt;
			esac&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		oracleserver)&lt;br /&gt;
			# need to switch lsb_dist to match yum repo URL&lt;br /&gt;
			lsb_dist=&amp;quot;oraclelinux&amp;quot;&lt;br /&gt;
			dist_version=&amp;quot;$(rpm -q --whatprovides redhat-release --queryformat &amp;quot;%{VERSION}\n&amp;quot; | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')&amp;quot;&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		fedora|centos)&lt;br /&gt;
			dist_version=&amp;quot;$(rpm -q --whatprovides redhat-release --queryformat &amp;quot;%{VERSION}\n&amp;quot; | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')&amp;quot;&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		*)&lt;br /&gt;
			if command_exists lsb_release; then&lt;br /&gt;
				dist_version=&amp;quot;$(lsb_release --codename | cut -f2)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
			if [ -z &amp;quot;$dist_version&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/os-release ]; then&lt;br /&gt;
				dist_version=&amp;quot;$(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_ID&amp;quot;)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	esac&lt;br /&gt;
&lt;br /&gt;
	# Check if this is a forked Linux distro&lt;br /&gt;
	check_forked&lt;br /&gt;
&lt;br /&gt;
	# Run setup for each distro accordingly&lt;br /&gt;
	case &amp;quot;$lsb_dist&amp;quot; in&lt;br /&gt;
		amzn)&lt;br /&gt;
			(&lt;br /&gt;
			set -x&lt;br /&gt;
			$sh_c 'sleep 3; yum -y -q install docker'&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		'opensuse project'|opensuse)&lt;br /&gt;
			echo 'Going to perform the following operations:'&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				echo '  * add repository obs://Virtualization:containers'&lt;br /&gt;
			fi&lt;br /&gt;
			echo '  * install Docker'&lt;br /&gt;
			$sh_c 'echo &amp;quot;Press CTRL-C to abort&amp;quot;; sleep 3'&lt;br /&gt;
&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				# install experimental packages from OBS://Virtualization:containers&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					zypper -n ar -f obs://Virtualization:containers Virtualization:containers&lt;br /&gt;
					rpm_import_repository_key 55A0B34D49501BB7CA474F5AA193FBB572174FC2&lt;br /&gt;
				)&lt;br /&gt;
			fi&lt;br /&gt;
			(&lt;br /&gt;
				set -x&lt;br /&gt;
				zypper -n install docker&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
		'suse linux'|sle[sd])&lt;br /&gt;
			echo 'Going to perform the following operations:'&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				echo '  * add repository obs://Virtualization:containers'&lt;br /&gt;
				echo '  * install experimental Docker using packages NOT supported by SUSE'&lt;br /&gt;
			else&lt;br /&gt;
				echo '  * add the &amp;quot;Containers&amp;quot; module'&lt;br /&gt;
				echo '  * install Docker using packages supported by SUSE'&lt;br /&gt;
			fi&lt;br /&gt;
			$sh_c 'echo &amp;quot;Press CTRL-C to abort&amp;quot;; sleep 3'&lt;br /&gt;
&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				# install experimental packages from OBS://Virtualization:containers&lt;br /&gt;
				echo &amp;gt;&amp;amp;2 'Warning: installing experimental packages from OBS, these packages are NOT supported by SUSE'&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					zypper -n ar -f obs://Virtualization:containers/SLE_12 Virtualization:containers&lt;br /&gt;
					rpm_import_repository_key 55A0B34D49501BB7CA474F5AA193FBB572174FC2&lt;br /&gt;
				)&lt;br /&gt;
			else&lt;br /&gt;
				# Add the containers module&lt;br /&gt;
				# Note well-1: the SLE machine must already be registered against SUSE Customer Center&lt;br /&gt;
				# Note well-2: the `-r &amp;quot;&amp;quot;` is required to workaround a known issue of SUSEConnect&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					SUSEConnect -p sle-module-containers/12/x86_64 -r &amp;quot;&amp;quot;&lt;br /&gt;
				)&lt;br /&gt;
			fi&lt;br /&gt;
			(&lt;br /&gt;
				set -x&lt;br /&gt;
				zypper -n install docker&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		ubuntu|debian)&lt;br /&gt;
			export DEBIAN_FRONTEND=noninteractive&lt;br /&gt;
&lt;br /&gt;
			did_apt_get_update=&lt;br /&gt;
			apt_get_update() {&lt;br /&gt;
				if [ -z &amp;quot;$did_apt_get_update&amp;quot; ]; then&lt;br /&gt;
					( set -x; $sh_c 'sleep 3; apt-get update' )&lt;br /&gt;
					did_apt_get_update=1&lt;br /&gt;
				fi&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			# aufs is preferred over devicemapper; try to ensure the driver is available.&lt;br /&gt;
			if ! grep -q aufs /proc/filesystems &amp;amp;&amp;amp; ! $sh_c 'modprobe aufs'; then&lt;br /&gt;
				if uname -r | grep -q -- '-generic' &amp;amp;&amp;amp; dpkg -l 'linux-image-*-generic' | grep -qE '^ii|^hi' 2&amp;gt;/dev/null; then&lt;br /&gt;
					kern_extras=&amp;quot;linux-image-extra-$(uname -r) linux-image-extra-virtual&amp;quot;&lt;br /&gt;
&lt;br /&gt;
					apt_get_update&lt;br /&gt;
					( set -x; $sh_c 'sleep 3; apt-get install -y -q '&amp;quot;$kern_extras&amp;quot; ) || true&lt;br /&gt;
&lt;br /&gt;
					if ! grep -q aufs /proc/filesystems &amp;amp;&amp;amp; ! $sh_c 'modprobe aufs'; then&lt;br /&gt;
						echo &amp;gt;&amp;amp;2 'Warning: tried to install '&amp;quot;$kern_extras&amp;quot;' (for AUFS)'&lt;br /&gt;
						echo &amp;gt;&amp;amp;2 ' but we still have no AUFS.  Docker may not work. Proceeding anyways!'&lt;br /&gt;
						( set -x; sleep 10 )&lt;br /&gt;
					fi&lt;br /&gt;
				else&lt;br /&gt;
					echo &amp;gt;&amp;amp;2 'Warning: current kernel is not supported by the linux-image-extra-virtual'&lt;br /&gt;
					echo &amp;gt;&amp;amp;2 ' package.  We have no AUFS support.  Consider installing the packages'&lt;br /&gt;
					echo &amp;gt;&amp;amp;2 ' linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.'&lt;br /&gt;
					( set -x; sleep 10 )&lt;br /&gt;
				fi&lt;br /&gt;
			fi&lt;br /&gt;
&lt;br /&gt;
			# install apparmor utils if they're missing and apparmor is enabled in the kernel&lt;br /&gt;
			# otherwise Docker will fail to start&lt;br /&gt;
			if [ &amp;quot;$(cat /sys/module/apparmor/parameters/enabled 2&amp;gt;/dev/null)&amp;quot; = 'Y' ]; then&lt;br /&gt;
				if command -v apparmor_parser &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
					echo 'apparmor is enabled in the kernel and apparmor utils were already installed'&lt;br /&gt;
				else&lt;br /&gt;
					echo 'apparmor is enabled in the kernel, but apparmor_parser missing'&lt;br /&gt;
					apt_get_update&lt;br /&gt;
					( set -x; $sh_c 'sleep 3; apt-get install -y -q apparmor' )&lt;br /&gt;
				fi&lt;br /&gt;
			fi&lt;br /&gt;
&lt;br /&gt;
			if [ ! -e /usr/lib/apt/methods/https ]; then&lt;br /&gt;
				apt_get_update&lt;br /&gt;
				( set -x; $sh_c 'sleep 3; apt-get install -y -q apt-transport-https ca-certificates' )&lt;br /&gt;
			fi&lt;br /&gt;
			if [ -z &amp;quot;$curl&amp;quot; ]; then&lt;br /&gt;
				apt_get_update&lt;br /&gt;
				( set -x; $sh_c 'sleep 3; apt-get install -y -q curl ca-certificates' )&lt;br /&gt;
				curl='curl -sSL'&lt;br /&gt;
			fi&lt;br /&gt;
			(&lt;br /&gt;
			set -x&lt;br /&gt;
			$sh_c &amp;quot;apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D&amp;quot;&lt;br /&gt;
			$sh_c &amp;quot;mkdir -p /etc/apt/sources.list.d&amp;quot;&lt;br /&gt;
			$sh_c &amp;quot;echo deb [arch=$(dpkg --print-architecture)] https://apt.dockerproject.org/repo ${lsb_dist}-${dist_version} ${repo} &amp;gt; /etc/apt/sources.list.d/docker.list&amp;quot;&lt;br /&gt;
			$sh_c 'sleep 3; apt-get update; apt-get install -y -q docker-engine'&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		fedora|centos|oraclelinux)&lt;br /&gt;
			$sh_c &amp;quot;cat &amp;gt;/etc/yum.repos.d/docker-${repo}.repo&amp;quot; &amp;lt;&amp;lt;-EOF&lt;br /&gt;
			[docker-${repo}-repo]&lt;br /&gt;
			name=Docker ${repo} Repository&lt;br /&gt;
			baseurl=https://yum.dockerproject.org/repo/${repo}/${lsb_dist}/${dist_version}&lt;br /&gt;
			enabled=1&lt;br /&gt;
			gpgcheck=1&lt;br /&gt;
			gpgkey=https://yum.dockerproject.org/gpg&lt;br /&gt;
			EOF&lt;br /&gt;
			if [ &amp;quot;$lsb_dist&amp;quot; = &amp;quot;fedora&amp;quot; ] &amp;amp;&amp;amp; [ &amp;quot;$dist_version&amp;quot; -ge &amp;quot;22&amp;quot; ]; then&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					$sh_c 'sleep 3; dnf -y -q install docker-engine'&lt;br /&gt;
				)&lt;br /&gt;
			else&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					$sh_c 'sleep 3; yum -y -q install docker-engine'&lt;br /&gt;
				)&lt;br /&gt;
			fi&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
		gentoo)&lt;br /&gt;
			if [ &amp;quot;$url&amp;quot; = &amp;quot;https://test.docker.com/&amp;quot; ]; then&lt;br /&gt;
				# intentionally mixed spaces and tabs here -- tabs are stripped by &amp;quot;&amp;lt;&amp;lt;-'EOF'&amp;quot;, spaces are kept in the output&lt;br /&gt;
				cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
&lt;br /&gt;
				  You appear to be trying to install the latest nightly build in Gentoo.'&lt;br /&gt;
				  The portage tree should contain the latest stable release of Docker, but'&lt;br /&gt;
				  if you want something more recent, you can always use the live ebuild'&lt;br /&gt;
				  provided in the &amp;quot;docker&amp;quot; overlay available via layman.  For more'&lt;br /&gt;
				  instructions, please see the following URL:'&lt;br /&gt;
&lt;br /&gt;
				    https://github.com/tianon/docker-overlay#using-this-overlay'&lt;br /&gt;
&lt;br /&gt;
				  After adding the &amp;quot;docker&amp;quot; overlay, you should be able to:'&lt;br /&gt;
&lt;br /&gt;
				    emerge -av =app-emulation/docker-9999'&lt;br /&gt;
&lt;br /&gt;
				EOF&lt;br /&gt;
				exit 1&lt;br /&gt;
			fi&lt;br /&gt;
&lt;br /&gt;
			(&lt;br /&gt;
				set -x&lt;br /&gt;
				$sh_c 'sleep 3; emerge app-emulation/docker'&lt;br /&gt;
			)&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
	esac&lt;br /&gt;
&lt;br /&gt;
	# intentionally mixed spaces and tabs here -- tabs are stripped by &amp;quot;&amp;lt;&amp;lt;-'EOF'&amp;quot;, spaces are kept in the output&lt;br /&gt;
	cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
&lt;br /&gt;
	  Either your platform is not easily detectable, is not supported by this&lt;br /&gt;
	  installer script (yet - PRs welcome! [hack/install.sh]), or does not yet have&lt;br /&gt;
	  a package for Docker.  Please visit the following URL for more detailed&lt;br /&gt;
	  installation instructions:&lt;br /&gt;
&lt;br /&gt;
	    https://docs.docker.com/engine/installation/&lt;br /&gt;
&lt;br /&gt;
	EOF&lt;br /&gt;
	exit 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# wrapped up in a function so that we have some protection against only getting&lt;br /&gt;
# half the file during &amp;quot;curl | sh&amp;quot;&lt;br /&gt;
do_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>175.196.251.92</name></author>
	</entry>
	<entry>
		<id>https://old.wiki.ubuntu-kr.org/index.php?title=Docker_%EC%B5%9C%EC%8B%A0_%EB%B2%84%EC%A0%84_%EC%84%A4%EC%B9%98_/_PPA_%EC%84%A4%EC%A0%95&amp;diff=3873</id>
		<title>Docker 최신 버전 설치 / PPA 설정</title>
		<link rel="alternate" type="text/html" href="https://old.wiki.ubuntu-kr.org/index.php?title=Docker_%EC%B5%9C%EC%8B%A0_%EB%B2%84%EC%A0%84_%EC%84%A4%EC%B9%98_/_PPA_%EC%84%A4%EC%A0%95&amp;diff=3873"/>
		<updated>2016-08-02T15:56:23Z</updated>

		<summary type="html">&lt;p&gt;175.196.251.92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;확인된 시스템: Ubuntu 14.04.3 LTS&lt;br /&gt;
Ubuntu 16.04.1 LTS&lt;br /&gt;
Windows 10 professional&lt;br /&gt;
&lt;br /&gt;
Docker 1.11 부터 Docker for Linux, Windows, Mac에 대대적인 기능 변화가 있었다.&lt;br /&gt;
이제 Docker를 Windows, Mac, Linux에서 좀 더 편하고 빠르게 쓸 수 있도록 된 것도 그중 하나이다.&lt;br /&gt;
&lt;br /&gt;
2가지 방법들을 적는데 Linux는 모두 할 수 있음을 알린다.&lt;br /&gt;
출처: docs.docker.com&lt;br /&gt;
&lt;br /&gt;
#1 (Windows, Mac, Linux)&lt;br /&gt;
먼저 Windows, Mac은 설치용 파일을 따로 받게 된다.&lt;br /&gt;
&lt;br /&gt;
*Windows (2016-8-3일 기준)&lt;br /&gt;
Windows는 필수 사양이 7, 8, 8.1, 10 이면서 64-bit 이여야 한다. 권장은 pro 또는 enterprise 버젼. 만약 pro 또는 enterprise 가 아니라면 다른 것을 설치하여야 한다.&lt;br /&gt;
&lt;br /&gt;
Windows는 반드시 Hyper-V가 이용 가능한 Windows 10 pro 또는 enterprise 버젼으로 쓰기 바란다.&lt;br /&gt;
만약 그렇지 않는다면 Docker Toolbox, Oracle Virtualbox 라는 것들을 설치하여야 한다.&lt;br /&gt;
&lt;br /&gt;
Pro 또는 Enterprise: Hyper-V를 검색하고 만약 검색하고도 보이지 않는다면 설치가 안되있다는 뜻이니 반드시 '''Windows 기능 켜기/끄기'''에서 Hyper-V를 활성화 해야 한다.&lt;br /&gt;
&lt;br /&gt;
''여기서 부터 7이상 이면서 64-bit 운영체제 이기만 하면 된다.''&lt;br /&gt;
이제 모두 준비 됬으면 설치한다. 설치 파일(확장자가 msi 이다.)을 사용해 설치.&lt;br /&gt;
&lt;br /&gt;
설치가 다되면 이제 남은 건 확인하는 것이다.&lt;br /&gt;
cmd, powershell 또는 기타 등등의 Shell을 연다.&lt;br /&gt;
&lt;br /&gt;
다음 명령어를 입력한다.&lt;br /&gt;
&amp;lt;code&amp;gt;docker run hello-world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
반드시 어떤 가이드 같은 것들이 출력되어야 한다.&lt;br /&gt;
만약 그렇지 않는다면 문제가 있는 것이다.&lt;br /&gt;
&lt;br /&gt;
출력이 되면 정상적으로 모든 것들이 설치가 된 것이다.&lt;br /&gt;
기본 설정이 Windows 시작시 Docker 시작이므로 그냥 쓰면 된다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Mac OS X&lt;br /&gt;
Mac은 확인을 하지 않아 적지를 않는다. 하지만 링크를 적어둔다.&lt;br /&gt;
https://docs.docker.com/toolbox/toolbox_install_mac/&lt;br /&gt;
&lt;br /&gt;
* Linux&lt;br /&gt;
&lt;br /&gt;
웬만한 Linux 라면 다 된다. --&amp;gt; https://docs.docker.com/engine/installation/linux/&lt;br /&gt;
여기서는 Ubuntu 배포판만 적어둔다. 하지만 위 링크에서 웬만한 배포판에 최적화된 설치 가이드가 주어지니 그걸 읽으면 그렇게 어렵진 않다.&lt;br /&gt;
&lt;br /&gt;
먼저 Kernel이 3.10 이상의 것이여야 한다. 최신 Ubuntu라면 4.x 이상이니 확인할 필요는 없다.&lt;br /&gt;
Ubuntu 12.04 LTS 이상이면 되므로 최신을 쓰면 이 역시 확인할 필요는 없다.&lt;br /&gt;
&lt;br /&gt;
apt-transport-https 와 ca-certificates, 이 둘이 설치되어야 하는데 이건 운영체제 설치과정에서 주어지므로 하지 않아도 된다. 허나 만약 설치가 안되 있으면 설치한다.&lt;br /&gt;
&lt;br /&gt;
터미널을 열고 그 다음 명령어를 입력한다. --&amp;gt; &amp;lt;code&amp;gt; sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
명령어를 입력하고 해당 키가 추가되면 &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt;에서 docker.list 라는 것을 편집해야 한다.&lt;br /&gt;
자신이 쓰고자 하는 편집기를 관리자 권한에서 실행하여 편집하면 된다. 없는 경우도 있는데 만들면 된다.&lt;br /&gt;
&lt;br /&gt;
예시: &amp;lt;code&amp;gt;sudo gedit /etc/apt/sources.list.d/docker.list&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
넣어야 할 내용은 다음 링크를 따라가면 된다. --&amp;gt; https://docs.docker.com/engine/installation/linux/ubuntulinux/#/update-your-apt-sources&lt;br /&gt;
버젼 별로 있으니 해당 내용을 읽고 자신 버젼에 맞게 넣으면 끝.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; 로 설정들을 전부 설치. 만약 lxc-docker 가 있으면 그걸 &amp;lt;code&amp;gt;purge&amp;lt;/code&amp;gt; 명령어로 지운다.&lt;br /&gt;
&lt;br /&gt;
이것으로 준비가 되었다. 12.04 LTS는 다음 링크 --&amp;gt; https://docs.docker.com/engine/installation/linux/ubuntulinux/#/prerequisites-by-ubuntu-version&lt;br /&gt;
&lt;br /&gt;
설치하는 단계이다. &amp;lt;code&amp;gt;sudo apt-get install docker-engine&amp;lt;/code&amp;gt; 를 입력하고 &amp;lt;code&amp;gt; sudo docker run hello-world&amp;lt;/code&amp;gt;로 설치된 docker가 돌아가는지 확인한다.&lt;br /&gt;
만약 안되면 &amp;lt;code&amp;gt; sudo service docker start&amp;lt;/code&amp;gt; 로 service를 돌려야 한다.&lt;br /&gt;
&lt;br /&gt;
그래도 안되면 무언가 잘못된 것이니 구글링 하는 것이 좋다.&lt;br /&gt;
&lt;br /&gt;
이제 확인 단계는 Windows 처럼 똑같이 무언가 나올 것이다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
정상 설치가 되었는지 여부를 보는 방법&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo docker run hello-world&amp;lt;/code&amp;gt; 를 입력하고 나서 다음 내용이 나오면 정상 설치된 것.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;$ docker run hello-world&lt;br /&gt;
&lt;br /&gt;
Hello from Docker!&lt;br /&gt;
This message shows that your installation appears to be working correctly.&lt;br /&gt;
&lt;br /&gt;
To generate this message, Docker took the following steps:&lt;br /&gt;
 1. The Docker client contacted the Docker daemon.&lt;br /&gt;
 2. The Docker daemon pulled the &amp;quot;hello-world&amp;quot; image from the Docker Hub.&lt;br /&gt;
 3. The Docker daemon created a new container from that image which runs the&lt;br /&gt;
    executable that produces the output you are currently reading.&lt;br /&gt;
 4. The Docker daemon streamed that output to the Docker client, which sent it&lt;br /&gt;
    to your terminal.&lt;br /&gt;
&lt;br /&gt;
To try something more ambitious, you can run an Ubuntu container with:&lt;br /&gt;
 $ docker run -it ubuntu bash&lt;br /&gt;
&lt;br /&gt;
Share images, automate workflows, and more with a free Docker Hub account:&lt;br /&gt;
 https://hub.docker.com&lt;br /&gt;
&lt;br /&gt;
For more examples and ideas, visit:&lt;br /&gt;
 https://docs.docker.com/engine/userguide/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ docker images hello-world&lt;br /&gt;
REPOSITORY   TAG     IMAGE ID      SIZE&lt;br /&gt;
hello-world  latest  c54a2cc56cbb  1.848 kB&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#2 (Linux에만 해당)&lt;br /&gt;
&lt;br /&gt;
이 내용을 따라하기 위해 먼저 필요한 것: curl이 설치된 Ubuntu, 관리자 권한을 얻기 위한 정보&lt;br /&gt;
(curl은 &amp;quot;sudo apt-get install curl&amp;quot; 명령을 사용하여 설치 가능)&lt;br /&gt;
&lt;br /&gt;
다음 명령어를 실행하여 Docker 팀이 제공하는 설치 스크립트를 실행하면,&lt;br /&gt;
Docker 팀이 관리하는 PPA가 추가되고 최신 버전의 Docker가 설치된다.&lt;br /&gt;
&lt;br /&gt;
이 명령을 실행하기 위해서는 관리자 권한이 필요하기 때문에, 관리자 계정의 비밀번호를 입력하여야 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ curl -sSL https://get.docker.com/ubuntu/ | sudo sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
상기 주소에서 제공하던 배포판 별 설치 스크립트를 아래 주소로 통합하여 배포판을 자동 인식함.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ curl -sSL https://get.docker.com/ | sudo sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
실행되는 스크립트의 내용은 아래와 같다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
set -e&lt;br /&gt;
#&lt;br /&gt;
# This script is meant for quick &amp;amp; easy install via:&lt;br /&gt;
#   'curl -sSL https://get.docker.com/ | sh'&lt;br /&gt;
# or:&lt;br /&gt;
#   'wget -qO- https://get.docker.com/ | sh'&lt;br /&gt;
#&lt;br /&gt;
# For test builds (ie. release candidates):&lt;br /&gt;
#   'curl -fsSL https://test.docker.com/ | sh'&lt;br /&gt;
# or:&lt;br /&gt;
#   'wget -qO- https://test.docker.com/ | sh'&lt;br /&gt;
#&lt;br /&gt;
# For experimental builds:&lt;br /&gt;
#   'curl -fsSL https://experimental.docker.com/ | sh'&lt;br /&gt;
# or:&lt;br /&gt;
#   'wget -qO- https://experimental.docker.com/ | sh'&lt;br /&gt;
#&lt;br /&gt;
# Docker Maintainers:&lt;br /&gt;
#   To update this script on https://get.docker.com,&lt;br /&gt;
#   use hack/release.sh during a normal release,&lt;br /&gt;
#   or the following one-liner for script hotfixes:&lt;br /&gt;
#     s3cmd put --acl-public -P hack/install.sh s3://get.docker.com/index&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
url='https://get.docker.com/'&lt;br /&gt;
&lt;br /&gt;
command_exists() {&lt;br /&gt;
	command -v &amp;quot;$@&amp;quot; &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo_docker_as_nonroot() {&lt;br /&gt;
	if command_exists docker &amp;amp;&amp;amp; [ -e /var/run/docker.sock ]; then&lt;br /&gt;
		(&lt;br /&gt;
			set -x&lt;br /&gt;
			$sh_c 'docker version'&lt;br /&gt;
		) || true&lt;br /&gt;
	fi&lt;br /&gt;
	your_user=your-user&lt;br /&gt;
	[ &amp;quot;$user&amp;quot; != 'root' ] &amp;amp;&amp;amp; your_user=&amp;quot;$user&amp;quot;&lt;br /&gt;
	# intentionally mixed spaces and tabs here -- tabs are stripped by &amp;quot;&amp;lt;&amp;lt;-EOF&amp;quot;, spaces are kept in the output&lt;br /&gt;
	cat &amp;lt;&amp;lt;-EOF&lt;br /&gt;
&lt;br /&gt;
	If you would like to use Docker as a non-root user, you should now consider&lt;br /&gt;
	adding your user to the &amp;quot;docker&amp;quot; group with something like:&lt;br /&gt;
&lt;br /&gt;
	  sudo usermod -aG docker $your_user&lt;br /&gt;
&lt;br /&gt;
	Remember that you will have to log out and back in for this to take effect!&lt;br /&gt;
&lt;br /&gt;
	EOF&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Check if this is a forked Linux distro&lt;br /&gt;
check_forked() {&lt;br /&gt;
&lt;br /&gt;
	# Check for lsb_release command existence, it usually exists in forked distros&lt;br /&gt;
	if command_exists lsb_release; then&lt;br /&gt;
		# Check if the `-u` option is supported&lt;br /&gt;
		set +e&lt;br /&gt;
		lsb_release -a -u &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
		lsb_release_exit_code=$?&lt;br /&gt;
		set -e&lt;br /&gt;
&lt;br /&gt;
		# Check if the command has exited successfully, it means we're in a forked distro&lt;br /&gt;
		if [ &amp;quot;$lsb_release_exit_code&amp;quot; = &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
			# Print info about current distro&lt;br /&gt;
			cat &amp;lt;&amp;lt;-EOF&lt;br /&gt;
			You're using '$lsb_dist' version '$dist_version'.&lt;br /&gt;
			EOF&lt;br /&gt;
&lt;br /&gt;
			# Get the upstream release info&lt;br /&gt;
			lsb_dist=$(lsb_release -a -u 2&amp;gt;&amp;amp;1 | tr '[:upper:]' '[:lower:]' | grep -E 'id' | cut -d ':' -f 2 | tr -d '[[:space:]]')&lt;br /&gt;
			dist_version=$(lsb_release -a -u 2&amp;gt;&amp;amp;1 | tr '[:upper:]' '[:lower:]' | grep -E 'codename' | cut -d ':' -f 2 | tr -d '[[:space:]]')&lt;br /&gt;
&lt;br /&gt;
			# Print info about upstream distro&lt;br /&gt;
			cat &amp;lt;&amp;lt;-EOF&lt;br /&gt;
			Upstream release is '$lsb_dist' version '$dist_version'.&lt;br /&gt;
			EOF&lt;br /&gt;
		else&lt;br /&gt;
			if [ -r /etc/debian_version ] &amp;amp;&amp;amp; [ &amp;quot;$lsb_dist&amp;quot; != &amp;quot;ubuntu&amp;quot; ]; then&lt;br /&gt;
				# We're Debian and don't even know it!&lt;br /&gt;
				lsb_dist=debian&lt;br /&gt;
				dist_version=&amp;quot;$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')&amp;quot;&lt;br /&gt;
				case &amp;quot;$dist_version&amp;quot; in&lt;br /&gt;
					8|'Kali Linux 2')&lt;br /&gt;
						dist_version=&amp;quot;jessie&amp;quot;&lt;br /&gt;
					;;&lt;br /&gt;
					7)&lt;br /&gt;
						dist_version=&amp;quot;wheezy&amp;quot;&lt;br /&gt;
					;;&lt;br /&gt;
				esac&lt;br /&gt;
			fi&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
rpm_import_repository_key() {&lt;br /&gt;
	local key=$1; shift&lt;br /&gt;
	local tmpdir=$(mktemp -d)&lt;br /&gt;
	chmod 600 &amp;quot;$tmpdir&amp;quot;&lt;br /&gt;
	gpg --homedir &amp;quot;$tmpdir&amp;quot; --keyserver ha.pool.sks-keyservers.net --recv-keys &amp;quot;$key&amp;quot;&lt;br /&gt;
	gpg --homedir &amp;quot;$tmpdir&amp;quot; --export --armor &amp;quot;$key&amp;quot; &amp;gt; &amp;quot;$tmpdir&amp;quot;/repo.key&lt;br /&gt;
	rpm --import &amp;quot;$tmpdir&amp;quot;/repo.key&lt;br /&gt;
	rm -rf &amp;quot;$tmpdir&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
semverParse() {&lt;br /&gt;
	major=&amp;quot;${1%%.*}&amp;quot;&lt;br /&gt;
	minor=&amp;quot;${1#$major.}&amp;quot;&lt;br /&gt;
	minor=&amp;quot;${minor%%.*}&amp;quot;&lt;br /&gt;
	patch=&amp;quot;${1#$major.$minor.}&amp;quot;&lt;br /&gt;
	patch=&amp;quot;${patch%%[-.]*}&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_install() {&lt;br /&gt;
	case &amp;quot;$(uname -m)&amp;quot; in&lt;br /&gt;
		*64)&lt;br /&gt;
			;;&lt;br /&gt;
		*)&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			Error: you are not using a 64bit platform.&lt;br /&gt;
			Docker currently only supports 64bit platforms.&lt;br /&gt;
			EOF&lt;br /&gt;
			exit 1&lt;br /&gt;
			;;&lt;br /&gt;
	esac&lt;br /&gt;
&lt;br /&gt;
	if command_exists docker; then&lt;br /&gt;
		version=&amp;quot;$(docker -v | awk -F '[ ,]+' '{ print $3 }')&amp;quot;&lt;br /&gt;
		MAJOR_W=1&lt;br /&gt;
		MINOR_W=10&lt;br /&gt;
&lt;br /&gt;
		semverParse $version&lt;br /&gt;
&lt;br /&gt;
		shouldWarn=0&lt;br /&gt;
		if [ $major -lt $MAJOR_W ]; then&lt;br /&gt;
			shouldWarn=1&lt;br /&gt;
		fi&lt;br /&gt;
&lt;br /&gt;
		if [ $major -le $MAJOR_W ] &amp;amp;&amp;amp; [ $minor -lt $MINOR_W ]; then&lt;br /&gt;
			shouldWarn=1&lt;br /&gt;
		fi&lt;br /&gt;
&lt;br /&gt;
		cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			Warning: the &amp;quot;docker&amp;quot; command appears to already exist on this system.&lt;br /&gt;
&lt;br /&gt;
			If you already have Docker installed, this script can cause trouble, which is&lt;br /&gt;
			why we're displaying this warning and provide the opportunity to cancel the&lt;br /&gt;
			installation.&lt;br /&gt;
&lt;br /&gt;
			If you installed the current Docker package using this script and are using it&lt;br /&gt;
		EOF&lt;br /&gt;
&lt;br /&gt;
		if [ $shouldWarn -eq 1 ]; then&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			again to update Docker, we urge you to migrate your image store before upgrading&lt;br /&gt;
			to v1.10+.&lt;br /&gt;
&lt;br /&gt;
			You can find instructions for this here:&lt;br /&gt;
			https://github.com/docker/docker/wiki/Engine-v1.10.0-content-addressability-migration&lt;br /&gt;
			EOF&lt;br /&gt;
		else&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			again to update Docker, you can safely ignore this message.&lt;br /&gt;
			EOF&lt;br /&gt;
		fi&lt;br /&gt;
&lt;br /&gt;
		cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
&lt;br /&gt;
			You may press Ctrl+C now to abort this script.&lt;br /&gt;
		EOF&lt;br /&gt;
		( set -x; sleep 20 )&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	user=&amp;quot;$(id -un 2&amp;gt;/dev/null || true)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	sh_c='sh -c'&lt;br /&gt;
	if [ &amp;quot;$user&amp;quot; != 'root' ]; then&lt;br /&gt;
		if command_exists sudo; then&lt;br /&gt;
			sh_c='sudo -E sh -c'&lt;br /&gt;
		elif command_exists su; then&lt;br /&gt;
			sh_c='su -c'&lt;br /&gt;
		else&lt;br /&gt;
			cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
			Error: this installer needs the ability to run commands as root.&lt;br /&gt;
			We are unable to find either &amp;quot;sudo&amp;quot; or &amp;quot;su&amp;quot; available to make this happen.&lt;br /&gt;
			EOF&lt;br /&gt;
			exit 1&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	curl=''&lt;br /&gt;
	if command_exists curl; then&lt;br /&gt;
		curl='curl -sSL'&lt;br /&gt;
	elif command_exists wget; then&lt;br /&gt;
		curl='wget -qO-'&lt;br /&gt;
	elif command_exists busybox &amp;amp;&amp;amp; busybox --list-modules | grep -q wget; then&lt;br /&gt;
		curl='busybox wget -qO-'&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	# check to see which repo they are trying to install from&lt;br /&gt;
	repo='main'&lt;br /&gt;
	if [ &amp;quot;https://test.docker.com/&amp;quot; = &amp;quot;$url&amp;quot; ]; then&lt;br /&gt;
		repo='testing'&lt;br /&gt;
	elif [ &amp;quot;https://experimental.docker.com/&amp;quot; = &amp;quot;$url&amp;quot; ]; then&lt;br /&gt;
		repo='experimental'&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	# perform some very rudimentary platform detection&lt;br /&gt;
	lsb_dist=''&lt;br /&gt;
	dist_version=''&lt;br /&gt;
	if command_exists lsb_release; then&lt;br /&gt;
		lsb_dist=&amp;quot;$(lsb_release -si)&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/lsb-release ]; then&lt;br /&gt;
		lsb_dist=&amp;quot;$(. /etc/lsb-release &amp;amp;&amp;amp; echo &amp;quot;$DISTRIB_ID&amp;quot;)&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/debian_version ]; then&lt;br /&gt;
		lsb_dist='debian'&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/fedora-release ]; then&lt;br /&gt;
		lsb_dist='fedora'&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/oracle-release ]; then&lt;br /&gt;
		lsb_dist='oracleserver'&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ]; then&lt;br /&gt;
		if [ -r /etc/centos-release ] || [ -r /etc/redhat-release ]; then&lt;br /&gt;
			lsb_dist='centos'&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
	if [ -z &amp;quot;$lsb_dist&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/os-release ]; then&lt;br /&gt;
		lsb_dist=&amp;quot;$(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$ID&amp;quot;)&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	lsb_dist=&amp;quot;$(echo &amp;quot;$lsb_dist&amp;quot; | tr '[:upper:]' '[:lower:]')&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	case &amp;quot;$lsb_dist&amp;quot; in&lt;br /&gt;
&lt;br /&gt;
		ubuntu)&lt;br /&gt;
			if command_exists lsb_release; then&lt;br /&gt;
				dist_version=&amp;quot;$(lsb_release --codename | cut -f2)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
			if [ -z &amp;quot;$dist_version&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/lsb-release ]; then&lt;br /&gt;
				dist_version=&amp;quot;$(. /etc/lsb-release &amp;amp;&amp;amp; echo &amp;quot;$DISTRIB_CODENAME&amp;quot;)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		debian)&lt;br /&gt;
			dist_version=&amp;quot;$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')&amp;quot;&lt;br /&gt;
			case &amp;quot;$dist_version&amp;quot; in&lt;br /&gt;
				8)&lt;br /&gt;
					dist_version=&amp;quot;jessie&amp;quot;&lt;br /&gt;
				;;&lt;br /&gt;
				7)&lt;br /&gt;
					dist_version=&amp;quot;wheezy&amp;quot;&lt;br /&gt;
				;;&lt;br /&gt;
			esac&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		oracleserver)&lt;br /&gt;
			# need to switch lsb_dist to match yum repo URL&lt;br /&gt;
			lsb_dist=&amp;quot;oraclelinux&amp;quot;&lt;br /&gt;
			dist_version=&amp;quot;$(rpm -q --whatprovides redhat-release --queryformat &amp;quot;%{VERSION}\n&amp;quot; | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')&amp;quot;&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		fedora|centos)&lt;br /&gt;
			dist_version=&amp;quot;$(rpm -q --whatprovides redhat-release --queryformat &amp;quot;%{VERSION}\n&amp;quot; | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')&amp;quot;&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
		*)&lt;br /&gt;
			if command_exists lsb_release; then&lt;br /&gt;
				dist_version=&amp;quot;$(lsb_release --codename | cut -f2)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
			if [ -z &amp;quot;$dist_version&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/os-release ]; then&lt;br /&gt;
				dist_version=&amp;quot;$(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_ID&amp;quot;)&amp;quot;&lt;br /&gt;
			fi&lt;br /&gt;
		;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	esac&lt;br /&gt;
&lt;br /&gt;
	# Check if this is a forked Linux distro&lt;br /&gt;
	check_forked&lt;br /&gt;
&lt;br /&gt;
	# Run setup for each distro accordingly&lt;br /&gt;
	case &amp;quot;$lsb_dist&amp;quot; in&lt;br /&gt;
		amzn)&lt;br /&gt;
			(&lt;br /&gt;
			set -x&lt;br /&gt;
			$sh_c 'sleep 3; yum -y -q install docker'&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		'opensuse project'|opensuse)&lt;br /&gt;
			echo 'Going to perform the following operations:'&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				echo '  * add repository obs://Virtualization:containers'&lt;br /&gt;
			fi&lt;br /&gt;
			echo '  * install Docker'&lt;br /&gt;
			$sh_c 'echo &amp;quot;Press CTRL-C to abort&amp;quot;; sleep 3'&lt;br /&gt;
&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				# install experimental packages from OBS://Virtualization:containers&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					zypper -n ar -f obs://Virtualization:containers Virtualization:containers&lt;br /&gt;
					rpm_import_repository_key 55A0B34D49501BB7CA474F5AA193FBB572174FC2&lt;br /&gt;
				)&lt;br /&gt;
			fi&lt;br /&gt;
			(&lt;br /&gt;
				set -x&lt;br /&gt;
				zypper -n install docker&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
		'suse linux'|sle[sd])&lt;br /&gt;
			echo 'Going to perform the following operations:'&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				echo '  * add repository obs://Virtualization:containers'&lt;br /&gt;
				echo '  * install experimental Docker using packages NOT supported by SUSE'&lt;br /&gt;
			else&lt;br /&gt;
				echo '  * add the &amp;quot;Containers&amp;quot; module'&lt;br /&gt;
				echo '  * install Docker using packages supported by SUSE'&lt;br /&gt;
			fi&lt;br /&gt;
			$sh_c 'echo &amp;quot;Press CTRL-C to abort&amp;quot;; sleep 3'&lt;br /&gt;
&lt;br /&gt;
			if [ &amp;quot;$repo&amp;quot; != 'main' ]; then&lt;br /&gt;
				# install experimental packages from OBS://Virtualization:containers&lt;br /&gt;
				echo &amp;gt;&amp;amp;2 'Warning: installing experimental packages from OBS, these packages are NOT supported by SUSE'&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					zypper -n ar -f obs://Virtualization:containers/SLE_12 Virtualization:containers&lt;br /&gt;
					rpm_import_repository_key 55A0B34D49501BB7CA474F5AA193FBB572174FC2&lt;br /&gt;
				)&lt;br /&gt;
			else&lt;br /&gt;
				# Add the containers module&lt;br /&gt;
				# Note well-1: the SLE machine must already be registered against SUSE Customer Center&lt;br /&gt;
				# Note well-2: the `-r &amp;quot;&amp;quot;` is required to workaround a known issue of SUSEConnect&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					SUSEConnect -p sle-module-containers/12/x86_64 -r &amp;quot;&amp;quot;&lt;br /&gt;
				)&lt;br /&gt;
			fi&lt;br /&gt;
			(&lt;br /&gt;
				set -x&lt;br /&gt;
				zypper -n install docker&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		ubuntu|debian)&lt;br /&gt;
			export DEBIAN_FRONTEND=noninteractive&lt;br /&gt;
&lt;br /&gt;
			did_apt_get_update=&lt;br /&gt;
			apt_get_update() {&lt;br /&gt;
				if [ -z &amp;quot;$did_apt_get_update&amp;quot; ]; then&lt;br /&gt;
					( set -x; $sh_c 'sleep 3; apt-get update' )&lt;br /&gt;
					did_apt_get_update=1&lt;br /&gt;
				fi&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			# aufs is preferred over devicemapper; try to ensure the driver is available.&lt;br /&gt;
			if ! grep -q aufs /proc/filesystems &amp;amp;&amp;amp; ! $sh_c 'modprobe aufs'; then&lt;br /&gt;
				if uname -r | grep -q -- '-generic' &amp;amp;&amp;amp; dpkg -l 'linux-image-*-generic' | grep -qE '^ii|^hi' 2&amp;gt;/dev/null; then&lt;br /&gt;
					kern_extras=&amp;quot;linux-image-extra-$(uname -r) linux-image-extra-virtual&amp;quot;&lt;br /&gt;
&lt;br /&gt;
					apt_get_update&lt;br /&gt;
					( set -x; $sh_c 'sleep 3; apt-get install -y -q '&amp;quot;$kern_extras&amp;quot; ) || true&lt;br /&gt;
&lt;br /&gt;
					if ! grep -q aufs /proc/filesystems &amp;amp;&amp;amp; ! $sh_c 'modprobe aufs'; then&lt;br /&gt;
						echo &amp;gt;&amp;amp;2 'Warning: tried to install '&amp;quot;$kern_extras&amp;quot;' (for AUFS)'&lt;br /&gt;
						echo &amp;gt;&amp;amp;2 ' but we still have no AUFS.  Docker may not work. Proceeding anyways!'&lt;br /&gt;
						( set -x; sleep 10 )&lt;br /&gt;
					fi&lt;br /&gt;
				else&lt;br /&gt;
					echo &amp;gt;&amp;amp;2 'Warning: current kernel is not supported by the linux-image-extra-virtual'&lt;br /&gt;
					echo &amp;gt;&amp;amp;2 ' package.  We have no AUFS support.  Consider installing the packages'&lt;br /&gt;
					echo &amp;gt;&amp;amp;2 ' linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.'&lt;br /&gt;
					( set -x; sleep 10 )&lt;br /&gt;
				fi&lt;br /&gt;
			fi&lt;br /&gt;
&lt;br /&gt;
			# install apparmor utils if they're missing and apparmor is enabled in the kernel&lt;br /&gt;
			# otherwise Docker will fail to start&lt;br /&gt;
			if [ &amp;quot;$(cat /sys/module/apparmor/parameters/enabled 2&amp;gt;/dev/null)&amp;quot; = 'Y' ]; then&lt;br /&gt;
				if command -v apparmor_parser &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
					echo 'apparmor is enabled in the kernel and apparmor utils were already installed'&lt;br /&gt;
				else&lt;br /&gt;
					echo 'apparmor is enabled in the kernel, but apparmor_parser missing'&lt;br /&gt;
					apt_get_update&lt;br /&gt;
					( set -x; $sh_c 'sleep 3; apt-get install -y -q apparmor' )&lt;br /&gt;
				fi&lt;br /&gt;
			fi&lt;br /&gt;
&lt;br /&gt;
			if [ ! -e /usr/lib/apt/methods/https ]; then&lt;br /&gt;
				apt_get_update&lt;br /&gt;
				( set -x; $sh_c 'sleep 3; apt-get install -y -q apt-transport-https ca-certificates' )&lt;br /&gt;
			fi&lt;br /&gt;
			if [ -z &amp;quot;$curl&amp;quot; ]; then&lt;br /&gt;
				apt_get_update&lt;br /&gt;
				( set -x; $sh_c 'sleep 3; apt-get install -y -q curl ca-certificates' )&lt;br /&gt;
				curl='curl -sSL'&lt;br /&gt;
			fi&lt;br /&gt;
			(&lt;br /&gt;
			set -x&lt;br /&gt;
			$sh_c &amp;quot;apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D&amp;quot;&lt;br /&gt;
			$sh_c &amp;quot;mkdir -p /etc/apt/sources.list.d&amp;quot;&lt;br /&gt;
			$sh_c &amp;quot;echo deb [arch=$(dpkg --print-architecture)] https://apt.dockerproject.org/repo ${lsb_dist}-${dist_version} ${repo} &amp;gt; /etc/apt/sources.list.d/docker.list&amp;quot;&lt;br /&gt;
			$sh_c 'sleep 3; apt-get update; apt-get install -y -q docker-engine'&lt;br /&gt;
			)&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		fedora|centos|oraclelinux)&lt;br /&gt;
			$sh_c &amp;quot;cat &amp;gt;/etc/yum.repos.d/docker-${repo}.repo&amp;quot; &amp;lt;&amp;lt;-EOF&lt;br /&gt;
			[docker-${repo}-repo]&lt;br /&gt;
			name=Docker ${repo} Repository&lt;br /&gt;
			baseurl=https://yum.dockerproject.org/repo/${repo}/${lsb_dist}/${dist_version}&lt;br /&gt;
			enabled=1&lt;br /&gt;
			gpgcheck=1&lt;br /&gt;
			gpgkey=https://yum.dockerproject.org/gpg&lt;br /&gt;
			EOF&lt;br /&gt;
			if [ &amp;quot;$lsb_dist&amp;quot; = &amp;quot;fedora&amp;quot; ] &amp;amp;&amp;amp; [ &amp;quot;$dist_version&amp;quot; -ge &amp;quot;22&amp;quot; ]; then&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					$sh_c 'sleep 3; dnf -y -q install docker-engine'&lt;br /&gt;
				)&lt;br /&gt;
			else&lt;br /&gt;
				(&lt;br /&gt;
					set -x&lt;br /&gt;
					$sh_c 'sleep 3; yum -y -q install docker-engine'&lt;br /&gt;
				)&lt;br /&gt;
			fi&lt;br /&gt;
			echo_docker_as_nonroot&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
		gentoo)&lt;br /&gt;
			if [ &amp;quot;$url&amp;quot; = &amp;quot;https://test.docker.com/&amp;quot; ]; then&lt;br /&gt;
				# intentionally mixed spaces and tabs here -- tabs are stripped by &amp;quot;&amp;lt;&amp;lt;-'EOF'&amp;quot;, spaces are kept in the output&lt;br /&gt;
				cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
&lt;br /&gt;
				  You appear to be trying to install the latest nightly build in Gentoo.'&lt;br /&gt;
				  The portage tree should contain the latest stable release of Docker, but'&lt;br /&gt;
				  if you want something more recent, you can always use the live ebuild'&lt;br /&gt;
				  provided in the &amp;quot;docker&amp;quot; overlay available via layman.  For more'&lt;br /&gt;
				  instructions, please see the following URL:'&lt;br /&gt;
&lt;br /&gt;
				    https://github.com/tianon/docker-overlay#using-this-overlay'&lt;br /&gt;
&lt;br /&gt;
				  After adding the &amp;quot;docker&amp;quot; overlay, you should be able to:'&lt;br /&gt;
&lt;br /&gt;
				    emerge -av =app-emulation/docker-9999'&lt;br /&gt;
&lt;br /&gt;
				EOF&lt;br /&gt;
				exit 1&lt;br /&gt;
			fi&lt;br /&gt;
&lt;br /&gt;
			(&lt;br /&gt;
				set -x&lt;br /&gt;
				$sh_c 'sleep 3; emerge app-emulation/docker'&lt;br /&gt;
			)&lt;br /&gt;
			exit 0&lt;br /&gt;
			;;&lt;br /&gt;
	esac&lt;br /&gt;
&lt;br /&gt;
	# intentionally mixed spaces and tabs here -- tabs are stripped by &amp;quot;&amp;lt;&amp;lt;-'EOF'&amp;quot;, spaces are kept in the output&lt;br /&gt;
	cat &amp;gt;&amp;amp;2 &amp;lt;&amp;lt;-'EOF'&lt;br /&gt;
&lt;br /&gt;
	  Either your platform is not easily detectable, is not supported by this&lt;br /&gt;
	  installer script (yet - PRs welcome! [hack/install.sh]), or does not yet have&lt;br /&gt;
	  a package for Docker.  Please visit the following URL for more detailed&lt;br /&gt;
	  installation instructions:&lt;br /&gt;
&lt;br /&gt;
	    https://docs.docker.com/engine/installation/&lt;br /&gt;
&lt;br /&gt;
	EOF&lt;br /&gt;
	exit 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# wrapped up in a function so that we have some protection against only getting&lt;br /&gt;
# half the file during &amp;quot;curl | sh&amp;quot;&lt;br /&gt;
do_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>175.196.251.92</name></author>
	</entry>
</feed>