zoukankan      html  css  js  c++  java
  • Linux运维之docker虚拟化部署nginx

    一、Docker的概念

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

    二、Docker的安装环境

    1.检查内核版本

    # uname -r      查看当前linux得版本信息

    Docker要求CentOS7最低内核版本为3.1版本

    2. 关闭防火墙和selinux

    # systemctl stop firewalld

    # setenforce 0

    3、解决docker容器启动出现Networking will not work.

    vim /usr/lib/sysctl.d/00-system.conf

      添加代码

      net.ipv4.ip_forward=1

    如果没有这一步,启动docker容器时,会出现

    WARNING: IPv4 forwarding is disabled. Networking will not work.

    三、Docker的安装

    # yum install  docker -y

    # yum install docker-devel -y  (可选)

    # systemctl start docker         开启docker服务

    # ps aux | grep docker           查看docker服务  ==》ps -ef | grep docker

    三、Docker的内部安装nginx

    [root@localhost ~]# docker search nginx  # 搜索nginx的镜像文件
    INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
    docker.io docker.io/nginx Official build of Nginx. 7835 [OK]
    docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1251 [OK]
    docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 507 [OK]
    docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 292 [OK]
    ...............................................................默认选择第一个...........................................................................

    [root@localhost ~]# docker pull docker.io/nginx  下载nginx镜像

    [root@localhost ~]# docker images  # 查看下载的镜像文件
    REPOSITORY    TAG         IMAGE ID        CREATED        SIZE
    docker.io/nginx   latest       3f8a4339aadd     5 weeks ago         108.5 MB

    # docker tag  3f8a4339aadd nginx:111    修改镜像名字(可选)

    注意:请先确保80端口没有被占用。netstat-lntup|grep80

    [root@localhost ~]# docker run -ti -d -p 80:80 docker.io/nginx /bin/bash   # 运行nginx容器
    WARNING: IPv4 forwarding is disabled. Networking will not work.
    bc134155f262031505cebd2978db3a35049d39f4c289711f5b3d89ced5e9497c

    [root@localhost ~]# docker ps  # 查看运行中的容器

    四、Docker的内部启动nginx

    [root@localhost ~]# docker exec -ti bc134155f262 /bin/bash   # 进入nginx容器内容
    root@bc134155f262:/# /usr/sbin/nginx           # 启动nginx

    root@bc134155f262:/#    # 这个提示说明已经进入容器内部了

    打开一个新的窗口

    [root@localhost ~]# curl 192.168.40.23

    [root@localhost ~]# curl 172.17.0.1

    [root@localhost ~]# curl 172.17.0.2

      能在本地访问到nginx

    五、Docker的命令总结

    docker search 镜像名  # 搜索是否有相应的镜像
    # 下载镜像文件
    docker pull docker镜像名
    
    # 查看下载的镜像
    docker images  
    
    # 查看运行中的容器
    docker ps 
    
    # 查看所有容器
    docker ps -a
    
    # 退出容器
    按Ctrl+D 即可退出当前容器【但退出后会停止容器】
    
    # 退出不停止容器:
    组合键:Ctrl+P+Q
    
    # 启动容器
    docker start 容器名或ID
    docker run -ti -d -p 80:80 docker.io/nginx /bin/bash    # 针对有端口的nginx,并把命令添加至环境变量
       docker pull hub.c.163.com/public/centos:7.0
    
       docker run --name mydocker -t -i -p 80:80 hub.c.163.com/public/centos /bin/bash
    
    # 进入容器
    docker attach 容器名或ID
    docker exec -ti bc134155f262 /bin/bash 
    
    # 停止容器
    docker stop 容器名或ID
    
    # 删除全部容器--慎用
    docker stop $(docker ps -q) & docker rm $(docker ps -aq)
    docker rmi 容器名
    
    #保存容器,生成镜像
    docker commit 容器ID 镜像名称
    
    # docker容器中查看容器Linux版本
    cat /etc/issue
    
    # 将文件复制到docker内部容器
    docker cp xxx.txt  docker容器名或id:/xxx/xxx/xxxx

      docker run --name test -it -v /docker/volume/b2:/data docker.io/nginx
      docker run -ti -d -p 80:80 docker.io/nginx /bin/bash

    
    # docker日志
    journalctl -u docker.service

     原文出处 http://blog.csdn.net/u011704394/article/details/54341402

    mysql部署
    https://hub.docker.com/_/mysql/ 
    [root@node01 ~]# docker images|grep mysql
    mysql                                                            5.6                 cf6527af4ce6        6 days ago          256MB
    mysql                                                            latest              d72169616e20        6 days ago          443MB
    [root@node01 ~]# docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql
    456c2e25205b87bddd6b9ce63c4ba470623ef6ed82101dba238443d6f38a93f1
    [root@node01 ~]# docker ps|grep mysql
    9002f57dd847        mysql                 "docker-entrypoint.s…"   42 seconds ago      Up 40 seconds       3306/tcp, 33060/tcp   mysql
    wordpress部署。容器内链接mysql容器未成功
    https://hub.docker.com/_/wordpress/
    [root@node01 ~]# docker images|grep wordpress
    wordpress                                                        latest              837092bc87de        2 weeks ago         421MB
    [root@node01 ~]# docker run -d -e WORDPRESS_DB_HOST=mysql:3306 --link mysql_db -p 8080:80 wordpress
    49b2ca49d067d0bf0af27a0b9ccfb4def72d66db092f74887a7330f226076d0a
    [root@node01 ~]# docker ps|grep wordpress
    dec50e77c005   wordpress   "docker-entrypoint.s…"   12 seconds ago      Up 10 seconds     0.0.0.0:8080->80/tcp   suspicious_jennings
    
    docker run -d --name some-wordpress -e WORDPRESS_DB_HOST=mysql:3306 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=wordpress -p 8080:80 wordpress
    docker run -d -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8081:80 wordpress
    扩展小知识
  • 相关阅读:
    C# Linq Enumerable 技巧
    Winform 踩坑
    BootStrap Table
    java8+junit5实现并发测试(多线程)
    Junit5+REST-assured 做接口测试
    log4j的使用
    ASP.NET项目启用SSL
    hyper-v虚拟机内存占用过高
    C#使用qq邮箱的smtp服务发邮件
    CALayer设置圆角
  • 原文地址:https://www.cnblogs.com/linu/p/8392453.html
Copyright © 2011-2022 走看看