zoukankan      html  css  js  c++  java
  • docker简介及安装常用开发软件

    简介

    Docker 是一个开源的应用容器引擎,可以看做是一个轻量的、可移动的虚拟机,里面可以装载一个个的程序镜像,当把程序安装在docker以后,我们可以把docker移植到另外一台服务器,这样就避免了很多安装如redis,mysql等软件的重复性工作,以及不必重复部署项目到服务器,只需要移植docker即可。

    卸载旧版本

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

    安装 Docker Engine-Community

    使用 Docker 仓库进行安装

    在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,可以从仓库安装和更新 Docker。

    设置仓库

    安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

      yum install -y yum-utils 
      device-mapper-persistent-data 
      lvm2
    

    使用以下命令来设置稳定的仓库。

      yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo
    
    安装 Docker Engine-Community

    yum install docker-ce docker-ce-cli containerd.io

    启动docker systemctl start docker

    查看docker版本号 docker-v

    配置阿里云镜像加速(CnetOS)

    https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

    mkdir -p /etc/docker
    tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["阿里云的加速地址"]
    }
    EOF
    systemctl daemon-reload
    systemctl restart docker
    

    docker安装mysql

    1.拉取mysql镜像 docker pull mysql:5.7
    2.创建容器

    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
    

    意思是创建一个3306端口,名字为mysql的容器,
    -v表示mysql相关文件挂载到外部虚拟机的目录,也就是容器内的文件和虚拟机挂载目录的变化是一致的;修改/mydata/mysql/conf下的配置文件,能影响到容器内部的配置。
    -e 表示初始化root账户的密码为root
    -d 使用镜像mysql:5.7以后台模式启动一个容器

    3.创建mysql配置文件
    vi /mydata/mysql/conf/my.cnf

    [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
    

    重启 docker restart mysql
    进入mysql容器 docker exec -it mysql /bin/bash
    查看配置,会发现虚拟机修改的文件在这里被同步了 cat /etc/mysql/my.cnf

    docker安装redis

    1.拉取redis镜像 docker pull redis
    2.创建容器

    mkdir -p /mydata/redis/conf
    touch /mydata/redis/conf/redis.conf
    
    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
    
    

    3.运行redis docker exec -it redis redis-cli
    4.开启 aof 持久化
    vi /mydata/redis/conf/redis.conf
    添加如下内容
    appendonly yes

    docker安装nginx

    1.拉取nginx镜像 docker pull nginx
    2.创建容器

    docker run -p 80:80 --name nginx 
    -v /mydata/nginx/html:/usr/share/nginx/html 
    -v /mydata/nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf 
    -v /mydata/nginx/log:/var/log/nginx/ 
    -v /mydata/nginx/conf.d:/etc/nginx/conf.d 
    -d nginx
    

    3.添加配置vim /mydata/nginx/conf/nginx.conf

    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    }
    

    vim /mydata/nginx/conf.d/default.conf

    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
     }
    
    

    4.在/mydata/nginx/html中添加一个html页面显示

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    </head>
    <body>
    <h1>hello docker!</h1>
    </body>
    </html
    
    

    然后重启nginx即可

    docker安装zookeeper

    1.拉取zookeeper镜像 docker pull wurstmeister/zookeepe
    2.运行zookeeper环境 docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
    3.进入zookeeper容器 docker exec -it zookeeper /bin/bash
    4.切换到bin目录 cd bin
    5.查看zookeeper是否启动 ./zkServer.sh status,出现 Mode:standalone 则表示成功了,然后输入exit退出即可

    docker安装kafka

    需要先安装zookeeper

    1.拉取kafka镜像 docker pull nginx
    2.运行kafka环境

    docker run --name kafka 
    -p 9092:9092 
    -e KAFKA_BROKER_ID=0 
    -e KAFKA_ZOOKEEPER_CONNECT=zookeeper的ip:2181 
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka的ip:9092 
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 
    -d wurstmeister/kafka
    

    第二行是映射的端口
    第三行是在kafka集群中,每个kafka都有一个BROKER_ID来区分自己,在这里设置
    第四行配置zookeeper管理kafka的路径
    第五行把kafka的地址端口注册给zookeeper
    第六行配置kafka的监听端口

    3.进入kafka容器 docker exec -it kafka /bin/bash
    4.创建主题
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper的ip:2181 --replication-factor 1 --partitions 1 --topic my_log
    5.查询创建主题
    /opt/kafka/bin/kafka-topics.sh --list --zookeeper zookeeper的ip:2181

    docker命令

    1.启动docker systemctl start docker

    2.关闭docker systemctl stop docker

    3.重启docker systemctl restart docker

    4.查看docker状态(是否启动) systemctl status docker

    5.查看docker版本号 docker-v

    6.查看docker安装的所有镜像 docker images

    7.docker开机自启动 systemctl enable docker

    8.显示所有的容器,包括未运行的 docker ps -a

    9.显示已启动的容器 docker ps

    10.进入容器 docker exec -it 容器名 /bin/bash

    11.docker启动时容器自启动 docker update --restart=always 容器名

    12.docker启动时取消容器自启动 docker update --restart=no 容器名

    13.删除镜像 docker rmi 镜像ID

    14.删除容器 docker rm 容器名

    15.开启容器 docker start 容器名

    16.关闭容器 docker stop 容器名

    17.重启容器 docker restart 容器名

    18.拉取镜像 docker pull 容器名

  • 相关阅读:
    HDU 5912 Fraction (模拟)
    CodeForces 722C Destroying Array (并查集)
    CodeForces 722B Verse Pattern (水题)
    CodeForces 722A Broken Clock (水题)
    CodeForces 723D Lakes in Berland (dfs搜索)
    CodeForces 723C Polycarp at the Radio (题意题+暴力)
    CodeForces 723B Text Document Analysis (水题模拟)
    CodeForces 723A The New Year: Meeting Friends (水题)
    hdu 1258
    hdu 2266 dfs+1258
  • 原文地址:https://www.cnblogs.com/lixianguo/p/13254950.html
Copyright © 2011-2022 走看看