步入 Docker


 

目录

文档

安装

常规安装

简化安装

模型

概念

镜像

容器

仓库

数据卷

Dockerfile

Docker 命令

镜像相关

容器相关

docker-compose


文档

官方文档地址:https://docs.docker.com/get-started/

中文文档地址:https://vuepress.mirror.docker-practice.com/

安装

常规安装

 见上面的Docker 文档即可

简化安装

在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中

#下载docker
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
#启动docker
sudo systemctl enable docker
sudo systemctl start docker
#创建docker用户组
sudo groupadd docker
#将当前用户加入docker组
sudo usermod -aG docker $USER

模型

docker模型 的图像结果

概念

镜像

镜像是原子化的 逻辑镜像=物理镜像+环境镜像+OS镜像 逻辑镜像是应用模板

容器

容器本质上是多个镜像加载到内存中的副本的组合,因此容器是OS级别的隔离,最终表现为精简的OS+运行需要的环境+对应的应用,比如tomcat容器就是精简的OS+jdk+tomcat。 镜像每次运行之后就产生一个容器,容器就是镜像实例,也就是应用。

仓库

用来存放镜像的位置,类似于maven仓库,也是镜像下载和上传的位置,有远程和本地仓库之分。

  • 本地仓库

  • 设置远程阿里云镜像仓库

    • 1.获取镜像仓库地址

      登陆阿里云控制台--->搜索容器镜像服务–-->镜像加速器–-->获取加速器地址

    • 2.设置

      sudo mkdir -p /etc/docker
      
      sudo tee /etc/docker/daemon.json <<-'EOF'
      {
        "registry-mirrors": ["镜像仓库链接"]
      }
      EOF
      
      sudo systemctl daemon-reload
      
      sudo systemctl restart docker

数据卷

宿主机目录和容器内目录进行绑定以同步 只有在创建容器的时候才可以进行绑定

Dockerfile

Dockerfile是一个文件,内容是镜像产生需要执行的语句。 Dockerfile中一个命令或注释独占一行

- FROM
  FROM  镜像名:版本
基于这个镜像进行构建,必须作为Dockerfile的第一个指令出现。
- RUN
  RUN 命令
在当前工作目录下执行后面的命令
- WORKDIR
  WORKDIR 目录
相当于cd到指定目录,如果这个目录不存在,它将被创建。
且进入容器时会进入到最后指定的目录
- ENV
  ENV 变量=值
设置环境变量,用的时候这样:$变量。
- ADD
  ADD 本地文件路径/远程文件url 容器中路径    
复制本地文件或远程文件到容器指定路径的中
- CMD
  CMD 命令
指定容器启动时执行的命令,只有最后一个(所有容器Dockerfile的CMD的最后一个)才会生效。
- #
  注释

Docker 命令

查看docker 信息

  • docker version
  • docker info

镜像相关

查看docker 已经有的镜像

        docker images 

        参数 -q (镜像id)

移除docker 镜像

        docker image rm -f 镜像

        docker image rm -f $(docker images -q) #删除全部镜像

从远程仓库拉镜像

        docker pull 镜像

本地仓库镜像打包

        docker save 镜像名/id:版本 -o 镜像包路径 打包之后的镜像就是一个文件

从Dockerfile 构造镜像

        docker build -t 镜像名:版本 -f Dockerfile路径 上下文目录(里面存放了构建需要的文件,

         Dockerfile里面需要复制的文件都是以这个目录为当前目录的,且路径不能写出这个目录。)

容器相关

利用镜像创建并启动容器

docker run 
【-d】(后台运行)
【-p  宿主机端口:容器所在OS端口】(宿主机端口和容器所在OS端口映射)
【--name 名字】(给容器命名)
【-v 宿主机目录绝对路径/任意别名:容器内目录路径】
(数据卷(volume),即宿主机目录和容器内目录进行绑定以同步。
如果宿主机目录路径是绝对路径,则创建容器时宿主机目录会覆盖容器内目录;如果是别名则会在创建容器时自动在宿主机中创建一个目录,并将容器目录文件复制到宿主机中(/var/lib/docker/volumes/别名/_data)。)
【-e var=value】(传递需要的环境变量(参数))
镜像
【容器启动时执行的命令】(一般会有默认的命令)

需要绑定的文件:
mysql:数据文件 /var/lib/mysql
nginx:配置文件 /etc/nginx/nginx.conf
         数据文件 /usr/share/nginx/xxx
redis:数据文件 /data
        配置文件(自己定义) 一般路径为
        /etc/redis-6.0.6/redis.conf

需要的环境变量(参数):
mysql: 
MYSQL_ROOT_PASSWORD=密码(设置mysql中root的密码)

查询容器

        docker ps 【-a】(所有容器,包括运行的和没有运行的。) 【-q】(只显示容器id)

启动容器

        docker start 容器名/id

停止容器

        docker stop 容器名/id

重启容器

        docker restart 容器名/id

查看容器内的信息

        docker inspect 容器名/id

查看日志(应用的输出)

        docker logs 【-f】实时刷新 容器名/id

进入容器内部

        docker exec -it 容器名/id bash

移除容器

        docker rm -f 容器名 docker rm -f $(docker ps -aq) #移除所有容器

docker-compose

用来启动容器,不用我们关心启动顺序了。 把它下载到/usr/local/bin目录下并改名为docker-compose,然后增加执行权限。 写好docker-compose.yml(这个文件里的内容和docker run的东西是等价的),再启动项目

#启动项目
docker-compose 
【-f  docker-compose.yml的路径】
【-d 】(后台启动)
 up

#关闭用docker-compose启动的所有容器
docker-compose 
【-f  docker-compose.yml的路径】
down 

docker-compose文件模板

#docker-compose的版本
version: "3.8"
#一组容器
services:
  #容器(自定义),默认生成的容器名为:项目名(docker-compose.yml所在目录的目录名)_容器_序号。
  container1:
      #镜像
    image: image1
    #通过Dockerfile构建镜像然后运行
    build: /dir/of/Dockerfile
    #容器名
    container_name: container-name 
    #端口映射(可多个) 宿主主机端口:容器端口 
    ports:
      - 80:80
    #数据卷(可多个) 宿主主机文件(必须已存在):容器文件
    volumes:
      - /path/in/host:/path/in/container
    #环境变量(可多个)
    environment:
      - var=value
    #覆盖容器启动时执行的命令
    command: new-command
    #先启动这些,再启动本身.
    depends_on:
      - 服务1

End~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值