docker常用的命令

docker常用的命令

1.常用帮助命令:
	1.1.docker的信息以及版本号
		docker info 查看docker的信息
		docker version 查看docker的版本号

	1.2.docker的启动/停止/重启/查看状态
		service docker start 启动docker
		service docker stop 停止docker
		service docker restart 重启docker
		service docker status 查看docker当前的状态


2.镜像命令:
	2.1.docker images
		查询出本地的所有镜像
		所拥有的参数:
			-a:列出本地所有的镜像
			-q:只显示镜像的id
			-qa:可以连用,显示出所有镜像的id
			--digests:显示镜像的摘要信息
			--no-trunc:显示完整的镜像信息

	2.2.搜索镜像
		docker search 镜像名
		也可以通过dockerhub网站进行搜索
		所拥有的参数:
			--no-trunc:显示完整的镜像信息
			-s:列出收藏数不小于多少的镜像
				docker search -s 50 httpd
				显示出收藏数大于50的所有httpd镜像
			--automated:只显示automated类型的镜像
				也就是说忽略掉官网提供的镜像

	2.3.下载镜像
		docker pull 镜像名
		所拥有的参数:
			docker pull tomcat:8
			如果:后的版本号省略了,则表示从网上拉的镜像是最新版

	2.4.删除镜像
		删除单个镜像:
			docker rmi
			可以根据id进行删除也可以直接根据镜像名进行删除
			docker rmi tomcat:8 删除tomcat8版本的镜像
			如果不标识版本号直接使用docker rmi tomcat则直接全部删除
			所拥有的参数:
				-f:强制删除
		删除多个镜像:
			docker rmi -f tomcat hello-world nginx redis
			镜像和镜像之间使用空格隔开即可
		删除所有镜像:
			docker rmi -f $(docker images -qa)

	2.5.存出和载入镜像
		存出本地镜像为tar文件
			docker save -o centos:6.9.tar centos:6.9
			会自动存放在当前所在的目录
		导入镜像到本地镜像库中
			docker load --input centos:6.9.tar
			或者使用
			docker load < centos:6.9.tar

	2.6.上传镜像
		docker push 192.168.23.140:5000/私有仓库存放名/镜像名:版本号
		这里需要搭建私服,否则无法外网上传
		可以购买秘钥,也可以自己生成秘钥
		搜索"docker搭建私有仓库"


3.容器命令:
	3.1.通过镜像新建并启动容器
		docker run 镜像的名字:版本号
		所拥有的参数:
			--name="":给容器起一个名字
			-d:后台运行
			-i:与以交互模式运行容器,一般和-t连用
			-t:给容器重新分配一个伪终端,一般和-i连用
			-P:随机端口映射
			-p:指定端口映射
				四种方式:
					1.ip:hostPort:containerPort
					2.ip::containerPort
					3.hostPort:containerPort
					4.containerPort
		为容器起一个名字:
		docker run -i -t --name=leecentos centos:6.9
		使用-i -t启动的是交互式容器

	3.2.显示所有正在运行的docker容器
		docker ps
		所拥有的参数:
			-a:显示所有的容器
			-q:只显示容器编号
			-l:显示最近创建的容器
			-n:显示最近创建的n个容器
				docker ps -n 2

	3.4.退出容器
		exit:退出容器并且停止容器
		crtl+P+Q:退出容器但是不停止容器

	3.5.启动容器
		docker start 容器的id/容器名
			docker start 5005624c5a55

	3.6.重启容器
		docker restart 容器的id/容器名
			docker restart 5005624c5a55

	3.7.停止容器
		docker stop 容器的id/容器名
			docker stop 5005624c5a55

	3.8.强制停止容器
		docker kill 容器的id/容器名
			docker kill 5005624c5a55

	3.9.删除已停止的容器
		删除单个容器:
			docker rm 容器的id
				docker rm 5005624c5a55
		删除多个容器:
			docker rm -f $(docker ps -a -q)
			或者使用
			docker ps -a -q | xargs docker rm

	3.10.启动守护式容器
		docker run -d 镜像名

	3.11.查看容器日志
		docker logs -f -t --tail 容器id

	3.12.查看容器内部运行的进程
		docker top 容器的id

	3.13.查看容器的详细信息
		docker inspect 容器的id

	3.14.重新以交互的形式进入正在运行的容器
		不会打开新的终端,也就是不会启动新的进程,直接返回需要的结果
		docker exec -it 容器的id cd ls -l /home
		重新打开新的终端,开启新的进程
		docker attach 容器的id

	3.15.把容器中的文件copy到主机上
		docker cp 容器的id:容器的路径 主机的路径

docker常用的命令 演示:
1.常用帮助命令:
1.1.docker的信息以及版本号
docker info 查看docker的信息

		docker version 查看docker的版本号

		Client version: 1.7.1
		Client API version: 1.19
		Go version (client): go1.4.2
		Git commit (client): 786b29d
		OS/Arch (client): linux/amd64
		Server version: 1.7.1
		Server API version: 1.19
		Go version (server): go1.4.2
		Git commit (server): 786b29d
		OS/Arch (server): linux/amd64


	1.2.docker的启动/停止/重启/查看状态
		service docker start 启动docker
		service docker stop 停止docker
		service docker restart 重启docker
		service docker status 查看docker当前的状态


2.镜像命令:
	images:指的是镜像的意思,不是图片的意思
	2.1.docker images
		查询出本地的所有镜像
		所拥有的参数:
			-a:列出本地所有的镜像
				曾经删除过的,现在正在使用的,下载出错的镜像
			-q:只显示镜像的id
			-qa:可以连用,显示出所有镜像的id
			--digests:显示镜像的摘要信息
				显示该镜像的简单描述
			--no-trunc:显示完整的镜像信息
		REPOSITORY:当前所搜索的本地镜像来源于哪一个仓库
		TAG:版本号(从网上下载的时候,不指定版本号,默认拉到镜像为最新版本(latest))
		IMAGE ID:为镜像生成的唯一标识符(相当于数据库中的主键id,不能重复)
		CREATED:创建镜像的时间
		VIRTUAL SIZE:镜像的大小

	2.2.搜索镜像
		docker search 镜像名
		也可以通过dockerhub网站进行搜索
		所拥有的参数:
			--no-trunc:显示完整的镜像信息
			-s:列出搜藏数不小于多少的镜像
				docker search -s 50 httpd
				显示出收藏数大于50的所有httpd镜像
			--automated:只显示automated类型的镜像
				也就是说忽略掉官网提供的镜像
		NAME:表示搜索到镜像名字
			命名空间:是随意定义,为了区分开名字,名字不允许重复
				seven/httpd
		DISCRIPTION:对该镜像的描述
		START:收藏数(点赞数)
		OFFICIAL:官方提供
		AUTOMATED:非官方提供

	2.3.下载镜像
		docker pull 镜像名
		所拥有的参数:
			docker pull tomcat:8
			如果:后的版本号省略了,则表示从网上拉的镜像是最新版

	2.4.删除镜像
		删除单个镜像:
			docker rmi
			可以根据id进行删除也可以直接根据镜像名进行删除
			docker rmi tomcat:8 删除tomcat8版本的镜像
			如果不标识版本号直接使用docker rmi tomcat则直接全部删除
			所拥有的参数:
				-f:强制删除
		删除多个镜像:
			docker rmi -f tomcat hello-world nginx redis
			镜像和镜像之间使用空格隔开即可
		删除所有镜像:
			docker rmi -f $(docker images -qa)

	2.5.存出和载入镜像
		存出本地镜像为tar文件
			docker save -o centos:6.9.tar centos:6.9
			会自动存放在当前所在的目录
		导入镜像到本地镜像库中
			docker load --input centos:6.9.tar
			或者使用
			docker load < centos:6.9.tar

	2.6.上传镜像
		docker push 192.168.23.140:5000/私有仓库存放名/镜像名:版本号
		这里需要搭建私服,否则无法外网上传
		可以购买秘钥,也可以自己生成秘钥
		搜索"docker搭建私有仓库"


3.容器命令:
	3.1.通过镜像新建并启动容器
		docker run 镜像的名字:版本号
		所拥有的参数:
			--name="":给容器起一个名字(这个名字并不是通过镜像创建出容器的HOSTNAME,只是单纯的给容器起了一个名字)
			-d:后台运行
			-i:与以交互模式运行容器,一般和-t连用(与主机进行交互)
			-t:给容器重新分配一个伪终端,一般和-i连用(也就是给主机创建一个新的命令行去控制docker的centos系统)
			-P:随机端口映射
			-p:指定端口映射
				四种方式:
					1.ip:hostPort:containerPort
					2.ip::containerPort
					3.hostPort:containerPort
					4.containerPort
		为容器起一个名字:
		docker run -i -t --name=leecentos centos:6.9
		使用-i -t启动的是交互式容器

		当使用run命令的时候一直以为只会创建一个容器
			就会通过镜像创建一个新的容器,和之前创建的容器没有任何关系,container_id都不会不一样

	3.2.显示所有正在运行的docker容器
		docker ps
		所拥有的参数:
			-a:显示所有的容器
			-q:只显示容器编号
			-l:显示最近创建的容器
			-n:显示最近创建的n个容器
				docker ps -n 2

	3.4.退出容器
		exit:退出容器并且停止容器
		crtl+P+Q:退出容器但是不停止容器

	3.5.启动容器
		docker start 容器的id/容器名
			docker start 5005624c5a55
		表示容器在后台运行

	3.6.重启容器
		docker restart 容器的id/容器名
			docker restart 5005624c5a55

	3.7.停止容器
		docker stop 容器的id/容器名
			docker stop 5005624c5a55

	3.8.强制停止容器
		docker kill 容器的id/容器名
			docker kill 5005624c5a55

	3.9.删除已停止的容器
		删除单个容器:
			docker rm 容器的id
				docker rm 5005624c5a55
		删除多个容器:
			docker rm -f $(docker ps -a -q)
			或者使用
			docker ps -a -q | xargs docker rm

	3.10.启动守护式容器
		docker run -d 镜像名
		根据镜像创建一个容器,并不是开启新的命令行,当前这个容器只会在后台运行
		不会影响当前的本机使用!

	3.11.查看容器日志
		docker logs -f -t --tail=all 容器id
		echo 输出控制台

	3.12.查看容器内部运行的进程
		docker top 容器的id

	!!!!!!!!!3.13.查看容器的详细信息
		docker inspect 容器的id

	3.14.重新以交互的形式进入正在运行的容器
		不会打开新的终端,也就是不会启动新的进程,直接返回需要的结果
		docker exec -it 容器的id cd ls -l /home
		不会直接进入到系统中,直接在本机中使用命令,返回的是容器中home目录下所有的内容

		重新打开新的终端,开启新的进程
		docker attach 容器的id

	3.15.把容器中的文件copy到主机上
		docker cp 容器的id:容器的路径 主机的路径


4.实例运用
	4.1.运行tomcat
		指定端口号运行:
			docker run -it -p 8081:8080 tomcat:8
		随机端口号运行:
			docker run -it -P tomcat:8

	4.2.提交通过容器新创建的镜像
		docker commit -a="作者名" -m="描述" 容器的id 新的镜像的名字:新镜像的端口号
		demo:
			4.2.1.先启动tomcat容器
				docker run -it -p 8081:8080 tomcat:8
			4.2.2.打开新的终端进入启动的容器中
				docker exec -it 689487a032ee /bin/bash
			4.2.3.删除example目录
				rm -rf examples
				获取到一个没有examples的新tomcat容器
			4.2.4.根据新的容器创建一个新的镜像放入本地仓库中
				docker commit -a="seven" -m="this is new tomcat8" 689487a032ee lee/tomcat:8				


5.数据卷操作
	当根据镜像启动容器的时候,使用-v启动 然后设置共享目录
	只要在容器/主机的共享目录中发生改变数据,则数据会自动同步
	5.1.把数据持久化到主机上
		docker run -it -v /主机路径:/容器中路径 镜像名
	5.2.查看是否成功
		docker inspect 容器的id
		看到以下信息说明成功
			"Volumes": {
		        "/home/containerData": "/home/hostData"
		    }
		    "Binds": [
	            "/home/hostData:/home/containerData"
	        ]
		停止容器后,修改主机上的数据,当容器重新启动后是否会自动同步?
			5.2.1.停止容器:
				exit
			5.2.2.修改主机上的数据
			5.2.3.重新启动容器
				docker attach 容器的id
	5.3.带权限的持久化数据
		docker run -it -v /主机路径:/容器中路径:ro 镜像名

		思考问题?
			当在docker中部署mysql集群(读写分离),写的数据可以持久化到主机硬盘(对主机硬盘有写的操作)
			但是读的mysql服务器,对主机并没有权限去写入数据


!!!!!!开发docker就是开发dockerfile
6.使用dockerFile的方式创建镜像
	6.1.在home目录下创建dockerfiles文件夹
	6.2.在dockerfiles文件夹中创建Dockerfile文件
	6.3.编写dockerfile文件
		FROM centos:6.9
		VOLUME ["/home/containerData01","/home/comtainerData02"]
		CMD /bin/bash
	6.4.执行创建命令
		docker build -f /home/dockerfiles/dockerfile -t 创建的镜像名称:版本号 /home/dockerfiles
		docker build -f /home/dockerfiles/dockerfile -t 创建的镜像名称:版本号 .
			"."代表了当前目录下
	6.5.启动镜像创建容器
		docker run -it seven/centos:6.9
	6.6.查看镜像和本机共享的目录
		docker inspect 容器的id


7.dockerfile的语法规则
	7.1.FROM 基础镜像,当前新镜像是基于哪个镜像的。
	7.2.MAINTAINER 镜像维护者的姓名和邮箱地址
	7.3.RUN 容器构建时需要运行的命令
	7.4.EXPOSE 当前容器对外暴露出的端口号
	7.5.WORKDIR 指定在创建容器后,终端默认登录的进来的工作目录,落脚点,默认是根目录/
	7.6.ENV 用来在构建镜像过程中设置环境变量
	7.7.ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
	7.8.COPY 类似ADD,拷贝文件和目录到镜像中。eg. COPY src dest or COPY ["src","desc"]
	7.9.VOLUME 数据容器卷,用于数据保存和持久化工作。
	7.10.CMD指定一个容器启动时要运行的命令。DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换
	7.11.ENTRYPOINT 指定一个容器启动时要运行的命令。目的和CMD一样,但docker run 之后的参数会追加而不是替换。
	7.12.ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的ONBUILD被触发


8.docker实例
	8.1.docker部署mysql
		8.1.1.下载docker的mysql镜像
			docker pull mysql:5.7
		8.1.2.创建容器,并且持久化数据到本机
			docker run -p 3307:3306 --name mysql02 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
		8.1.3.测试mysql是否安装成功
			使用navicat进行连接即可
	8.2.docker部署redis单节点
		8.2.1.下载docker的redis镜像
			docker pull redis:5.0.3
		8.2.2.创建容器,并且持久化数据到本机
			docker run -p 6380:6379 -v /home/redis/data:/data -v /home/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:5.0.3 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
		8.2.3.测试redis是否安装成功
			docker exec -it 容器的id redis-cli


9.如何把自己的docker镜像发布到阿里云上
	9.1.登陆阿里云
	9.2.进入账号管理
	9.3.搜索镜像--->容器镜像服务
	9.4.点击创建镜像仓库菜单
		9.4.1.创建命名空间
		9.4.2.创建仓库的名字(全部都使用需要上传镜像的名字)
		9.4.3.仓库的类型选择"公开"
		9.4.4.下一步选择本地仓库
	9.5.管理镜像
		阿里云提供的有步骤,按照步骤即可!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值