Docker 시작 및 실전 노트

12230 단어
 
  

一、 镜像

1.1、 获取镜像

命令: docker pull NAME[:TAG] 例: docker pull centos 相当于 docker pull centos:latest 相当于 docker pull registry.hub.docker.com/centos:latest registry.hub.docker.com是默认的注册服务器(Docker Hub)
 
  

1.2、 查看镜像信息

命令: docker images docker tag 为本地镜像添加新的标签 例:docker tag dl.dockerpool.com:5000/centos:latest centos:latest dl.dockerpool.com:5000/centos:latest和centos:latest指向同一个镜像 docker inspect 获取镜像的详细信息 例:① docker inspect 5506de2b643b ② docker inspect –f {{“.NetworkSettings.IPAddress”}} 550
 
  

1.3、 搜索镜像

命令: docker search 例: docker search mysql
 
  

1.4、 删除镜像

命令: docker rmi IMAGE IMAGE可以是标签或ID
 
  

1.5、 创建镜像

创建镜像的方法有三种:⑴基于已有镜像的容器创建,⑵基于本地模板导入,⑶基于Dockerfile创建 ⑴、 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 主要选项:-a, --author=”” 作者信息 -m, --message=”” 提交消息 -p, --pause=true 提交是暂停容器运行 例:docker commit –m “Added a new file” –a “Docker Newbee” a925cb40b3f0 test ⑵、 docker import 例:cat my_container.tar |docker import - image_name:tag docker export > my_container.tar docker export 命令,导出容器快照到本地文件
 
  

1.6、 存出和载入镜像

命令: docker save(存出)和 docker load(载人) 例:docker save –o ubuntu_14.04.tar ubuntu:14.04 docker load –input ubuntu_14.04.tar 或 docker load < ubuntu_14.04.tar docker load 来导入镜像存储文件到本地镜像库 docker import 来导入一个容器快照到本地镜像库 容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态)从容器快照文件导入时可以重新指定标签等元数据信息 镜像存储文件将保存完整记录,体积也要大
 
  

1.7、 上传镜像

镜像默认存储在/var/lib/docker 命令: docker push NAME[:TAG] 例:docker push user/test:latest
 
  

二、 容器

2.1、创建容器

命令: docker create [OPTIONS] IMAGE [COMMAND] [ARG...] docker start [OPTIONS] CONTAINER [CONTAINER...] docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 创建的容器处于体质状态,使用docker start 启动它 docker run 等价于 docker create ,docker start 例:docker create –it ubuntu:latest docker run –it ubuntu:14.04 /bin/bash Ctrl+d 或输入exit退出容器 docker logs [OPTIONS] CONTAINER 获取容器的输出信息
 
  

2.2、终止容器

命令: docker stop [OPTIONS] CONTAINER [CONTAINER...] -t|--time[=10]] 首先发送SIGTERM信号,等待一段时间后再发送SIGKILL信号终止容器 docker kill 直接发送SIGKILL信号来强行终止容器 例: docker stop ce5 docker start ce5 docker restart ce5
 
  

2.3、进入容器

进入容器有多种方法:⑴ docker attachdocker execnsenter docker attach [OPTIONS] CONTAINER 多个窗口同时attach到同一个容器是,所有窗口都会同步显示 docker exec –ti 6e5542159db4 /bin/bash PID=$(DOCKER INSPECT –F “{{.State.Pid}}” ) nsenter --target $PID --mount --uts --ipc --net --pid
 
  

2.4、删除容器

命令: docker rm [OPTIONS] CONTAINER [CONTAINER...] 例:docker rm 6e5542159db4 删除运行中的容器,添加-f
 
  

2.5、导入和导出容器

导出容器:导出一个已经创建的容器到一个文件 命令: docker export [OPTIONS] CONTAINER 例:docker export ce5 >test_for_run.tar 将文件传输到其他机器上,通过导入命令实现容器的迁移 导入容器:导入文件为镜像 例:cat my_container.tar |docker import - image_name:tag
 
  

三、 仓库

登录命令: docker login docker run –d –p 5000:5000 –v /opt/data/registry:/tmp/registry registry

Start your registry

docker run -d -p 5000:5000 --name registry registry:2 Pull (or build) some image from the hub docker pull ubuntu Tag the image so that it points to your registry docker tag ubuntu localhost:5000/myfirstimage Push it docker push localhost:5000/myfirstimage Pull it back docker pull localhost:5000/myfirstimage Now stop your registry and remove all data docker stop registry && docker rm -v registry
 
  

四、 数据管理

4.1、数据卷

在用docker run 命令的时候,使用-v 可以再容器内创建一个数据卷,多次使用可创建多个数据卷 例: ①、创建数据卷 docker run -dp --name web -v /webapp ubuntu:14.04 docker inspect -f {{.Volumes}} $CONTAINER_ID 可查看数据卷对应的主机上的文件 ②、挂载一个主机目录作为数据卷 docker run -dp --name web -v /src/webapp:/opt/webapp ubuntu:1404 上面这条命令加载主机/src/webapp目录到容器的/opt/webapp目录 docker run -dp --name web -v /src/webapp:/opt/webapp:ro ubuntu:14.04 加了:ro之后,容器内挂载的数据卷的数据就无法修改。 docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu:14.04 这样就可以记录在容器输入过的命令历史(不同shell版本有所不同) 4.2、数据卷容器
 
  

4.2、数据卷容器

①、创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata docker run -ti -v /dbdata --name dbdata ubuntu:14.04 ②、创建db1和db2两个容器,并从dbdata容器挂载数据卷 docker run -ti --volumes-from dbdata --name db1 ubuntu:14.04 docker run -ti --volumes-from dbdata --name db2 ubuntu:14.04 ③、可以多次使用–volumes-from参数来从多个容器挂载多个数据卷。还可以从其他已经挂载了容器卷的容器来挂载数据卷 docker run -d --name db3 --volumes-from db1 ubuntu:14.04 #注意:使用--volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态
 
  

4.3利用数据卷容器迁移数据

①、备份 docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu:14.04 tar cvf /backup/backup.tar /dbdata a.首先利用ubuntu镜像创建了一个容器worker。 b.使用–volumes-from dbdata参数来让worker容器挂载dbdata容器的数据卷(即dbdata数据卷); c.使用-v $(pwd):/backup参数来挂载本地的当前目录到worker容器的/backup目录 worker容器启动后,使用了tar cvf /backup/backup.tar /dbdata命令来将/dbdata下内容备份为容器内的/backup/backup.tar,即宿主主机当前目录下的backup.tar。 ②、恢复 docker run -v /dbdata --name dbdata2 ubuntu:14.04 docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
 
  

五、网络基础配置

5.1、端口映射实现访问容器

①、通过-P或-p指定端口映射, -P 随机映射一个49000~49900的端口,-p可以指定要映射的端口
 
  

5.2、容器互联实现容器间通信

--link 参数可以让容器之间安全的进行交互 –link name:alias 例: docker run –d –P –name web –link db:db training/webapp python app.py db为容器的名字
 
  

六、使用Dockerfile 创建镜像

6.1、基本结构

Dockerfile分为四部分: ①基础镜像信息, ②维护者信息, ③镜像操作指令,④容器启动时执行指令
 
  

6.2、指令

FROM: 格式为 FROM 或 FROM: 第一条指令必须是FROM指令。并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)。 MAINTAINER:格式为MAINTAIER,指定维护者信息。
RUN:
   RUN   RUN [“executable”,“param1”,“param2”]。
    shell        , /bin/sh–c;     exec  。                   ,  RUN[“/bin/bash”,“-c”,“echohello”]。  RUN                 ,        。          \   。
CMD:CMD [“executable”,“param1”,”param2”]   exec   ,    
CMD command param1 param2  /bin/sh   ,          。
CMD [“param1”,”param2”]    ENTRYPOINT     
            ,           ,  :CMD[“/run.sh”]。  :  Dockerfile        ,          。               ,     CMD     。

EXPOSE:
   :EXPOSE  [ …]
  Docker             ,       。          -P(     ),Docker                   ;  -p,                 。

ENV:
   :ENV           ,     RUN    ,         

ADD:
  :ADD                   。src   Dockerfile         ,      URL;      tar  (       )

COPY:
   : copy          ( Dockerfile         ,     )     .        ,     。            ,    COPY

ENTRYPOINT:ENTRYPOINT [“executable”, “param1”,”param2”]
ENTRYPOINT command param1 param2(shell    )
            ,     docker run        。
  Dockerfile      ENTRYPOINT,     ENTRYPOINT ,        。 CMD  ,    。

USER:
  :USER daemon
             UID,   RUN         。            ,             。               。
                gosu,     sudo。     ,     root  。

WORKDIR:
   : WORKDIR /path/to/workdir
    RUN,CMD,ENTRYPOINT        
      WORKDIR  ,             ,             。

ONBUILD:
                        ,        。
  ,Dockerfile           image-A
[…]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build –dir /app/src
[…]
FROM image-A
#    
ADD . /app/src
RUN /usr/local/bin/ python-build–dir/app/src
 
  

6.3、创建镜像

命令:docker build 例:docker build –t build_repo/first_image /tmp/docker_builder/ 指定Dockerfile 所在路径为/tmp/docker_builder/, 并且希望生产镜像标签为build_repo/first_image
 
  
 
  
 
  
      

브리지는 데이터 링크 계층에서 두 LAN을 연결하고 MAC 주소에 따라 프레임을 전달하는 것으로 낮은 계층의 라우터로 볼 수 있습니다.
다리 연결은 한 기계의 몇 개의 네트워크 인터페이스를 연결하는 것이다.그 결과 한 인터넷 입구에서 받은 메시지가 다른 인터넷 입구에 복사되어 발송된다.인터넷 입구 사이의 메시지를 서로 전달할 수 있도록 하다
교환기는 바로 이런 설비이다. 교환기는 몇 개의 네트가 있고, 이 네트들은 다리로 연결되어 있다.따라서 교환기와 연결된 몇몇 호스트는 교환기의 메시지를 전송하여 서로 통신할 수 있다.교환기는 MAC 주소 식별을 바탕으로 패키지 전송 기능을 봉인할 수 있는 네트워크 장치다.스위치는 MAC 주소를 학습하여 내부 주소표에 저장할 수 있으며 데이터 프레임의 시발자와 목표 수신자 사이에 임시 교환 경로를 구축하여 데이터 프레임이 원본 주소에서 목적 주소로 직접 도착하도록 한다.
브리지 닫기: ip link set br-79ea889a5ac8 down
브리지 삭제:brctl delbr br-79ea889a5ac8
Virtual EthernetPair는 약칭vethpair로 쌍을 이루는 포트로 이 포트의 한쪽에서 들어오는 모든 패키지가 다른 한쪽에서 나오고 반대로도 마찬가지다.
(1) "veth pair"인터페이스 A와 B를 만듭니다.
ip link add A type veth peer name B
⑵, 연결 A 인터페이스에서 브리지 docker0
brctl addif docker0 A
(3) A 인터페이스 활성화
ip link set A up
brctl Usage: brctl [commands] commands:
addbrbridge 이름 #bridge 추가하기;delbr bridge 이름 #bridge 삭제;addif bridge의 이름 device의 이름 # 인터페이스를bridge에 추가하기;delif bridge의 이름 device의 이름 #bridge에서 인터페이스 setageing bridge의 이름 시간 # 설정 노화 시간즉, 생존 주기 setbridgeprio bridge의 이름 우선 순위 # 설정 bridge의 우선 순위 setfd bridge의 이름 시간 # 설정 bridge 전송 지연 시간 sethello bridge의 이름 시간 # 설정 hello 시간 setmaxage bridge의 이름 시간 # 메시지의 최대 생명 주기 setpathcost bridge의 이름 포트 권한 # 설정 경로의 권한 값 setportprio bridge의 이름 끝입 우선 순위 # 포트 설정 우선 순위 show #bridge 목록 showmacsbridge 이름 #MAC 주소 showstpbridge 이름 #bridge stp 정보 stpbridge 이름 보이기 {on|off} #stp 켜기/끄기

좋은 웹페이지 즐겨찾기