其实简单来说Docker就像是一个打包好的linux 里面只有你得所有项目需要的东西,跟你主机完全隔离。运行起来非常方便。
基本概念:(常用的三个)
-
镜像(Image)
-
一个只读的模板,镜像可以用来创建 Docker 容器
-
用户基于镜像来运行自己的容器。镜像是基于 Union 文件系统的层式结构
-
可以简单创建或更新现有镜像,或者直接下载使用其他人的。可以理解为生成容器的『源代码』
-
容器(Container)
-
容器是从镜像创建的运行实例,在启动的时候创建一层可写层作为最上层(因为镜像是只读的)
-
可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
-
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序
-
仓库(Registry)
-
集中存放镜像文件的场所,可以是公有的,也可以是私有的
-
最大的公开仓库是 Docker Hub
-
国内的公开仓库包括 Docker Pool 等
-
当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了
-
Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务
docker 常用命令
docker build 一般在DockerFile目录下 运行build
docker build -t hello_docker .
-
-t : 镜像的名字及标签,通常 name:tag 或者 name
-
path : .点代表当前路径下的所有文件。
docker pull **** 下载网上得docker 镜像
docker images 查看本地仓库得docker 镜像(docker image ls)
docker run -i -t <IMAGE_ID> /bin/bash:-i:标准输入给容器 -t:分配一个虚拟终端 /bin/bash:执行bash脚本 -d:以守护进程方式运行(后台) -P:默认匹配docker容器的5000端口号到宿主机的49153 to 65535端口 -p <HOT_PORT>:<CONTAINER_PORT>:指定端口号
-
-name: 指定容 器的名称
-
-rm:退出时删除容器
docker exec -it bcc-mysql bash 进入指定容器
ctrl+d 退出容器且关闭, docker ps 查看无
ctrl+p+q 退出容器但不关闭, docker ps 查看有
//修改容器内容后 exit 退出容器 然后commit 保存一个新容器
docker commit -m ‘fun’ aaef9a68525a nginx-fun (示例)
docker images 查看容器 会发现多了一个容器
docker ps -|/-a |显示最后启动得容器 -a同时显示停止得容器
docker stop <CONTAINER_ID>
docker start <CONTAINER_ID>
复制容器内的文件到宿主机目录上
docker cp <CONTAINER_ID>:path hostpath
删除容器 docker rm [OPTIONS] CONTAINER 选项: – f,–force=false 强行终止并删除一个运行中的容器 – l,–link=false 删除容器连接,但保留容器 – v,–volumes=false 删除容器挂在的数据卷
容器的导入和导出 导出: [root@izuf64g8sd65ovaejq5rn0z ~]# docker export 8d >nginx.tar [root@izuf64g8sd65ovaejq5rn0z ~]# ls busybox.tar nginx.tar
docker login 输入账号和密码 登录
docker tag (imageName) (用户名)/(images):0.0(版本号) 打好tag
docker push imagesName 推送到自己仓库这个镜像
docker rmi -f $(docker images -q) 删除单个 后面直接跟Id 强制删除
docker inspect 来查看 Docker 的底层信息
安装docker-compose
sudo curl -L “https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
(上一步报错得话)
【sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose】不报错不需要
docker-compose –version 查看版本
docker rm docker ps -a | grep Exited | awk '{print $1}' 删除异常停止的docker容器
docker rmi -f docker images | grep '<none>' | awk '{print $3}' 删除名称或标签为none的镜像
docker run -v 目录|文件:目录|文件 *挂载时注意文件得目录和路径 如果找不到得话 他会在你所写的目录新建
Dockerfile 写法
第一步 From 镜像 可以是本地自己的镜像 也可以是网上的镜像 *注意加上Tag 版本(last 不用管)
Run 安装 必要的包 和依赖 相当于 在容器内部执行的命令
COPY 复制文件到 容器内部的目录
WORKDIR 相当于命令cd 目录
EXPOSE 暴露端口号
CMD 执行命令 [‘sh’, ‘xxx.sh’]
基础就这些 后续在添加
docker load -i xxx.tar 导入镜像包
docker save -o xxx.tar ImageId 导出镜像存储在当前文件夹下