English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Docker 이미지 사용

컨테이너를 실행할 때, 로컬에 존재하지 않는 아이콘을 사용하면 docker는 자동으로 docker 아이콘 저장소에서 다운로드합니다. 기본적으로 Docker Hub 공개 아이콘 저장소에서 다운로드합니다.

다음에 우리는 배우겠습니다:

  • 1、로컬 Docker 호스트 아이콘을 관리하고 사용

  • 2、아이콘 생성

아이콘 목록 나열

우리는 docker images 를 사용하여 로컬 호스트의 아이콘을 나열합니다.

w3codebox@w3codebox:~$ docker images           
REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 일 전          188 MB
php                 5.6                 f40e9e0f10c8        9 일 전          444.8 MB
nginx               최신              6f8d099c3adc        12 일 전         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 주 전         324.6 MB
httpd               최신             02ef73cf1bc0        3 주 전         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 주 전         136.3 MB
hello-world         최신              690ed74de00f        6 달 전        960 B
training/webapp     최신              6fae60ef3446        11 달 전       348.8 MB

각 옵션 설명:

  • REPOSITORY:아이콘의 저장소를 나타냅니다.

  • TAG:아이콘의 태그

  • IMAGE ID:아이콘 ID

  • CREATED:아이콘 생성 시간

  • SIZE:아이콘 크기

같은 저장소 소스에는 여러 태그가 있을 수 있으며, 이는 이 저장소 소스의 다른 버전을 나타냅니다. 예를 들어, ubuntu 저장소 소스에서는 다음과 같습니다: 15.10、14.04 等多个不同的版本을 사용하려면, REPOSITORY:TAG를 사용하여 다른 아이콘을 정의합니다.

따라서, 우리가 버전이15.10의 ubuntu 시스템 아이콘을 사용하여 컨테이너를 실행할 때, 명령어는 다음과 같습니다:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash 
root@d77ccb2e5cca:/#

参数说明:

  • -i인터랙티브 작업.

  • -t터미널.

  • ubuntu:15.10이란 것입니다. 이는 ubuntu를 의미합니다. 15.10 버전 아이콘을 기반으로 컨테이너를 시작합니다.

  • /bin/bash명령어는 아이콘 이름 뒤에 위치하며, 여기서는 인터랙티브 셸을 원하기 때문에 /bin/bash.

버전이 14.04 의 ubuntu 시스템 아이콘을 사용하여 컨테이너를 실행할 때, 명령어는 다음과 같습니다:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:14.04 /bin/bash 
root@:39e968165990:/#

아이콘의 버전 태그를 지정하지 않으면, 예를 들어 'ubuntu'만 사용하면 docker는 기본적으로 'ubuntu:latest' 아이콘을 사용합니다.

새로운 이미지를 pulls

로컬 호스트에서 존재하지 않는 이미지를 사용할 때 Docker는 자동으로 이 이미지를 pulls합니다. 이 이미지를 미리 pulls하려면 docker pull 명령어를 사용할 수 있습니다.

Cw3codebox@w3codebox:~$ docker pull ubuntu:13.10
13.10: 라이브러리에서 pulls/ubuntu
6599cadaf950: pulls 완료 
23eda618d451: pulls 완료 
f0be3084efe9: pulls 완료 
52de432f084b: pulls 완료 
a3됩니다95caeb02: pulls 완료 
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: ubuntu에 새로운 이미지를 pulls13.10

다운로드가 완료되면, 이 이미지를 사용하여 컨테이너를 실행할 수 있습니다.

이미지 검색

Docker Hub 웹사이트에서 이미지를 검색할 수 있습니다. Docker Hub 주소는 다음과 같습니다:https://hub.docker.com/

docker search 명령어를 사용하여 이미지를 검색할 수도 있습니다. 예를 들어, 우리는 web 서비스로 사용할 httpd 이미지를 필요로 할 때, docker search 명령어를 사용하여 httpd를 검색하여 적합한 이미지를 찾을 수 있습니다.

w3codebox@w3codebox:~$ docker search httpd

NAME: 이미지 저장소 소스 이름

DESCRIPTION: 이미지 설명

OFFICIAL: docker 공식 출시 여부

stars: Github에서 star과 같이, 좋아요, 찬성을 의미합니다.

AUTOMATED: 자동 빌드

이미지를 pulls

위의 이미지에서 httpd 공식 버전의 이미지를 사용하기로 결정했습니다. docker pull 명령어를 사용하여 이미지를 다운로드합니다.

w3codebox@w3codebox:~$ docker pull httpd
기본 태그 사용: latest
latest: 라이브러리에서 pulls/httpd
8b87079b7a06: fs 레이어를 pulls 
a3됩니다95caeb02: 다운로드 완료 
0d62됩니다9c6a76: 다운로드 완료 
a329d50397b9: 다운로드 완료 
됩니다7c1f032b5c: 대기 중 
됩니다44112b72c7: 대기 중

다운로드가 완료되면, 이 이미지를 사용할 수 있습니다.

w3codebox@w3codebox:~$ docker run httpd

이미지를 제거합니다

이미지 제거를 사용 docker rmi 명령어를 사용하여 예를 들어 hello을 제거합니다-world 이미지:

$ docker rmi hello-world

이미지 생성

우리가 Docker 이미지 저장소에서 다운로드한 이미지가 우리의 요구를 충족하지 않을 때, 우리는 다음 두 가지 방법으로 이미지를 변경할 수 있습니다.

  • 1、이미지를 업데이트한 컨테이너에서 이미지를 업데이트하고 이 이미지를 제출합니다

  • 2、Dockerfile 지시를 사용하여 새로운 이미지를 생성합니다

이미지 업데이트

이미지를 업데이트하기 전에, 우리는 이미지를 사용하여 컨테이너를 생성해야 합니다.

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/#

서비스 중인 컨테이너 내에서 사용 apt-get update 명령어로 업데이트를 수행합니다.

작업이 완료되면 exit 명령어를 입력하여 이 컨테이너를 나갑니다.

이제 ID는 e입니다218edb10161 의 컨테이너는 우리의 요구에 따라 변경된 컨테이너입니다. 우리는 컨테이너 복제를 제출하려면 docker commit 명령어를 사용할 수 있습니다.

w3codebox@w3codebox:~$ docker commit -m="has update" -a="w3codebox" e218edb10161 w3codebox/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8

각 파라미터 설명:

  • -m: 제출된 설명 정보

  • -a: 이미지 작성자를 지정합니다

  • e218edb10161:컨테이너 ID

  • w3codebox/ubuntu:v2: 목표 이미지 이름을 지정할 수 있습니다

우리는 docker images 명령어를 사용하여 우리의 새로운 이미지를 확인합니다 w3codebox/ubuntu:v2

w3codebox@w3codebox:~$ docker images
REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
w3codebox/ubuntu       v2                  70bf1840fd7c        15 seconds ago      158.5 MB
ubuntu              14.04               90d5884b1ee0        5 일 전          188 MB
php                 5.6                 f40e9e0f10c8        9 일 전          444.8 MB
nginx               최신              6f8d099c3adc        12 일 전         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 주 전         324.6 MB
httpd               최신             02ef73cf1bc0        3 주 전         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 주 전         136.3 MB
hello-world         최신              690ed74de00f        6 달 전        960 B
training/webapp     최신              6fae60ef3446        12 달 전       348.8 MB

우리의 새로운 이미지를 사용하여 w3codebox/ubuntu 를 사용하여 컨테이너를 시작합니다

w3codebox@w3codebox:~$ docker run -t -i w3codebox/ubuntu:v2 /bin/bash                            
root@:1a9fbdeb5da3:/#

이미지 빌드

우리는 명령어 docker build , 새로운 이미지를 만들기 위해부터 시작합니다. 이를 위해, 우리는 Docker가 이미지를 어떻게 빌드할지 알려주는 지시를 포함한 Dockerfile 파일을 생성해야 합니다.

w3codebox@w3codebox:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "[email protected]"
RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd w3codebox
RUN     /bin/echo 'w3codebox:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

각 지시는 이미지에 새로운 레이어를 생성하며, 각 지시의 프리픽스는 대문자여야 합니다.

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

w3codebox@w3codebox:~$ docker build -t w3codebox/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "[email protected]"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd w3codebox
......

参数说明:

  • -t :指定要创建的目标镜像名

  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec

w3codebox@w3codebox:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
w3codebox/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB
w3codebox/ubuntu       v2                  70bf1840fd7c        17 시간 전         158.5 MB
ubuntu              14.04               90d5884b1ee0        6 일 전           188 MB
php                 5.6                 f40e9e0f10c8        10 일 전          444.8 MB
nginx               최신              6f8d099c3adc        12 일 전          182.7 MB
mysql               5.6                 f2e8d6c772c0        3 주 전          324.6 MB
httpd               최신             02ef73cf1bc0        3 주 전          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 주 전          136.3 MB
hello-world         최신              690ed74de00f        6 달 전         960 B
centos              6.7                 d95b5ca17cc3        6 달 전         190.6 MB
training/webapp     최신              6fae60ef3446        12 달 전        348.8 MB

새 이미지를 사용하여 컨테이너를 생성할 수 있습니다

w3codebox@w3codebox:~$ docker run -t -i w3codebox/centos:6.7  /bin/bash
[root@41c28d18b5fb /]: id w3codebox
uid =500(w3codebox) 그룹 ID =500(w3codebox) 그룹 =500(w3codebox)

위에서 볼 수 있듯이 새 이미지는 사용자 w를 포함하고 있습니다3codebox。

이미지 태그 설정

docker tag 명령어를 사용하여 이미지에 새 태그를 추가할 수 있습니다.

w3codebox@w3codebox:~$ docker tag 860c279d2fec w3codebox/centos:dev

docker tag 이미지ID, 여기서는 860c279d2fec, 사용자 이름, 이미지 원본 이름(repository name) 및 새 태그 이름(tag)가 있습니다.

docker images 명령어를 사용하여 볼 수 있듯이, ID는860c279d2fec의 이미지는 추가 태그가 하나 더 있습니다.

w3codebox@w3codebox:~$ docker images
REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
w3codebox/centos       6.7                 860c279d2fec        5 시간 전         190.6 MB
w3codebox/centos       dev                 860c279d2fec        5 시간 전         190.6 MB
w3codebox/ubuntu       v2                  70bf1840fd7c        22 시간 전        158.5 MB
ubuntu              14.04               90d5884b1ee0        6 일 전          188 MB
php                 5.6                 f40e9e0f10c8        10 일 전         444.8 MB
nginx               최신              6f8d099c3adc        13 일 전         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 주 전         324.6 MB
httpd               최신             02ef73cf1bc0        3 주 전         194.4 MB
ubuntu              15.10               4e3b13c8a266        5 주 전         136.3 MB
hello-world         최신              690ed74de00f        6 달 전        960 B
centos              6.7                 d95b5ca17cc3        6 달 전        190.6 MB
training/webapp     최신              6fae60ef3446        12 달 전       348.8 MB