Docker+k8s_基础docker知识

一、docker命令
	#基础命令百度一大堆
主要对镜像进行一些操作:
	docker search/pull/push <images>   #搜索/拉取/推送 <镜像>
	docker image save <images>  >  images.tar.gz #导出某个镜像
	docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o images.tar #导出所有镜像
	docker images load -i images.tar.gz #导入镜像
	docker image rmi <images>:v1  #删除镜像:版本
	docker images inspect <images> #查看镜像详细信息
	docker tag <images> <新的镜像名字>:v1 #如果要讲镜像传进harbor,要打成:10.0.0.100/library/busybox:v1

镜像核心:分层
	docker commit -a="angus" -m="angus's tomcat remove doc" b2a3d7b67722  angustomcat:1.0 #将已有的容器打包成镜像:-a 为作者 -m 为描述信息  b2a3d7b67722运行中的容器的ID(或者名字)   angustomcat 镜像名:版本
	
对容器进行的操作:
	docker container inspect 容器名称 /bin/bash #/id #查看容器详细信息、ip
	docker exec -it 容器名称 /bin/bash #进入容器
	
-------------------------------------------------

二、dockerfile
#dockerfile四部分:基础镜像、维护者、镜像操作、容器启动脚本
1、基础
	格式:
  FROM <image>
  FROM <image>:<tag>
  FROM <image>@<digest>
  
2、维护者
	格式:
    MAINTAINER <name>
    
3、构建镜像运行的命令 #重点
	1、RUN - shell执行
		RUN <command>
		RUN yum -y install wget
		``
			1)RUN 指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定 --no-cache 参数,如:docker build --no-cache
			2)Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:
					ROM centos
					RUN yum install wget \
    			&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
   				&& tar -xvf redis.tar.gz
					`如上,以 && 符号连接命令,这样执行后,只会创建 1 层镜像`

	2、ADD - 添加文件到容器,本地文件会自动解压,网络文件不会 - 类似`wget`
		ADD <src> <dest>
		ADD *.log /log/
	
	3、COPY - 类似ADD,不能自动解压,不能访问网络资源
	
	4、CMD - 容器启动时调用的命令
		CMD command(shell)
		CMD ["/usr/bin/ls","/etc"]
	
	5、ENTRYPOINT - 配置容器
		使用类似CMD,并且CMD可以直接在它的基础上加参数
		ENTRYPOINT ["/usr/bin/ls","/etc"]
		CMD ["/tmp"]
		``
			docker run命令中的参数会传递给ENTRYPOINT,但是只能传递一次,多个的话只用最后一个;CMD不会
			
	6、LABEL - 为镜像添加元数据
		LABEL <key>=<value> <key>=<value>
		``
			推荐一个LABEL 指定多个元数据,空格间隔
	
	7、ENV - 环境变量
  	ENV <key> <value1 vlaue2> #多个值对应一个key
  	ENV  <key1>=<value1> <key2>=<vlaue2> #key中有空格,用\转义,\也可以续行
  
  8、EXPOSE - 容器端口
  	EXPOSE 11211/tcp 11211/udp #默认tcp
 
  9、VOLUME - 持久卷
  格式:
    VOLUME ["/path/to/dir"]
	示例:
    VOLUME ["/data"]
    VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"]
	``
  一个卷可以存在于一个或多个容器的指定目录,该目录可以绕过联合文件系统,并具有以下功能:
	1 卷可以在容器间共享和重用
	2 容器并不一定要和其它容器共享卷
	3 修改卷后会立即生效
	4 对卷的修改不会对镜像产生影响
	5 卷会一直存在,直到没有任何容器在使用它
		
	10、WORKER - 工作目录,类似cd
		WORKDIR /a  (这时工作目录为/a)
    WORKDIR b  (这时工作目录为/a/b)
  
  11、USER - 指定用户
  	使用用户名、UID、GID,或者其中两者结合
  	``
  		docker run 运行镜像时,可通过-u来覆盖指定用户
  
  12、AGE - 指定变量
  	AGE site
  	AGE site=1
  
  13、ONBUILD - 设置镜像触发器 - 当所构建的镜像被作为基础镜像,该镜像的触发器会触发
  	ONBUILD RUN yum -y install nginx
  
  14、制作Dockerfile
  	vim Dockerfile --- 
  	docker build -f xxx
  	
三、使用容器的建议
	1. 不要以拆分方式进行应用程序发布
	2. 不要创建大型镜像
	3. 不要在单个容器中运行多个进程
	4. 不要再镜像内保存凭证,不要依赖IP地址
	5. 以非root用户运行进程
	6. 不要使用“最新”标签
	7. 不要利用运行中的容器创建镜像
	8. 不要使用单层镜像
	9. 不要将数据存放在容器内
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值