docker使用

docker的安装和基础命令使用

安装环境

​ 我自己使用的linux是centos7 64位的,可能不同的linux版本安装的方法不大相同吧。这些安装的步骤直接复制粘贴就好了,也不用咋记住吧!谷粒商城后面的知识点总结和自己踩的坑都会记录下来呢,可以关注一波。

1. 安装命令

# 1、yum 包更新到最新 
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y 
yum install docker-ce docker-ce-cli containerd.io
# 5、 查看docker版本,验证是否验证成功
docker -v

​ 这个我使用的时候也没出啥错

2. 卸载命令

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

​ 如果有问题就先卸载一下在重新安装吧

3. 对docker进行配置

#配置淘宝镜像 在这个地方查看的命令https://cr.console.aliyun.com/cn-qingdao/instances/mirrors?accounttraceid=40a466fc0af94a0d96e841e0f6eadff3kbyt
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://chqac97z.mirror.aliyuncs.com"]
}
EOF

# 设置开机自启动
sudo systemctl enable docker

docker中的基本概念

  • 架构

    • 镜像

      它相当于一个安装包的概念,你只有有镜像了才可以进行安装

    • 容器

      容器的话就是你安装过后的镜像,可以直接使用的软件呢

    • 仓库

      这个项目好像没有使用过这个东西,它是用来保存镜像的,后面也总结一下吧

  • docker命令

    • docker进程相关的命令,有一次数据库忽然连不上了,搞了一大圈东西,弄好了,第二次发现重启了一下docker就好了

      • 启动docker服务:systemctl start docker
      • 停止docker服务:systemctl stop docker
      • 重启docker服务:systemctl restart docker
      • 查看docker服务状态: systemctl status docker
      • 设置开机启动docker服务:systemctl enable docker
    • docker镜像命令

      • 查看镜像:docker images

      • 搜索镜像:从网络中查找需要的镜像:docker search 镜像名称

      • 拉取镜像:docker pull 镜像名称(后面接分号,可以直接找到所要下载的版本号) 例如docker pull mysql:5.7

      • 删除镜像:docker rmi 镜像id # 删除指定本地镜像

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

    • docker 容器命令

      • 查看已经打开的容器:docker ps -a 查看所有容器包括已经关闭的 加q值显示id

        ​ docker ps显示正在运行的容器

      • 创建并启动容器:docker run 参数

        这里要对参数进行说明:

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

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

        -v:是把宿主机的目录挂载到容器中

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

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

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

        -e:设置参数

      • 进入容器: docker exec 参数

      • 停止容器:docker stop 容器名称

      • 启动容器:docker start 容器名称

      • 删除容器:docker rm 容器名称

      • 查看容器信息:docker inspect 容器名称

      • 重启:docker restart 容器名称

      • 设置开机启动:docker update 镜像名称--restart=always

        这里面的容器名称也可以换成container id而且这个id值只复制一部分就好了,如果想要删除一个容器,不许停止容器后才可以进行删除,不然是删不掉的

  • 常用软件的安装(后面用到其它的也会总结进来,直接复制粘贴就好了)

    • mysql

      安装镜像

      sudo docker pull mysql:5.7
      # --name指定容器名字 -v目录挂载 -p指定端口映射  -e设置mysql参数 -d后台运行
      sudo docker run -p 3306:3306 --name mysql \
      -v /mydata/mysql/log:/var/log/mysql \
      -v /mydata/mysql/data:/var/lib/mysql \
      -v /mydata/mysql/conf:/etc/mysql \
      -e MYSQL_ROOT_PASSWORD=root \
      -d mysql:5.7
      

      对mysql进行配置

      vi /mydata/mysql/conf/my.conf 
      
      [client]
      default-character-set=utf8
      [mysql]
      default-character-set=utf8
      [mysqld]
      init_connect='SET collation_connection = utf8_unicode_ci'
      init_connect='SET NAMES utf8'
      character-set-server=utf8
      collation-server=utf8_unicode_ci
      skip-character-set-client-handshake
      skip-name-resolve
      

      重启mysql

      docker restart mysql
      
    • redis

      安装redis

      mkdir -p /mydata/redis/conf
      touch /mydata/redis/conf/redis.conf
      docker pull redis
      
      docker run -p 6379:6379 --name redis \
      -v /mydata/redis/data:/data \
      -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
      -d redis redis-server /etc/redis/redis.conf
      

      对redis进行配置

      #配置持久化
      vim /mydata/redis/conf/redis.conf
      #插入下面内容
      appendonly yes
      #重启redis
      docker restart redis
      
    • 对elasticsearch和kibana(把elasticsearch可视化类似于sqlyog)进行安装

      拉去镜像和配置映射目录

      docker pull elasticsearch:7.6.2
      docker pull kibana:7.6.2
      #设置映射目录
      mkdir -p /mydata/elasticsearch/config
      mkdir -p /mydata/elasticsearch/data
      echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
      #更改映射权限
      chmod -R 777 /mydata/elasticsearch/
      

      安装elasticsearch

      docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
      -e  "discovery.type=single-node" \
      -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
      -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
      -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
      -v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
      -d elasticsearch:7.6.2
      
      #设置开机启动
      docker update elasticsearch --restart=always
      

      安装kibana

      docker run --name kibana -e ELASTICSEARCH_HOSTS=自己虚拟机的ip:9200 -p 5601:5601 -d kibana:7.6.2
      
      #设置开机启动
      docker update kibana  --restart=always
      
    • Nginx

      随便启动一个nginx实例,只是为了复制出配置

      docker run -p80:80 --name nginx -d nginx:1.10   
      

      将容器内的配置文件拷贝到/mydata/nginx/conf/ 下

      mkdir -p /mydata/nginx/html
      mkdir -p /mydata/nginx/logs
      mkdir -p /mydata/nginx/conf
      docker container cp nginx:/etc/nginx/*  /mydata/nginx/conf/ 
      #由于拷贝完成后会在config中存在一个nginx文件夹,所以需要将它的内容移动到conf中
      mv /mydata/nginx/conf/nginx /mydata/nginx/conf/
      rm -rf /mydata/nginx/conf/nginx
      

      终止原容器:

      docker stop nginx
      
      #执行命令删除原容器
      docker rm nginx
      

      创建新的Nginx,执行以下命令:

      docker run -p 80:80 --name nginx \
       -v /mydata/nginx/html:/usr/share/nginx/html \
       -v /mydata/nginx/logs:/var/log/nginx \
       -v /mydata/nginx/conf/:/etc/nginx \
       -d nginx:1.10
       
       #设置开机启动
       docker update nginx --restart=always
      
  • 关于数据卷

    ​ 前面一直使用的 -v命令其实是叫数据卷(因为docker删除后,在容器中的数据也随之销毁了,数据卷可以对配置进行保存,方便下次使用用来和宿主机进行数据的交换)

    创建数据卷的方式 -v 宿主机目录:容器内目录,宿主机的目录可以不用提前创建,在执行命令后,自动进行创建!

    • 概念:

      • 宿主机的一个目录或文件
    • 数据卷的作用

      • 容器数据持久化

      • 客户端和容器数据交换

      • 容器间数据交换

        1. 多个容器挂载同一个数据卷

        2. 数据卷容器

    • 数据卷容器

      • 创建一个容器,挂载一个目录,让其他容器继承自该容器( --volume-from )。

        举个例子 (把数据卷容器的图实现)
        创建数据卷容器
        	docker run -it --name=c3 -v /volume centos:7 /bin/bash
        启动容器c1 c2使用 --volumes-from设置数据卷
        	docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
        	docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
        
      • 通过简单方式实现数据卷配置

  • 后面的一些概念这个项目也没用到,用到在来整理吧~

posted @ 2020-11-22 17:03  蓝天白云zzz  阅读(101)  评论(0)    收藏  举报