其实简单来说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 导出镜像存储在当前文件夹下