docker 安装和学习笔记
2017-03-17 00:00
645 查看
VMware 安装 CentOS 7
安装VMware下载CentOS 7, 安装
配置网络
配置静态网络
进入/etc/sysconfig/network-scripts目录找到网卡的配置文件:名字类似于ifcfg-enp03
修改配置文件
修改下面内容,如果没有就添加
BOOTPROTO="static" #dhcp改为static ONBOOT="yes" #开机启用本配置 IPADDR=192.168.7.106 #静态IP GATEWAY=192.168.7.1 #默认网关 NETMASK=255.255.255.0 #子网掩码 DNS1=192.168.7.1 #DNS 配置
修改后的文件
TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=184d6253-b749-4f1e-8521-2fc0414a37e8 DEVICE=ens33 ONBOOT=yes BROADCAST=192.168.106.255 DNS1=192.168.106.1 IPADDR=192.168.106.101 NETMASK=255.255.255.255 GATEWAY=192.168.106.1
Centos 7 学习之静态IP设置
使用的时候需要使用root用户进行操作,不然会出现错误
Docker
Docker 主要分成3个大部分镜像(Image)
容器(Container)
仓库(Repository)
安装
使用root账户安装:
yum install -y docker
启动:
sudo service docker start
测试:
sudo docker run hello-world
设置开机启动:
systemctl enable docker
将制定用户添加到用户组:
usermod -aG docker your_username
centos7安装docker并设置开机启动
镜像
层(Layer)其实是AUFS(Advanced Union File System, 一种联合文件系统)中的概念,是实现增量保存于更新的基础。镜像ID:唯一标示了镜像
TAG : 用于标示来自同一个仓库的不同镜像。
获取镜像
docker pull NAME[:TAG]
查看镜像信息
docker images
本地镜像添加新的标签
docker tag 例如: docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:latest
获取镜像的详细信息
使用inspect + image iddocker inspect 48b5124b2768 使用 -f 来获取其中一项 docker inspect -f {{.Architecture}} 48b5124b2768
搜索镜像
搜索远程仓库中共享的镜像,默认搜索Docker Hub 官方仓库的镜像docker search TERM -f, --filter=stars=0 指定仅显示评价为指定星级以上的镜像
删除镜像
如果该镜像有多个标签只会删除指定标签,只有一个时会删除所有AUFS层。可以使用名字+版本的方式,也可以使用ImageId(或可识别部分)进行删除,当有容器存在的时候,镜像文件无法删除。docker rmi IMAGE[IMAGE...] 强制删除使用 -f 参数 docker rmi -f ubuntu 但是这样会存在遗留镜像,正确做法应该是先删除容器再删除镜像,这样会正确打印删除各层信息。
创建镜像
基于已有镜像创建基于本地模板导入
基于Dockerfile创建
基于已有镜像的容器创建
使用
Docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]命令
选项
-a, --author="" 作者信息
-m, --message="" 提交信息
-p, --pause=true 提交时暂停容器运行
$ sudo docker run -ti ubuntu:14.04 /bin/bash
root@a925cb40b3f0:/# touch test
root@a925cb40b3f0:/# exit
容器id为a925cb40b3f0
然后提交为一个新的镜像
$ sudo docker commit -m "Added a new file" -a "Docker NewBee" a925cb40b3f0 test
查看本地镜像列表可以看到新创建的镜像
$ sudo docker images
基于本地模板导入
下载压缩包,然后用命令导入
$ sudo cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
然后查询
$ sudo docker images
存出镜像
docker save sudo docker save -o ubuntu_14.04.tar ubuntu:14.04
载入镜像
sudo docker load --input ubuntu_14.04.tar 或 sudo docker load < ubuntu_14.04.tar
上传镜像
默认上传到DockerHub 官方仓库,需要登录,命令格式。例如user用户上传本地test:latest镜像,可以先添加标签user/test:latest 然后使用docker push
docker push NAME[:TAG] sudo docker tag test:lastest user/test:latest sudo docker push user/test:latest 然后输入账号密码
容器
容器是镜像的一个运行实例,带有可写的文件层,镜像创建后不可写。容器是直接提供应用服务的组件,也是Docker 实现快速的启停和高效服务性能的基础。
查看容器
docker ps -a
创建容器
使用docker create 新建的容器处于停止状态可以使用 docker start启动创建容器
docker create
创建:
docker create -lt ubuntu:latest
查询
docker ps -a
启动容器
基于镜像新建一个容器并启动, 使用 docker run 等价于docker create,再执行docker start将在终止状态(stopped)的容器重新启动, docker start
docker run ubuntu /bin/echo 'hello world'
docker run 命令启动时,Docker后台运行标准操作
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读可写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个ip地址给容器
执行用户指定的应用程序
执行完毕容器被终止
docker的四种网络模式
-t 参数让Docker 分配一个伪终端,并绑定到容器的标准输入 -i 让容器的标准输入保持打开 docker run -t -i ubuntu:14.04 /bin/bash
使用 Ctrl+D 或 exit命令退出
-d Docker容器再后台已守护态形式运行 docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done" 返回一个唯一Id 可以使用 docker ps 查看容器信息 docker ps 获取容器的输出信息 docker logs ID docker logs 868e548cd38
终止容器
docker stop [-t|--time[=10]] ID
向容器发送SIGTERM信号
等待一段时间(默认10秒)
发送SIGKILL信号终止容器
docker 容器中指定的应用终止时,容器也自动终止。
docker kill 命令会直接发送SIGKILL信号来强行终止容器
查看终止状态的容器ID信息
docker ps -a -q
处于终止状态的容器可以使用docker start 命令来重新启动。
进入容器
在使用-d 参数容器进入后台,用户无法看到容器中的信息,某些时候需要进入容器进行操作。docker attach
docker exec (推荐)
nsenter 工具
后台启动ubuntu( -it 和 /bin/sh 成对出现进行操作) docker run -itd ubuntu /bin/sh 查看docker进程 docker ps attach进入ubuntu, sudo docker attach id/name exec 进入ubuntu docker exec -ti id/name /bin/bash
nsenter 工具在util-linux包2.23版本之后包含。如果没有安装如下:
输入 https://www.kernel.org/pub/linux/utils/util-linux/ 可以选择版本 cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.tar.gz | tar -zxf-; cd util-linux-2.29; ./configure --without-ncurses make nsenter && sudo cp nsenter /usr/local/bin
为了使用nsenter连接到容器,还需要找到容器的进程的pid
PID=$(docker inspect --format "{{.State.Pid}}" <container id>) 通过pid, 连接容器 nsenter --target $PID --mount --uts --ipc --net --pid
完整使用例子
//启动ubuntu docker run -idt ubuntu /bin/bash //查询docker容器id docker ps //查询pid并将值赋给PID变量 PID=$(docker inspect --format "{{.State.Pid}}" a86ac85eaa03) //打印pid echo $PID //使用nsenter命令,--target后跟查询出的PID值 nsenter --target 2842 --mount --uts --ipc --net --pid
删除容器
-f, --force=false 强制终止并删除一个运行中的容器 -l, --link=false 删除容器的连接,但保留容器 -v, --volumes=false 删除容器挂载的数据卷 docker rm [OPTIONS] CONTAINER [CONTAINER...] docker rm ContainerId
导出容器
导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态。docker export CONTAINER
具体操作过程
//查看当前容器
docker ps -a导出ce5542容器到test_for_run.tar 文件
docker export ce5542 > test_for_run.tar
导入容器
导出的文件可以使用命令导入,成为镜像docker import
具体操作过程
cat test_for_run.tar | sudo docker import - test/ubuntu:v1.0
docker load命令来导入镜像存储文件到本地的镜像库,docker import导入一个容器快照到本地镜像库。
区别在于:容器快照文件将丢弃所有的历史记录和元数据信息(既仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也大。
此外:从容器快照文件导入时可以重新指定标签等元数据信息。
仓库
仓库(Respository)是集中存放镜像的地方。注册服务器(Registry):存放仓库的具体服务器
例如仓库地址 dl.dockerpool.com/ubuntu来说, dl.dockerpool.com是注册服务器地址, ubuntu是仓库名
Docker官方公共仓库https://hub.doker.com
Docker Pool 国内专业的Docker技术社区,也提供镜像http://dockerpool.com
登录
docker login 命令来输入用户名、密码和邮箱来完成注册和登录
注册成功后本地用户目录 .dockercfg中将保存用户的认证信息
查询
查询官方镜像仓库-s N 参数可以指定仅显示评价为N星以上的镜像 docker search
可镜像资源分为两种
类似centos这样的基础镜像, 称为基础或根镜像。这些镜像由Docker公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字
类似tianon/centos镜像,他由DockerHub的用户tiannon创建并维护,带有用户名前缀,表明是某用户的某仓库。
下载
下载官方镜像docker pull
在docker pool 下载的时候需要添加注册服务器的具体地址
docker pull dl.dockerpool.com:5000/ubuntu:12.04 然后可以使用docker tag将这个标签更改成和官方一致
自动创建
自动创建(Automated Builds) 功能对于需要经常升级镜像内程序来说十分便捷。自动创建功能使用户通过Docker Hub指定跟踪一个目标网站(目前支持GitHub或BitBucket)上的项目,一旦项目发现新的提交,则自动执行创建。创建并登陆Docker Hub,以及目标网站; * 在目标网站中连接账户到Docker Hub
在Docker Hub 中配置一个自动创建
选取一个目标网站中的项目(需要包含Dockerfile)和分支
指定Dockerfile 的位置,并提交创建
之后可以在Docker Hub 的自动创建页面跟踪每次创建的状态
创建私有库
使用registry 镜像创建私有仓库可以使用官方提供的Registry 镜像来简单搭建一套本地私有仓库环境。
自动下载并启动一个registry容器,创建本地的私有仓库服务
docker run -d -p 5000:5000 registry
默认情况会将仓库创建在容器的/tmp/registry目录下。 可以通过-v参数来将镜像文件存放在本地的指定路径上
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
此时本地将启动一个私有仓库服务,监听端口为5000。
管理私有仓库镜像
本地地址为:10.0.2.2:5000 。
上传
//查看已有镜像
docker images
//docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
docker tag ubuntu:14.04 10.0.2.2:5000/test
//上传标记的镜像
docker push 10.0.2.2:5000/test
//curl 查看本地仓库中的镜像
curl http://10.0.2.2:5000/v1/search
结果看到{{"description":"", "name": "library/test"}} 就上传成功了
下载:任意可以访问到10.0.2.2地址的机器
docker pull 10.0.2.2:5000/test 下载后可以使用docker tag 修改为通用标签
数据管理
用户使用Docker的过程中,往往需要能查看容器内应用产生的数据, 这必然涉及到容器的数据管理操作数据卷
数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供多种有用特效数据卷可以在容器之间共享和重用
对数据卷的修改会立马生效
对数据卷的更新,不会影响镜像
卷会一直存在,直到没有容器使用
类似于linux下对目录或文件进行mount操作
在容器内创建一个数据卷
在docker run 命令的时候,使用-v标记可以在容器内创建一个数据卷。多次使用-v标记可以创建多个数据卷。使用training/webapp镜像创建一个web容器,并创建一个数据卷挂载到容器/webapp目录:
-P 允许外部访问容器需要暴露的端口 docker run -d -P --name web -v /webapp training/webapp python app.py //注意:这个命令没有运行成功,网上查到的也不行,后续进行修改。
挂载一个主机目录作为数据卷
挂载主机src/webapp目录到容器的/opt/webapp目录docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py //ro指定为只读 docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
用户可以放置一些程序或数据到本地目录然后在容器内运行和使用。
注意:本地目录必须是绝对路径,如果目录不存在,docker 会自动创建
docker 默认权限是读写(rw),用户可以通过ro指定为只读。
挂载一个本地主机文件作为数据卷
可以从主机挂载单个文件到容器中作为数据卷//记录容器输入过的命令历史 docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
注意:直接挂载文件到容器使用vi或者sed --in-place的时候可能会导致inode改变,会导致错误。推荐方式是直接挂载文件所在目录。
数据卷容器
用户需要在容器之间共享一些持续更新的数据,最简单的方法是使用数据卷容器。其实就是一个普通容器,专门用它来提供数据卷供其他容器挂载。
//创建一个dbdata数据卷容器, 并在其中创建一个数据卷挂载到/dbdata docker run -it -v /dbdata --name dbdata ubuntu /bin/bash //使用--volumes-from 来挂载dbdata容器中的数据卷例如创建db1和db2两个容器并从dbdata容器挂载数据卷 docker run -it --volumes-from dbdata --name db1 ubuntu /bin/bash docker run -it --volumes-from dbdata --name db2 ubuntu /bin/bash //现在这3个容器都挂载到相同的/dbdata 目录 三个容器任何一方在该目录下的写入,其他容器都可以看到 cd /dbdata touch test ls //其他2个里就可以看到创建的test了
使用--volumes-from 参数所挂载数据卷的容器自身并不需要保持在运行状态。
如果删除了挂载的容器(包括dbdata、db1和db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式使用
docker rm -v命令来指定同时删除关联容器
使用数据卷容器迁移数据
可以利用数据卷容器对其中的数据卷进行备份、恢复、以实现数据的迁移。备份
//备份dbdata数据卷容器内的数据卷, (书上 $(pwd):/backup 如果是root运行会把root挂载上去) docker run -it --volumes-from dbdata -v /dbdata:/backup --name worker ubuntu /bin/bash tar cvf /backup/backup.tar /dbdata
创建容器worker
挂载容器到dbdata (--volumes-from)
使用-v $(pwd):/backup 参数来挂载本地的当前目录(/dbdata)到worker容器的/backup 目录
worker 容器启动后,来将 /dbdata下的内容备份为/backup/backup.tar
注意:这里可能会出现没有权限的情况网上查到的解决方案是:(详细的后面更明白的时候补充)
//su -c "setenforce 0" 这个不起作用 //添加 --privileged=true 这个是可以的 docker run --privileged=true -it --volumes-from dbdata -v /dbdata:/backup --name worker ubuntu /bin/bash
恢复
//创建一个带有数据卷的容器dbdata2 docker run -it -v /dbdata --name dbdata2 ubuntu /bin/bash //创建新容器挂载dbdata2 并使用untar 解压备份文件到所挂载的容器卷 docker run --volumes-from dbdata2 -v /dbdata:backup busybox tar xvf /backup/backup.tar /bin/bash
网络基础配置
端口映射实现访问容器
启动容器的时候如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。参数来指定端口映射:
使用 "-P", Docker 会随机映射一个 49000~49900的端口至容器内部开发的网络端口
使用 "-p", -p(小写的)可以指定要映射的端口,一个指定端口上只可以绑定一个容器。支持格式
ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort
从外部访问容器应用
//启动容器 docker run -d -P training/webapp python app.py //查看容器的情况,可以看到端口,如49115 docker ps -l
访问宿主机的49115端口即可访问容器内Web应用提供的界面。
可以通过
docker logs查看应用的信息
docker logs -f nostalgic_morse docker logs daemon_logs 查看容器日志 -f:表示查看实时日志 -t:表示查看日志产生的日期 –tail=n:表示查看从尾部看的n条日志
映射所有接口地址
//hostPort:containerPort 将本地的5000端口映射到容器的5000端口 docker run -d -p 5000:5000 training/webapp python app.py //默认会绑定本地所有接口上的所有地址,多次-p可以绑定多个端口 docker run -d 5000:5000 -p 3000:80 training/webapp python app.py
映射到指定地址的指定端口
// ip:hostPort:containerPort 映射特定地址 docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
映射到指定地址的任意端口
//使用ip::containerPort 绑定localhost的任意端口到容器的5000端口 docker run -d -p 127.0.0.1::5000 training/webapp python app.py
标记udp端口
//可以使用udp 标记来指定udp端口 docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
查看映射端口配置
//使用 docker port 来查看端口的配置 docker port nostalgic_more 5000
容器又自己内部网络和ip地址,使用docker inspect + 容器id 可以获取所有的变量值
容器间通信
容器的连接系统除端口映射另一种与容器中应用进行交互的方式。在源和接收容器间建立一个隧道,接收容器可以看到源容器指定的信息。
自定义容器命名
连接系统依据容器的名称来执行,所以一个好记的名字就很需要了。使用 --name 可以自定义容器名
docker run -d -p --name web training/webapp python app.py //查看是否修改 docker ps -l
注意:如果加 --rm 标记, 容器终止后会立即删除, --rm 和 -d 不能同时使用
容器互联
使用 --link 参数可以让容器之间安全的进行交互//name 连接的容器的名称,alias 是这个连接的别名 --link name:alias //创建一个数据库容器 docker run -d --name db training/postgres //删除之前的web容器 docker rm -f web //创建一个新的web容器,并将它连接到db容器 docker run -d -P --name web --link db:db training/webapp python app.py //查看连接 docker ps // db容器的names 列有 db, web/db 表明web容器连接到db容器,这允许web容器访问db容器的内容
创建安全隧道,不需要暴露端口到外部网络上,比较安全。
Docker 通过两种方式为容器公开连接信息。
环境变量
使用env 命令来查看web容器的环境变量docker run --rm --name web2 --link db:db training/webapp env
更新 /etc/hosts 文件。
除了环境变量,docker 还添加host信息到父容器的/etc/hosts的文件docker run -t -i --rm --link db:db training/webapp /bin/bash cat /etc/hosts // 172.17.0.7 aed84ee32bde // ... // 172.17.0.5 db
这里会显示2个hosts信息,
是web容器,使用自己的id作为默认主机名,
db容器的ip和主机名。 可以在web容器中安装ping命令来测试跟db容器的联通
apt-get install -yqq inetutils-ping ping db
官方ubuntu镜像默认没有安装ping,需要自己安装
用户可以连接多个子容器到父容器,比如连接多个web到db容器上
Dockerfile
Dockerfile 是一个文本格式的配置文件,用户可以使用Dockerfile 快速创建自定义镜像基本结构
Dockerfile 分为4个部分基础镜像信息
维护者信息
镜像操作指令:RUN指令将对镜像执行跟随的命令,每运行一条RUN指令,镜像添加新的一层。并提交。
容器启动时执行命令:运行容器时的操作命令
# this dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author : docker_user # Command format Instruction [arguments / command]... # 第一行必须指定基于的基础镜像 FROM ubuntu # 维护者信息 MAINTAINER docker_user docker_user@email.com # 镜像的操作指令 RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring mai universe" >> /etc/apt/sources.list RUN apt-get update && apt-get install -y nginx RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf # 容器启动时执行指令 CMD /usr/sbin/nginx
指令
指令的一般格式为 INSTRUCTION arguments 指令包括 FROM、MAINTAINER、RUN 等。FROM
FROM <image> 或 FROM <image>:<tag>
第一个指令必须是FROM指令。同一个Dockerfile 中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)
MAINTAINER
MAINTAINER <name>
指定维护者信息
RUN
//在shell 终端运行,既/bin/sh -c ; RUN <command> //使用exec执行。指定使用其他终端可以通过第二种方式实现 RUN ["executable", "param1", "param2"] //例如: RUN ["/bin/bash", "-c", "echo hello"]
每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像,命令较长时可以使用 \ 来换行
CMD
支持3种格式://1. 使用exec执行,推荐 CMD ["executable", "param1", "param2"] //2. 在/bin/sh种执行,提供给需要交互的应用 CMD command param1 param2 //3. 提供给ENTRYPOINT的默认参数 CMD ["param1", "param2"]
EXPOSE
告诉Docker 服务端容器暴露的端口号,供互相练习使用EXPOSE <port> [<port>...] //例如 EXPOSE 22 80 8443
启动容器时需要通过"-P",Docker 主机会自动分配一个端口转发到指定端口
使用"-p",则可以指定哪个本地端口映射过来
ENV
指定环境变量,会被后续RUN指令使用,并在容器运行时保持ENV <key> <value> //例如: ENV PG_MAJOR 9.3
可以在docker run 使用**-e**参数进行覆盖默认配置:
docker run --net=host -d -p 9999:9999 -e Server_Bind=0.0.0.0:9999 processcache
--net=host :docker运行此模式使用主机的网络(一般主机设置桥接模式)
ADD
复制指定<src>到容器中的<dest>. 其中<src>可以是Dockerfile所在目录的一个相对路径(文件或目录),也可以是一个url,还可以是一个tar文件(自动解压为目录)ADD <src> <dest>
COPY
复制本地主机的<src>(为Dockerfile所在目录的相对目录、文件或目录)为容器中的<dest>。目标路径不存在时,会自动创建。COPY <src> <dest>
使用本地目录为源目录时,推荐使用COPY.
ENTRYPOINT
配置容器启动后执行命令, 并且不可被docker run 提供的参数覆盖。每个Dockerfile中只有一个ENTRYPOINT, 当指定多个ENTRYPOINT时,只有最后一个生效。
有两种格式
ENTRYPOINT ["executable", "param1", "param2"] //shell 中执行 ENTRYPOINT command param1 param2
VOLUME
创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。VOLUME ["/data"]
USER
指定运行容器时的用户名或UID, 后续RUN也会使用指定用户USER daemon
当服务不需要管理员权限时, 可以通过该命令指定运行用户。 并且可以在之前创建所需要的用户。
RUN groupadd -r postgres && useradd -r -g postgres postgres
零时获取管理员权限使用gosu,而不推荐用sudo
WORKDIR
为后续的RUN、CMD、ENTRYPOINT 指令配置工作目录WORKDIR /path/to/workidr
可以使用多个WORKDIR命令,后续命令如果参数是相对路径,则会基于之前命令指定路径。
WORKDIR /a WORKDIR b WORKDIR c RUN pwd // 最终为/a/b/c
ONBUILD
配置当所创建的镜像作为其他新创建镜像的基础镜像时的操作指令ONBUILD [INSTRUCTION]
例如:Dockerfile 使用如下内容创建镜像image-A
[...] ONBUILD ADD . /app/src ONBUILD RUN /use/local/bin/python-build --dir /app/src [...]
新镜像Dockerfile中FROM image-A 指定基础镜像,会自动执行ONBUILD指令的内容,等价于在后面添加两句指令
FROM image-A //等价于 ADD . /app/src RUN /use/local/bin/python-build --dir /app/src
使用ONBUILD指令镜像,推荐在标签中注明,例如 ruby:1.9-onbuild. (也就是 image-A起名的时候起成这种标注的名字)
创建镜像
编写完Dockerfile后,可以通过docker build命令来创建镜像
docker build [选项] 路径
该命令将读取指定路径下(包括子目录)的Dockerfile,并将该路径下的所有内容发送给Docker服务端,由服务端来创建镜像。
一般建议放置Dockerfile的目录为空目录
通过
.dockerignore文件(每一行添加一条匹配模式)来让Docker忽略路径下的目录和文件。
要指定镜像的标签信息,可以通过" -t " 选项
//指定Dockerfile 所在目录 /tmp/docker_builder/,并且希望生成镜像标签为build_repo/first_image docker build -t build_repo/first_image /tmp/docker_builder/
后续继续补充中。。。。。
参考
Docker技术入门与实战+杨保华,戴王剑,曹亚仑编著+机械工业出版社。PS: 觉得不错的请点个赞吧!! (ง •̀_•́)ง
相关文章推荐
- Docker学习笔记(一):在本地安装和配置Docker
- Docker学习笔记二 安装
- Docker学习笔记一:如何在线安装
- docker 学习笔记入门(安装docker-io)
- Docker学习笔记二:安装Docker并管理镜像
- Docker学习笔记之ubuntu安装docker
- Docker学习笔记(1)-- 如何安装Docker
- Docker 入门学习笔记一:Ubuntu安装 Docker
- Docker学习笔记(1)-- 如何安装Docker
- docker学习笔记(一)——centos7 安装docker
- docker学习笔记(一)——安装
- Docker学习笔记(1)-- 如何安装Docker
- docker学习笔记1 -- 安装和配置
- Docker学习笔记(1)-- 如何安装Docker
- Docker学习笔记 — Docker安装(Ubuntu 64bit)
- docker 学习笔记1——安装与相关概念
- Docker学习笔记3:CentOS7下安装Docker-Compose
- Docker 安装学习笔记
- Docker学习笔记3:CentOS7下安装Docker-Compose
- Docker学习笔记——Docker安装部署