docker学习笔记(二)

第七章

端口映射实现容器访问

1. 从外部访问容器应用
	在启动容器的时候, 如果不指定对应参数, 在容器外部是无法通过网络来访问容器内的 网络应用和服务的
	通过-P或-p参数来指 定端口映射
	-P 随机映射一个49000-49900 的端口 到内部容器开放的网络端口:
	-p 指定要映射的端口 并且,在一个指定端口上只可以绑定一个容器。 
	格式:IP:HostPort:ContainerPort | IP::ContainerPort |HostPart:ContainerPort
2. 映射所有接口地址
	HostPort:ContainerPort 本地的5000端口映射到容器的5000端口
	docker run -d -p 5000:5000 training/webapp python app.py 
	此时默认会绑定本地所有接口上的所有地址,多次使用-p标记可以绑定多个端口
3. 映射到指定地址的指定端口
	IP:HostPort:ContainerPort	使用一个特定的地址
	docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py 
4. 映射到指定地址的任意端口
	IP::ContainerPort 绑定localhost的任意端口到容器的5000端口,本地主机会自动分配一个端口: 
	docker run -d -p 127.0.0.1::5000 training/webapp python app.py 
	
	还可以使用udp标记来指定 udp端口: 
	docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py 
5. 查看端口映射
	docker port

互联机制实现便捷互访

1. 自定义容器命名
	使用 --name myweb	给容器起一个别名	别名唯一
	docker run 的时候 添加 --rm 标记 则容器在终止 后会立刻删除
	--rm 和 -d 不能同时使用
2. 容器互联
	--link 参数可以让容器质检安全交互
	docker run -d --name db training/postgres
	docker run -d -P --name web --link db:db training/webapp python app.py 
	--link name: alias   name链接的容器名称,alias是别名
3. 可以使用ping 命令来测试 容器间的连通

第八章

Dockerfile 创建镜像

1. Dockerfile 主体内容分为:基础镜像信息、维护者信息、镜像操作指令、容器启动时指令
首行可以通过注释来指定解析器命令 后续通过注释说明镜像的相关信息
主体部分首先使用 FROM 指令指明所基于的镜像名称
LABEL指令说明维护者信息
然后是镜像操作指令  RUN 指令将对镜像执行跟随的命令 
每运行一条RUN指令, 镜像添加新的一层, 并提交。 
最后是CMD指令, 来指定运行容器时的操作命令。 

2. 指令说明
	配置指令和操作指令
	FROM:指定所创建的镜像的基础镜像
		任何Dockerfile 中第一条指令必须为FROM指令
	LABEL:指令可以为生成的镜像添加元数据标签信息
		LABEL version="1.0.0-rc3"
	EXPOSE:声明镜像内服务监听的端口
		EXPOSE 22 80 443	该命令只是起声明作用、并不会自动完成端口映射
	ENV:指定环境变量 在镜像生成过程中会被后续RUN指令使用
		ENV APP_VERSION=1.0.0
		ENV APP_HOME=/user/local/app
	ENTRYPOINT:指定镜像的默认入口命令	容器启动时作为跟命令执行
		EXNTRYPOINT ["executalbe","param1","param2"] :exec调用执行
		EXNTRYPOINT command param1 param2 :shell中执行
		每个Dockerfile只能有一个EXNTRYPOINT
	VOLUME:创建一个数据卷挂载点
		VOLUME ["/data"]
	WORKDIR:为后续的RUN、CMD、ENTRYPOINT指令配置工作目录
		WORKDIR /path/to/workdir   建议使用绝对路径
	STOPSIGNAL:指定所创建镜像启动的容器接收退出的信号值:
		STOPSIGNAL signal 
	HEALTHCHECK:配置所启动容器如何进行健康检查
	SHELL:	指定其他命令使用 shell 时的默认 shell 类型
		SHELL [”executable”,”parameters”] 
		默认值为 ["/bin/sh","-c"] 

	操作指令:
	RUN:运行指定命令
		RUN <command>或 RUN [ "executable " , ”paraml” , ”param2 ]
			前者默认将在 shell 终端中运行命 令,即/bin/sh -c ; 
			后者则使用 exec 执行,不会启动 shell 环境
			RUN ["/bin/bash","-c","echo hello"]
		每条 RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像层 
		当命令较长时 可以使用\来换行
		RUN apt-get update \ 
		&& apt-get install -y libsnappy-dev zliblg-dev libbz2-dev \ 
		&& rm -rf /var/cache/apt \ 
		&& rm rf /var/lib/apt/lists/* 
	CMD:指令用来指定启动容器时默认执行的命令
		CMD ["executalbe","param1","param2"]	
		相当于executalbe param1 param2  推荐使用
		CMD command param1 param2 在默认的 Shell 中执行,提供给需要交互的应用;
		每个Dockerfile只能有一个CMD命令 如果存在多个则最后一条被执行
	
	ADD:添加内容到镜像
		ADD src destination
	
	COPY:复制内容到镜像
		COPY src destination 复制本地主机的<src> (为 Dockerfile 所在目录的相对路径,文件或目录)下内容到镜 像中的<dest>
		ADD 与COPY 相似 推荐COPY

创建镜像

编写完成Dockerfile后 可以通过docker build 来创建镜像

1. 创建镜像build
	docker build PATH | URL
	docker build -t myimage/first_image:1.0.0	.
2. 父镜像选择
	通过FROM选择指定父镜像
	基础镜像和普通镜像
3. 多步骤创建
	可以精简最终生成的镜像大小
	对于需要编译的应用 C GO JAVA语言等 通常情况下至少需要准备两个环境的docker镜像
	编译环境镜像:包括完整的编译引擎、依赖库等往往比较庞大 作用:编译应用为二进制文件
	运行环境镜像:利用编译好的二进制文件、运行应用 由于不要编译环境 体积比较小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值