Docker学习篇(三:docker命令篇)

docke的常用命令

基本命令
#启动docker
	systemctl start docker  
	service docker start
	
#关闭docker
	systemctl stop docker
	service docker stop 
	
#重启docker	
	service docker restart   
	
#设置docker开机自启动	
	systemctl enable docker  
	
#查看启动的docker版本信息
	docker version	
	
#卸载docker
	yum remove docker-ce docker-ce-cli containerd.io
	rm -rf /var/lib/docker(docker的默认工作路径)

#察看日志
	docker logs
		-ft    #显示日志
		--tail   #显示的行数

#查看cpu状态
	docker stats

#构建镜像
	docker build
		-f 文件            #目标文件dockerfile
		-t 名字:版本号     #生成的镜像
		.                 #当前目录下
			eg:docker build -f dockerfile文件路径 -t 镜像名:[tag] .

#帮助命令
	docker --help

#docker系统信息
	docker info
镜像命令
#查看所有本地的主机上的镜像
	docker images  
			-a   #列出所有的镜像
			-q   #只显示镜像的id
			
#搜索镜像		
	docker search 镜像名  
			--filter=***=   #过滤筛选
			
#下载镜像		
	docker pull 镜像名   
	
#指定版本下载		
	docker pull 镜像名:版本   
	
#删除指定的镜像
	docker rmi -f 镜像id   
	
#删除多个镜像	
	docker rmi -f 镜像id 镜像id 镜像id   
	
#删除全部镜像	
	docker rmi -f $(docker images -aq)   

#后台启动一个容器
	docker run -d 镜像名

#查看镜像的元数据
	docker image inspect 镜像名字

#察看镜像构建过程
	docker history 镜像名字
如何发布自己的镜像?
1.docker login -u 账号  #登录dockerhub,然后输入密码,登录成功会显示
2.docker push 镜像名字:tag   #将自己的镜像发布到服务器上   
	注意:如果没有tag会造成推送不成功
	
#给镜像添加tag
	docker tag  镜像id 新的镜像名字:tag   
容器命令
#启动容器
	docker run [可选参数] 镜像名字
		--name="***"   容器名字,用来区分容器
			-d             后台方式运行
			-it            使用交互式运行,进入容器查看内容
			-P             指定容器的端口 -P 8080:8080(小写)
				-P ip:主机端口:容器端口
				-P 主机端口:容器端口(常用)
				-P 容器端口
			-p             随机指定端口(大写)
			-e   		   配置环境
			-v             容器数据卷,挂载    -v 外面的路径:docker容器内的路径
			
#列出运行的容器
	docker ps
		-a   #列出当前正在运行的容器+历史运行过的容器
		-n=?   #显示最近创建的容器
		-q   #只显示容器的编号
		
#退出容器
	exit   #直接停止容器并退出
	ctrl+p+q   #容器不停止退出

#删除容器
	docker rm 容器id   #删除指定的容器,不能删除正在运行的容器
	docker rm -f $(docker ps -aq)   #删除所有的容器
	docker ps -a -q | xargs docker rm   #删除所有的容器 
	
#启动和停止容器		
	docker start 容器id   #启动容器
	docker restart 容器id   #重启容器
	docker stop 容器id   #停止当前正在运行的容器
	docker kill 容器id   #强制停止当前容器

#查看容器中的进程信息
	docker top 容器id

#查看容器的元数据
	docker inspect 容器id

#进入容器并新打开一个命令窗口
	docker exec -it 容器id bashShell
		eg:docker exec -it ******** /bin/bash

#进入容器执行的命令窗口
	docker attach 容器id

#将容器内文件拷贝出来
	docker cp 容器id:容器内路径 目的的主机路径

#提交容器到一个新的镜像
	docker commit -m="提交的描述信息" -a="作者” 容器id 目标镜像名:[TAG]
容器数据卷(挂载)
是什么?

docker 容器数据卷是容器在运行过程中持久化数据的一种方式,卷是目录或文件,存在于一个或多个容器中,由docker 挂载到容器,但不属于联合文件系统,因此能够绕过Union File System 提供一些用于持续存储或共享数据的特性;卷的设计目的就是数据持久化,完全独立于容器的生命周期,因此docker不会在容器删除时,删除其挂载的数据卷。

特点?

数据卷可在容器之间共享或重用数据。
卷中的更改可以直接生效。
数据卷中的更改,不会包含在镜像中的更新。
数据卷的生命周期一直持续到没有容器使用它为止。

怎么做?
#直接命令添加
	-v 容器内路径    #匿名挂载
	-v 卷名:容器内路径    #具名挂载
	-v /宿主机路径:容器内路径    #指定路径挂载
	-v /宿主机路径:容器内路径:权限   #指定路径挂载
		ro-只读
		rw-读写(默认)
		一旦写书ro,就说明这个文件只能通过宿主机操作,无法在容器内部操作
		
	eg:docker run -it -v /宿主机绝对路径:/容器内目录:权限 镜像名
		
如何实现容器间的数据共享?
--volumes-from 父容器
	docker run -it --name docker02 --volumes-from docker01 镜像名字
dockerFile(会写最好)
		FROM         #基础镜镜像,—切从这里开始构建
		MAINTAINER         #镜像是谁写的,姓名+邮箱
		RUN                #镜像构建的时候需要运行的命令
		ADD         #步骤: tomcat镜像,这个tomcat压缩包!添加内容,会自动解压
		WORKDIR			#镜像的工作目录 
		VOLUME			#挂载的目录
		EXPOSE			#暴露端口配置
		CMD			#指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
		ENTRYPOINT			#指定这个容器启动的时候要运行的命令,可以追加命令
		ONBUILD      #当构建一个被继承dockfile,这个时候就会运行onbuild的指令,触发指令
		COPY			#类似ADD ,将我们文件拷贝到镜像中
		ENV			# 构建的时候设置环境变量!
docker网络
docker容器和容器之间是可以互相ping通的,linux外部也是可以ping通容器内部地址访问

为什么?
我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个
网卡docker0桥接模式,使用的技术是evth-pair技术

什么时evth-pair技术?
evth-pair技术,就是一对的虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连,正因为这个
特性,evth-pair技术可以充当一个桥梁,连接各种虚拟网络设备,openstac,Docker容器之间的连接,oVS
的连接,都是使用evth-pair技术

#查看容器内部网络地址
	docker exec -it 容器名字 ip addr

#查看所有的docker网络
	docker network ls
		bridge:桥接模式(docker默认,自己创建时也使用bridge模式)
		none:不配置网络
		host:和宿主机共享网络
		container:容器网络互通(用的少!局限性很大)

#查看当前网络的相关信息
	docker network inspect networkID
容器互联

为什么要容器互联?
服务每次启动的ip地址不通,通过容器互联可以实现通过服务名字调通对应的ip

实现容器互联的方式

①--link
可以让容器之间通过名字进行访问,正向ping,不能反向ping通,本质就是在hosts文件中添加了一对网络绑定

eg:docker run -d -P --name tomcat03 --link tomcat02 tomcat

②--net   自定义网络   
自定义的网络docker已经维护好了对应的关系,可以直接实现名字ping通对应的容器
	docker run -d -P --name tomcat01 tomcat  等价于 docker run -d -P --name tomcat01 --net bridge tomcat

#自定义网络配置文件 mynet
	docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet   
网络联通

将一个容器连接到一个网络上

#打通网络,实质就是将容器配置到自定义网络配置文件中
	docker network connect 网络配置文件 容器名字   
	eg:docker network connect mynet tomcat01 

你可能感兴趣的:(docker)