docker和docker-compose使用总结

一、Docker

1、docker概念

Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口,应用程序在这个虚拟容器里运行。
docker中的三个基本概念:

  1. 镜像
    一个特殊的文件系统,够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
    2. 容器
    容器和镜像类似,容器就相当于镜像的一个实现类,是一个可以被操作的镜像。
    3. 仓库
    存放镜像的地方,可以从仓库中拉去镜像,也可以将构建好的镜像传到仓库中,供其他服务器使用该镜像。

2、docker的基本命令:

安装docker

 yum install -y docker

查看版本

docker -v

启动

systemctl start docker

重启docker服务

systemctl restart  docker
service docker restart

关闭docker

service docker stop   
systemctl stop docker

搜寻镜像

docker search NAME   

从仓库拉取镜像

docker pull CONTAINER  

查看下载下来的镜像

docker images

查看镜像详细信息

docker inspect  ID

创建镜像

1)基于已有镜像的容器创建
docker commit  [OPTIONS]  容器名/容器ID
-a ""    作者信息
-m ""   提交信息
-p  ""   提交时暂停容器运行
2)基于本地模板导入
cat    XXX.tar.gz |docker import - 容器名
3)基于Dockerfile创建
存出和载入镜像
docker save -o  XXX.tar  容器名   docker load --input XXX.tar

上传镜像

docker push  NAME[:TAG]

删除某个镜像

docker rmi   imageid

查看正在运行的容器

docker ps

查看所有的容器

docker ps -a 

删除一个容器

docker rm ID

启动容器

docker start  TED

停止容器

docker stop  TED

查看日志

docker logs ID

新建容器

docker create it  容器名:版本号

新建并启动容器

docker run  ...    -d 表示再后台运行

进入容器

docker exec -it   容器ID  bash   
docker attach  容器ID

退出容器

exit

导入和导出容器

docker export  CONTAINER  >  test.tar
cat test.tar | docker import  -CONTAINER  

在容器内创建数据卷

docker run -d -P --name rongqiname -v /webapp  centos

挂载一个主机目录作位数据卷,将/src/webapp目录加载到容器的/opt/webapp目录

docker run -d -P --name web -v /src/webapp:/opt/webapp centos   

创建dbdata容器,并在其中创建一个数据卷挂载到/dbdata目录下

docker run -it -v /dbdata --name dbdata ubuntu

创建容器db1并将dbdata数据卷容器挂载到db1和db2,这样/dbdata目录下的内容在db1和db2中通用

docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu

备份dbdata数据卷容器内的数据卷

Dockerfile基本结构
1.指定基础镜像
from  ubuntu
2.维护者信息
maintainer docker_user docker_user@email.com
3.镜像的操作指令
4.容器启动执行命令

3、docker-compose的基本命令:

安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

安装完成授权

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

检查是否安装成功

docker-compose --version

docker-compose XXX ,XXX可以是以下的参数

up

启动所有在Compose问中定义的容器,并且把它们的日志信息汇集在一起。通常会添加-d参数(在up后面),让容器在后台执行

start 

启动指定的已经存在的容器

build

重新建造由Dockerfile构建的镜像。

ps

获取由Compose管理的容器的状态信息

run

启动一个容器,并允许一个一次性的命令。被连接的容器会同时启动,除非用了 --no-deps参数。

logs

汇集由Compose管理的容器的日志,并以彩色输出。

stop

停止容器,但不会删除它们

rm

删除已停止的容器。不要忘记使用-v参数来删除任何由Docker管理的数据卷

使用docker-compose启动zookeeper和kafka为例:
需要自定义docker-compose.yaml,在docker-compose.yaml目录下执行docker-compose up -d,即创建并启动好了zookeeper和kafka容器。

version: "3"
services:
  zookeeper-0:
    container_name: zookeeper-0
    image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/zookeeper:3.4.10
    hostname: zookeeper-0
    environment:
    - ZK_REPLICAS=1
    - ZK_HEAP_SIZE=2G
    - ZK_TICK_TIME=2000
    - ZK_INIT_LIMIT=10
    - ZK_SYNC_LIMIT=5
    - ZK_MAX_CLIENT_CNXNS=60
    - ZK_SNAP_RETAIN_COUNT=3
    - ZK_PURGE_INTERVAL=1
    - ZK_LOG_LEVEL=INFO
    - ZK_CLIENT_PORT=2181
    - ZK_SERVER_PORT=2888
    - ZK_ELECTION_PORT=3888
    ports:
    - "2181:2181"
    - "2888:2888"
    - "3888:3888"
    command:
    - sh
    - -c
    - zkGenConfig.sh && exec zkServer.sh start-foreground
    volumes:
    - "./kafka/zk:/var/lib/zookeeper"
  kafka-0:
    container_name: kafka-0
    image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/kafka:1.0.0
    hostname: 127.0.0.1
    depends_on:
    - zookeeper-0
    links:
    - zookeeper-0
    ports:
      - "9092:9092"
    command:
    - sh
    - -c
    - "/opt/kafka/bin/kafka-server-start.sh config/server.properties \
           --override zookeeper.connect=zookeeper-0:2181 \
           #--override log.dirs=/opt/kafka/data/logs \
           --override broker.id=0 "
    volumes:
    - "./kafka/kafka:/opt/kafka/data"
  # mysql:
  #   container_name: mysql
  #   hostname: mysql
  #   image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/mysql:5.7.17
  #   ports:
  #   - "3306:3306"
  #   environment:
  #     MYSQL_ROOT_PASSWORD: root
  #   volumes:
  #   - ./mysql/mysql_data:/var/lib/mysql
  #   - ./mysql/mysql_db.cnf:/etc/mysql/conf.d/mysql_db.cnf


发布了36 篇原创文章 · 获赞 28 · 访问量 1505

猜你喜欢

转载自blog.csdn.net/tc979907461/article/details/105242779