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.管理镜像
阿里云提供的有步骤,按照步骤即可!!!