服务相关命令

1.启动docket

   systemctl  start docker

2.停止docker服务

   systemctl stop docker

3.重启docker服务

  systemctl status docker

4.查看docket服务状态

  systemctl status docker

5.设置开机启动docker服务

  system enable docker

镜像命令:

1.查镜像:查看本地所有的镜像

     docker images

   docker images -q #查看所有的镜像的id

2.搜索镜像:从网络中查找需要的镜像

    docker serach 镜像名称

3.拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定规则是最新版本,如果不知道镜像版本,可以去docket hub  搜索对应镜像查看

  docker pull 镜像名称

4.删除镜像:删除本地镜像

  docker rmi 镜像id#删除制定本地镜像

  docker rmi `docker images -q` #删除所有本地镜像

容器相关命令:

1.创建容器

  创建容器:docker run  -it  --name=c1 centos:7 /bin/bash

  参数-i 表示容器一直运行着,-t表示分配一个终端, 创建以后,顺便就登陆到容器了,当ssh退出时,容器就会关闭

  docker run -id --name=c2 centos:7

  参数-d表示后台运行,创建以后,不会进入容器,通过ssh进入容器以后,退出容器,容器不会关闭

参数:

  -i:保持容器运行,通常与-t同时使用.加入it这2个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭

  -t:为容器重新分配一个伪输入终端,通常与-i同时使用

   -d:以守护(后台)模式运行容器.创建一个容器在后台运行,需要使用docker exec 进入容器.退出后,容器不会关闭

  -it:创建的容器一般称为交互式容器,-id创建的容器一般称为守护式容器

  --name:为创建的容器命名

2.查看容器

   docker ps:查看正在运行的容器

  docker ps -a#查看所有容器

3.进入容器:

  docker exec 参数#退出容器,容器不会关闭

   docker exec -it c2 /bin/bash

4.启动容器

  docker start 容器名称

  docker start c2

5.关闭容器

  docker stop 容器名称

  docker stop c2

6.删除容器

  如果容器是运行状态则删除失败,需要停止容器才能删除

  docker rm c2

  删除所有容器

  docker rm `docker ps -aq`

7.查看容器信息

  docker inspect 容器名称

  docker inspect c2

容器的数据卷

  数据卷:

  • .是宿主机中的一个目录或者文件
  • 当容器目录和数据卷目录绑定后,对方的修改会立刻同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个同期也可以被挂载多个数据卷

 配置数据卷:

  创建启动容器时,使用-v参数 设置数据卷

  docker run ... -v 所主机目录文件:容器内目录文件...

  注意事项:

     1.目录必须是绝对路径

    2.如果目录不存在,会自动创建

    3.可以挂载多个数据卷

   例子:docker run -it --name=c1 -v /root/data:/root/data_contailnet centos:7 /bin/bash

 配置数据卷容器:

  1.创建启动c3数据卷容器,使用-v参数设置数据卷

  docket run -it --name=3 -volumes centos:7 /bin/sh

   2.创建启动c1 c2容器,使用--volumes-from参数设置数据卷

  docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash

  docker run -it --name=c2 --volumes-form c3 centos:7 /bin/bash

部署mysql:

1.搜索mysql镜像

  docker search mysql

2.拉取mysql镜像

  docker pull mysql:5.6

3.创建容器,设置端口映射,目录映射

  #在/root目录下创建mysql目录用于存储mysql数据信息

  mkdir ~/mysql

  cd ~/mysql

 运行mysql:

  docker run -id \

  -p 3307:3306 \

  --name=c_mysql \

  -v $PWD/confi:/etc/mysql/conf.d \

  -v $PWD/logs:/logs \

  -v $PWD/data:/var/lib/mysql \

  -e MYSQL_ROOT_PASSWORD=123456 \

  mysql:5.6

参数说明:

  -p 3307:3306:将容器的3306端口映射到宿主机的3307端口

  -v $PWD/conf:/etc/myql/conf.d:将主机当前目录下的conf/my.cnf古早到容器的/etc/mysql/my.cnf配置目录

  -v$PWD/logs:/logs:将主机当前目录下的logs目录股灾到容器的/logs日志目录

  -v$PWD/data:/var/lig/myql:将主机当前目录下的data目录挂载到容器的/var/lib/mysql数据目录

  -e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码

 Tomcat部署:

  1.搜索tomcat镜像

    docker search tomcat

  2.拉取tomcat镜像

    docker pull tomcat

  3.创建容器,设置端口映射,目录映射

  #在/root目录下创建tomcat目录用于存储tomcat数据信息

  mkdir ~/tomcat

  cd ~/tomcat

  4.启动tomcat

  docker run -id --name=c_tomcat \

  -p 8080:8080 \

  -v $PWD:/usr/local/tomcat/webapps \

  tomcat

参数说明:

 -p8080:8080:将容器的8080端口映射到主机的8080端口

-v $PWD:/usr/local/Tomcat/webapps:将主机中当前目录挂载到当前容器的webapps

Nginx部署:

  1.搜索nginx镜像

  docker search nginx

  2.拉取nginx 镜像

  docker pull nginx

  3.创建容器,设置端口映射,目录映射

  #在/root/目录下创建nginx目录用于纯粹nginx数据信息

  mkdir ~/nginx

  cd  ~/nginx

  mkdir conf

  cd conf

  #在~/nginx/conf下创建nginx.conf文件,黏贴下面内容

  vim nginx.conf

docker run -id --name=c_nginx \

  -p 80:80 \

  -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \

  -v $PWD/logs:/var/log/nginx \

  -v $PWD/html:/usr/share/nginx/html

  nginx

参数说明:

   -p 80:80:将容器的80端口映射到宿主机的80端口

  -v $PWD/config/nginx.conf:/etc/nginx/nginx.conf :将主机当前目录下的/conf/nginx.conf挂载到容器的:/etc/nginx/nginx.conff配置目录

  -v $PWD/logs:/var/log/nginx:将主机当前目录下的logs目录股灾到容器的/var/log/nginx日志目录

部署Redis

  1.搜索redis镜像

  docker search redis

  2.拉取redis镜像

  docker pull redis:5.0

  3.创建容器,设置端口映射

  docker run -id --name=c_redis -p 6379:6379 redis:5.0

  4,使用外部机器连接redis

  ./redis-cli.exe -h 192.168.149.135 -p 6379

镜像制作:

Docker镜像如何制作?

  1.容器转为镜像

    docker commit 容器id 镜像名称:版本号    (注意容器id:通过docker ps -a 查看)

    docker save -o 压缩文件名称 镜像名称:版本号

      例子:docket save -o itheima_tomcat.tar itheima_tomcat:1.0

    docker load -i 压缩文件名称

      docket  load -i itheima_tomcat.tar 

  2.dockerfile概念

    .Dockerfile是一个文本文件

    .包含一条条的指令

    .每一条指令构建一层,基于基础镜像,最终构建出一个欣的镜像

    .对于开发人员:可以为开发团第提供一个完全一直的开发环境

 Dockerfile案例:

  需求:

      自定义centos7镜像.要求

      1.默认登陆路径为/usr

      2.可以使用vim

    实现步骤:

      1.定义父镜像:FROM centos7

      2.定义作者信息:MAINTAINER itheima<itheima@itcast.cn> 

      3.执行安装vim命令:RUN yum install -y vim

      4.定义默认的工作目录:WORKDIR /usr

      5.定义容器启动执行的命令:CMD /bin/bash  

                             

docker -it -d dock儿itd_nginx

 

 

         6.构建镜像文件

         docker build -f ./centos_dockerfile -t itheima_centos:1 .

Dockerfile案例:

  需求:定义dockerfile,发布springboot项目

  实现步骤:

    1.定义父镜像:FROM java:8

    2.定义作者信息:MAINTAINER itheima <itheima@itcast.cn>

    3.将jar包添加到容器:ADD springboot.jar app.jar

    4.定义容器启动执行的命令:CMD java -jar app.jar

    

docker -it -d dock儿itd_docker -it -d_02

    5.通过dockerfile构建镜像:docker build -f dockerile文件路径 -t镜像名称:版本号

    

docker -it -d dock儿itd_docker -it -d_03

Docker Compose服务编排工具:

    Docker Compose是一个编排多容器分布式部署工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止.

    使用步骤:

    1.利用Dockerfile定义运行环境镜像

    2.使用docker-compose.yml定义组成应用的各服务

    3.运行docker-compose up 启动应用

Docker Compose安装

  一.安装Docker Compose

    #Compose目前以及完全支持linux,max os和windows,在我们安装compose之前,需要安装Docker,下面我们以编译好的二进制包方式安装在linux系统中

curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose=`uname -s`-`uname -m` -o

/usr/local/bin/docker-compose

    #设置文件可执行权限

    chmod +x /usr/local/bin/docker-compose

    #查看版本信息

    docker-compose -version

二.卸载Docker Compose

    #二进制包方式安装,删除二进制文件即可

    rm /usr/local/bin/docker-compose

三.使用docker compose编排nginx+springboot项目

    1.创建docker-compose目录

    mkdir ~/docker-compose

    cd ~/docker-compose

    2.编写docker-coompose.yml文件

    

version:'3'
    services:
      nginx:
          image: nginx
      ports:
        - 80:80
      links:
        - app
      volumes:
        - ./nginx/conf.d:/etc/nginx/conf.d
      app:
        image:app
        expose:
          -"8080"

                                 

docker -it -d dock儿itd_docker -it -d_04

 

 

    3创建/nginx/conf.d目录

    mkdir -p ./nginx/conf.d

    4.在./nginx/conf.d目录下,编写itheima.conf文件

server{
    listen 80;
    access_log off;
    location /{
    proxy_pass http://app:8080;
    }
    }

    5.在~/docker-compose目录下使用docker-compose启动容器

    docker-compose up

    6.测试访问

    http://192.168.149.135/hello

 

 

 Docker私有仓库搭建:

    1.拉取私有仓库镜像

    docker pull registry

    2.启动私有仓库容器

    docker run -id --name=registry -p 5000:5000 registry

    3.打开浏览器输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]}表示私有仓库搭建成功

    4.修改daemon.json

    vim /etc/docker/daemon.json

    在上述文件中添加一个key,保存退出.此步让docker信任私有仓库地址,注意将私有仓库服务器ip修改为自己私有 仓库服务器真实ip

{"insecure-registries":["私有仓库服务器ip:5000"]}

    

docker -it -d dock儿itd_mysql_05

  5.重启docker服务

   systemctl restart docker

   docker start registry

二.将镜像上传至私有仓库

  1.标记镜像Wie私有仓库的镜像

  docker tag centos:7 私有仓库服务器ip:5000/centos:7

  2.上传标记的镜像

  docker push 私有仓库服务器ip:5000/centos:7

三.从私有仓库拉取镜像

  拉取镜像

  docker pull 私有仓库服务器ip:5000/centos:7

容器和虚拟机的比较:

  相同点:

     容器和虚拟机具有相似的资源隔离和分配优势

  不同:

    容器虚拟化的是操作系统,虚拟机虚拟化的是硬件

    传统虚拟机可以运行不同的操作系统,容器只能运行同一类型的操作系统

docker -it -d dock儿itd_docker_06