博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker 入门学习
阅读量:6691 次
发布时间:2019-06-25

本文共 5247 字,大约阅读时间需要 17 分钟。

初识docker

docker在开发和运维中的优势:

1)更快速的交付和部署

2)更高效的资源利用

3)更轻松的迁移和扩展

4)更简单的更新管理

 

docker与虚拟机的比较

 

docker的核心概念和安装

docker镜像:镜像(image)是创建docker容器的基础,类似于虚拟机镜像,一个面向docker引擎的只读模板,包含了文件系统。

docker容器:(container)类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用.可以看做一个简易版得到liux系统。可以对容器进行启动,开始,停止,删除。

docker仓库:docker仓库类似于代码库,是docker集中存放镜像的文件场所。

 

镜像

 获取镜像

$sudo  docker pull  NAME[:TAG]      不显式指定tag号,默认使用latest标签。    e.g.   $ sudo docker pull ubuntu14.04

指定仓库下载镜像并启动容器:$ sudo docker pull dl.dockerpool.com:5000/ubuntu                $ sudo docker run -t -i ubuntu /bin/bash

查看镜像信息

查看本地镜像信息:$ sudo docker images

修改本地镜像标签:$ sudo docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:latest

获取镜像的详细信息,以JSON返回:$ sudo docker inspect 5506de2b643b                   inspect后面+镜像ID

 

搜寻镜像

docker search 命令可以搜索远端仓库中共享的镜像,默认搜索 Docker Hub

方仓库中的镜像。用法为 docker search TERM 。

 

删除镜像

使用镜像标签删除镜像

$ sudo docker rmi dl.dockerpool.com:5000/ubuntu

注意:当同一个镜像拥有多个标签的时候, docker rmi 命令只是删除了该镜像多个标签中的指定

标签而已,并不影响镜像文件。但当镜像只剩下一个标签的时候就要小心了,此时再使用 docker rmi 命令会彻底删
除该镜像 。

创建镜像

基于已有镜像的容器创建

命令格式为 docker commit [OPTIONS]

CONTAINER [REPOSITORY[:TAG]],主要选项包括:
-a, --author="" 作者信息。
-m, --message="" 提交消息。
-p, --pause=true 提交时暂停容器运行。

e.g.    $ sudo docker commit -m "Added a new file" -a "Docker Newbee" a925cb40b3f0 test        其中a925cb40b3f0 为容器ID

 

基于本地模板导入

$ sudo cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04

基于dockerfile

 

存出和载入镜像

可以使用 docker save docker load 命令来存出和载入镜像。

 

 

上传镜像

$ sudo docker tag test:latest user/test:latest

$ sudo docker push user/test:latest

 

容器

新建容器

Sudo  Docker create  -it  ubuntu:latest

Sudo  docker start  容器ID

启动容器

Sudo docker run -t -i ubuntu  /bin/bash

Ctrl+p ctrl+q        后台运行   exit  退出

 

守护态运行

 

Sudo  docker  logs  容器ID

 

终止容器

Sudo docker stop/restart/start  容器ID

进入容器

 

删除容器

-f

 

数据管理

数据卷

 

 

数据卷容器

1)创建一个数据卷容器dbdate 然后创建一个数据卷挂载到 /dbdata

 

数据备份

 

网络基础配置

 

 

使用dockerfile创建镜像

Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速创建自定义的镜像。

 基础结构

一般而言,dockerfile分为字部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时执行指令。# This dockerfile uses the ubuntu image#VERSION 2 - EDITION 1#Author:docker_user#Command format: Instruction [arguments/command]#第一行必须指定基础镜像FROM shc-harbor-dev.hpeswlab.net/itsma/itom-itsma-opensuse-base:2017.04.26#维护者信息MAINTAINER docker_user docker_user@email.com#镜像的操作指令     每运行一次RUN命令,镜像添加新的一层,并提交。RUN echo "deb http:// archive.ubuntu.com" >> /etc/apt/sources.listRUN apt-get update && apt-get install -y nginxRUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf#容器启动时执行指令CMD /usr/sbin/nginx

 指令

1.FROM

第一条指令必须为FROM指令。如果同个Dockerfile中创建多个镜像,可以使用多个FROM指令。

格式FROM <image> 或 FROM <image>:<tag>

2.MAINTAINER

格式为 MAINTAINER <name>,指定维护者信息。

3.RUN

格式为RUN <command> 

每条RUN指令将在当前镜像基础上执行命令,并提交为新的镜像。当命令较长时可以使用\来换行。

4.CMD

CMD 指令的格式和 RUN 相似,也是两种格式:

  • shell 格式:CMD <命令> 
  • exec 格式:CMD ["可执行文件", "参数1", "参数2"...] 
  • 参数列表格式:CMD ["参数1", "参数2"...]。在指定了 ENTRYPOINT 指令后,用 CMD 指定具体的参数。

 5.EXPOSE

告诉docker服务端容器暴露的端口号,供互联系统使用。使用-p指定主机端口映射。

EXPOSE  22 80  8443

docker run -d -p 127.0.0.1:33301:22 centos6-ssh

6.ENV

格式为ENV <key> <value>

指定环境变量

7.ADD

格式ADD <src>  <dest>

该命令将复制指定的<src>到容器的<dest>.其中<src>可以是Dockerfile所在目录的一个相对路径(文件和目录);也可以是URL。

8.COPY

格式为COPY <src> <dest>

复制本地主机的<src>至 容器<dest>,目标路径不存在时会自动创建。当使用本地目录为源目录时,推荐使用COPY。

9.ENTRYPOINT

container启动时执行的命令,但是一个Dockerfile中只能有一条ENTRYPOINT命令,如果多条,则只执行最后一条

ENTRYPOINT没有CMD的可替换特性。

10.VOLUME

可以将本地文件夹或者其他container的文件夹挂载到container中。

VOLUME ["/data1","/data2"]

11.USER

格式为USER daemon

指定运行容器时的用户名或UID,后续的RUN也会使用指定用户。

12.WORKDIR

格式为WORKDIR  /path/to/workdir

切换目录用,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效

WORKDIR /a

WORKDIR b

WORKDIR c

最终:/a/b/c

13.ONBUILD

格式为ONBUILD [ INSTRUCTION]

ONBUILD 指定的命令在构建镜像时并不执行,而是在它的子镜像中执行.当创建的镜像作为基础镜像时所执行的操作指令。

 

创建镜像

docker build[选项] 路径

指定dockerfile所在路径为/tmp/docker_buider/ ,并且希望 生成镜像标签为build_repo/first_image :

$sudo docker build -t    build_repo/first_image     /tmp/docker_builder/

e.g.   Dockerfile

FROM shc-harbor-dev.hpeswlab.net/itsma/itom-itsma-opensuse-base:2017.04.26# set proxyENV http_proxy @{http.proxy}#install wgetRUN zypper --non-interactive install wget tar\ && zypper clean# install Nodejs 6.91RUN wget http://nodejs.org/dist/v6.9.1/node-v6.9.1-linux-x64.tar.gz -P /app \ && tar -vzxf /app/node-v6.9.1-linux-x64.tar.gz -C /app \ && rm -rf /app/node-v6.9.1-linux-x64.tar.gz#set node environmentENV NODE_HOME /app/node-v6.9.1-linux-x64/binENV PATH $NODE_HOME:$PATHENV http_proxy ""RUN mkdir -p /pv/itsma/conf /app/yaml_output /app/config-service/yamls  /itsma-certificate/upload  /itsma-certificate/bundleCOPY configure-ui.tar.gz /app/#COPY smarta-admin-ui.tar.gz /app/COPY configure-backend.jar /app/config-service/configure-backend.jar#COPY /var/vols/itom/core/suite-install/itsma/services/sm/*.yaml /app/config-service/yamls/COPY configmap_property.json /app/yaml_outputCOPY sm-post-pod.yaml /app/config-service/yamls/COPY run.sh /appCOPY ssl.sh /appRUN tar -C /app -xzf /app/configure-ui.tar.gz \    && rm -rf /app/configure-ui.tar.gz \    && chmod 500 /app/run.sh \    && chmod 755 /app/ssl.sh # copy smart admin page#RUN cp /app/smarta-admin-ui/* /app/configure-ui/dist/# for securityRUN groupadd itsma_config -g 1999 \&& useradd itsma_config -u 1999 -g 1999 \&& chown -R itsma_config:itsma_config /app \&& echo "root:bmVlZGNoYW5nZWQ=" | chpasswd \&& echo "itsma_config  ALL=NOPASSWD: /usr/bin/ln"  >> /etc/sudoersEXPOSE 8080WORKDIR /appUSER itsma_configCMD ["/app/run.sh"]
View Code

 

转载于:https://www.cnblogs.com/gaojy/p/7121270.html

你可能感兴趣的文章
<進階&高級>ADT線上視頻&PPT課件
查看>>
Apache 与 Nginx 比较
查看>>
杂文语录积累(二)
查看>>
隔离公司各个部门--虚拟路由器(EBGP)
查看>>
在 SELECT 查询中使用子查询
查看>>
Microsoft Lync Server 2013: 配置SQL服务器数据分发
查看>>
Zabbix 日志监控
查看>>
数据挖掘里的“降维”----从五阶魔方的玩法思考
查看>>
shell脚本实例之Charpter8-9
查看>>
Error polling connection 'qemu:///system': internal error Cannot find suitable emulator for
查看>>
iptables实战
查看>>
valgrind调试CPU缓存命中率和内存泄漏
查看>>
水星三维引擎发布2.0版本 ~友情帮介绍下~
查看>>
内外网访问NAT设置
查看>>
公开课视频-《第03章 部署-IT基础架构》-大企业云桌面部署实战-在线培训-视频(奉献)...
查看>>
数字方舟,末日起航-记2012云计算架构师峰会
查看>>
CocoStudio 1.4.0.1数据编辑器使用
查看>>
6425C-Lab3 管理用户与服务帐户(2)
查看>>
Linux系统工程师的必备素质
查看>>
第一个Symfony2的长期支持版释出(Symfony 2.3.0)
查看>>