docker安装步骤及基于docker容器部署web应用LNMP服务器环境

docker的介绍

docker的定义:

1.docker的三个概念:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器
Docker 镜像 - Docker images: Docker 镜像是 Docker 容器运行时的只读模板
Docker 仓库 - Docker registeries: Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库(Docker Hub)
Docker 容器 - Docker containers:每一个 Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台

docker的使用

1.检查docker是否安装成功,命令:docker version,一般服务端和客户端在同一台机器上
2.搜索可用的docker镜像,docker search XXX
3.下载镜像:docker pull XXX(镜像名称)
4.这时查看本地镜像列表:docker images ,就可以看到下载好的镜像了
5.启动容器docker run -i -t -v /root/software/:/mnt/software/ 83ee /bin/bash
命令包括三个部分:docker run <相关参数> <镜像 ID> <初始命令>
其中参数有:
-i:表示以“交互模式”运行容器
t:表示容器启动后会进入其命令行
-d:让容器在后台运行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
本例中,所有安装程序都放在了宿主机的/root/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下
初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示启动后直接进入bash shell
6.容器退出,命令:exit
另一种启动:
启动容器&进入容器&拷贝文件
Docker start (container ID)
Docker attach (container ID)
docker cp D:\docker_test\gradle-2.13-bin.zip d6e3e7845eb2:/tmp
使用docker exec 可以进入到已经启动的容器中docker exec -ti container-id /bin/bash
容器的工作是建立在镜像的基础之上的,如果需要删除镜像的话,需要先删除使用该镜像的容器,然后才能删除镜像
docker rm删除容器
docker rmi 删除镜像
通过容器生成新的镜像
docker commit <container-id> <image-name>
docker commit -m "wangcreatecontan" -a "wangjccreate" 14628ddc3b57 wjc/test

安装docker

官方提供了两种方式一种是使用存儲库进行安装 ,一种是从包中进行安装 ,两种方式都可以进行安装 ,只是第一种是官方推荐的。

安装网络yum源

[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# curl -o 163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
[[email protected] yum.repos.d]# sed -i ‘s/\$releasever/7/g‘ /etc/yum.repos.d/163.repo
[[email protected] yum.repos.d]# sed -i ‘s/enabled=0/enabled=1/g‘ /etc/yum.repos.d/163.repo
[[email protected] yum.repos.d]# yum -y install epel-release
[[email protected] yum.repos.d]# yum clean all

安装依赖环境

[[email protected] ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[[email protected] ~]# yum-config-manager --enable extras
[[email protected] ~]# yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

安装docker

[[email protected] ~]# yum install docker
//中间会出来1个选择 直接yes就好啦

开启docker并设置为开机自启动

[[email protected] ~]# systemctl restart docker
[[email protected] ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[[email protected] ~]# ps -ef |grep docker
root       3731      1  0 09:37 ?        00:00:00 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json --selinux-enabled --log-driver=journald --signature-verification=false --storage-driver overlay2
root       3736   3731  0 09:37 ?        00:00:00 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc --runtime-args --systemd-cgroup=true
root       3870   2881  0 09:38 pts/3    00:00:00 grep --color=auto docker

基于docker容器部署web应用LNMP服务器环境

关闭防火墙及SELINX

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
[[email protected] ~]# sed -ri ‘s/^(SELINUX=).*/\1disabled/g‘ /etc/selinux/config
[[email protected] ~]# setenforce 0
setenforce: SELinux is disabled

镜像下载

下载nginx的镜像

Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
802b00ed6f79: Pull complete
e9d0e0ea682b: Pull complete
d8b7092b9221: Pull complete
Digest: sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
Status: Downloaded newer image for docker.io/nginx:latest

下载mysl的镜像

[[email protected] ~]# docker pull mysql
Using default tag: latest
Trying to pull repository docker.io/library/mysql ...
latest: Pulling from docker.io/library/mysql
802b00ed6f79: Already exists
30f19a05b898: Pull complete
3e43303be5e9: Pull complete
94b281824ae2: Pull complete
51eb397095b1: Pull complete
54567da6fdf0: Pull complete
bc57ddb85cce: Pull complete
d6cd3c7302aa: Pull complete
d8263dad8dbb: Pull complete
780f2f86056d: Pull complete
8e0761cb58cd: Pull complete
7588cfc269e5: Pull complete
Digest: sha256:038f5f6ea8c8f63cfce1bce9c057ab3691cad867e18da8ad4ba6c90874d0537a
Status: Downloaded newer image for docker.io/mysql:latest

下载php的镜像

[[email protected] ~]# docker pull php:7.1.0-fpm
Trying to pull repository docker.io/library/php ...
7.1.0-fpm: Pulling from docker.io/library/php
5040bd298390: Pull complete
568dce68541a: Pull complete
6a832068e64c: Pull complete
c3300aac0007: Pull complete
ae3d537a7fbb: Pull complete
248628681235: Pull complete
a8c69fc28ae2: Pull complete
214901489c7f: Pull complete
ca5d85c64ddd: Pull complete
Digest: sha256:98ebed9994365d145961e48e4d1414633a52d37f50e7cacbb4f370d1bbfb6817
Status: Downloaded newer image for docker.io/php:7.1.0-fpm

编写生成nginx容器脚本并启动脚本

[[email protected] ~]# cat docker_nginx.sh
#!/usr/bin bash
docker run -p 80:80 --name nginx -v /docker/code:/usr/share/nginx/html -v /var/log/nginx:/var/log/nginx -v /docker/nginx/conf.d:/etc/nginx/conf.d --privileged=true -d nginx
[[email protected] ~]# sh docker_nginx.sh
WARNING: IPv4 forwarding is disabled. Networking will not work.//此处有报错,不影响此次操作,为了下面部署顺利 下一步还是解决一下
98066b91e351761bb3100c74e61eca1fe39f37d2eadad8625f37dfff0bbb722c

解决报错

[[email protected] ~]# vim  /usr/lib/sysctl.d/00-system.conf
# Kernel sysctl configuration file
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
添加以下内容
net.ipv4.ip_forward=1
[[email protected] ~]# systemctl restart network //重启网卡                               

编写生成mysql容器脚本并启动脚本

[[email protected] ~]# vim  docker_mysql.sh
# /usr/bin bash
docker run --name mysql \ //创建的容器名称
-e MYSQL_ROOT_PASSWORD=linfan123 \ //设置mysql的密码
-v /usr/lib/mysql:/usr/lib/mysql -p 3306:3306 \ //容器的3306端口映射到宿主机
-d mysql  //后台运行容器
[[email protected] ~]# sh docker_mysql.sh
46c7ca203469fd5735b21999ab02455a666b5f7596912b175fbadf2af345943d            

编写生成php容器脚本

[[email protected] ~]# vim docker_php.sh
#! /usr/bin bash
docker run -p 9000:9000 --name php -v /docker/code/:/var/www/html/ --privileged=true -d php:7.1.0-fpm
[[email protected] ~]# sh docker_php.sh
b54287d8d154871ebc1192a97ec4220f4b5f96bd8ed382149ae9730870472e7a   

创建项目的文件夹并设置nginx配置
创建项目的文件夹

[[email protected] ~]# mkdir /docker/code //提示文件夹已存在,忽悠即可
mkdir: cannot create directory ‘/docker/code’: File exists
[[email protected] ~]# mkdir /docker/nginx/conf.d//提示文件夹已存在,忽悠即可
mkdir: cannot create directory ‘/docker/nginx/conf.d’: File exists

nginx配置

[[email protected] ~]# vim /docker/nginx/conf.d/default.conf
server {
  listen  80 default_server;
  server_name localhost;
  root   /usr/share/nginx/html/;

  location / {
   index index.html index.htm index.php;
   autoindex off;
  }
  location ~ \.php(.*)$ {
   root  /var/www/html/;
   fastcgi_pass 172.17.0.3:9000;
   fastcgi_index index.php;
   fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_param PATH_INFO $fastcgi_path_info;
   fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
   include  fastcgi_params;
  }
}

重启nginx容器

[[email protected] ~]# docker restart nginx
nginx
[[email protected] ~]# ss -natl
State      Recv-Q Send-Q                Local Address:Port                               Peer Address:Port
LISTEN     0      128                               *:22                                            *:*
LISTEN     0      100                       127.0.0.1:25                                            *:*
LISTEN     0      128                              :::80                                           :::*
LISTEN     0      128                              :::22                                           :::*
LISTEN     0      100                             ::1:25                                           :::*
LISTEN     0      128                              :::9000                                         :::*
LISTEN     0      128                              :::3306                                         :::*        

创建测试页面

[[email protected] ~]# echo "<?php phpinfo(); ?>" > /docker/code/index.php

验证:

在浏览器输入192.168.24.128

原文地址:http://blog.51cto.com/13858192/2172733

时间: 2024-07-29 03:44:34

docker安装步骤及基于docker容器部署web应用LNMP服务器环境的相关文章

第四篇:Docker安装并启动一个http容器

知识背景 官方文档:https://docs.docker.com/engine/installation/ docker分为社区版(CE)和企业版(EE),他们最大的区别就是:社区版是开源免费的,企业版是收费的.对于想要学习docker容器.或者小型开发团队来说,首选Docker社区版. 1.卸载掉老版本的Docker容器 yum remove docker docker-common docker-selinux docker-engine 2.有三种Docker CE安装方法 a.使用do

Docker 之 基于LAMP容器部署WordPress

LAMP的网络连接,有两个方法 第一:nginx需要两个网卡,一个面向客户端,一个面向fpm,而fpm也要有两个网卡,一个面向nginx,一个面向mysql 第二,nginx和fpm,mariadb都在同一docker0桥,只需把nginx端口暴露就可以 准备三个镜像,用于nignx,fpm,mariadb. mkdir -pv /root/lnmp/{nginx,fpm,mariadb} 使用绑定挂载的卷,目的明确,但是不能保证后期运行这些容器的宿主机上也有这些卷存在,因此,建议使用docke

ubuntu 中安装jenkins,基于docker运行jenkins

 本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中,至于docker如何安装,本文不再描述,大家可以上网查询下,如何安装docker,下面先放上一个使用jenkins自动部署原理图片(图片是网上找的,感谢原创分享) 下面介绍安装jenkins步骤: 使用下面的命令拉取jenkins的docker镜像,这里用的是lts的长期支持版本,你可以到jenkins官网自由选择其他版本 sudo docker pull jenkins/jenkins:lts 配置宿主机映

docker安装步骤翻译ubuntu

本问是根据docker官方文档翻译,原文:https://docs.docker.com/engine/installation/linux/ubuntulinux/ Docker 支持以下 Ubuntu 系统: Ubuntu Xenial 16.04 (LTS) Ubuntu Wily 15.10 Ubuntu Trusty 14.04 (LTS) Ubuntu Precise 12.04 (LTS) 本页内容指引你安装使用由Docker管理的正式包和管理包. 使用这些安装包能确保你安装 Do

最全的docker 安装步骤

一.安装docker 1. win 10 系统,安装Docker For Windows(Docker Desktop)专业版https://www.cnblogs.com/5bug/p/8506085.html 例如: Windows10下安装Docker的过程,当然这些步骤也是在网上搜索查阅资料得知而来的!具体步骤如下: 一.启用Hyper-V 打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,如图: 点击确定后,启用完毕会提示重启系统,我

docker安装步骤

1.删除就版本的docker输入命令:yum -y remove docker \ docker-common \ docker-selinux \ docker-engine2.使用命令查询docker配置文件包:find / -name docker并逐个删除3.安装开始,首先安装所需的软件包:yum install -y yum-utils device-mapper-persistent-data lvm24.配置软件源,使用下列命令设置 stable 镜像仓库yum-config-ma

宝塔面板 + Rancher + 阿里云镜像仓库 + +Docker + Kubernetes,添加集群、部署 web 应用

目录 一,安装宝塔面板(V 6.8) 二,使用宝塔安装 Docker,配置阿里云容器服务 三,安装 Rancher (Server) 四,管理 Rancher.添加集群 五,添加 Rancher 应用.服务,与 Nginx 六,ASP.NET Core 应用部署 七,相关文章推荐 前言: 本文使用 Centos 7.x 进行操作,Rancher 官方推荐使用 Ubuntu. Docker 对内核要求 大于 3.10,你可以使用 uname -r 检测系统内容版本. 通过 Rancher,可以很方

基于docker的php调用基于docker的mysql数据库的方法

1:建立基于docker的mysql,参考 Mac上将brew安装的MySql改用Docker执行 2:建立基于docker?php image 在当前目录,建立Dockerfile,内容如下 FROM php:7.0-cli MAINTAINER Terry Zhang <[email protected]> RUN docker-php-ext-install pdo_mysql mysqli 3.建立php镜像 docker build -t php-mysql . 4. 编写php脚本

在Mac上关于tomcat服务器的安装、配置、启动、部署web详细流程

之前在Mac上通过安装mamp来搭建PHP环境服务器,但是对于java来说,目前还是没有找到类似mamp这样强大的软件来构建及管理java环境服务器,所以目前也是通过命令行来进行tomcat服务器的安装和启动,简要的总结一下在Mac上进行tomcat服务器安装的步骤. 第一步,给Mac安装jdk环境.   直接百度”jdk for Mac“,找到其中一个版本进行安装就可以了,安装完成后,打开终端,输入“java”或“javac”,如果出现java命令的使用说明,那么说明你的Mac上的jdk环境已