Docker速学:Debian10/CentOS安装,使用,LNMP环境搭建教程LinuxServer虚拟化

印迹发布于:2020-12-7 812

Debian10 安装方法一:

安装通过HTTPS添加新存储库所需依赖项:

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2

curl命令导入存储库的GPG密钥:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

将稳定的Docker APT存储库添加到系统的软件存储库列表中:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

$(lsb_release -cs)将返回Debian发行版的名称,如:buster。

更新apt软件包列表并安装最新版本的Docker CE(Community Edition):

sudo apt update
sudo apt install docker-ce


Debian10 安装方法二:

安装添加新存储库所需的依赖项

sudo apt install ca-certificates curl software-properties-common gnupg2

扔源

# deb-src [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian buster stable
deb [arch=amd64] http://mirrors.ustc.edu.cn/docker-ce/linux/debian buster stable  

使用以下 curl 命令导入存储库的 GPG 密钥:   

curl -fsSL http://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -

然后apt update在install

apt-get install docker-ce

开启服务

systemctl start docker
官方安装方法一:CentOS

官方安装脚本自动安装

安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh
安装方法二:CentOS

下载Docker的依赖环境

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

设置下载Docker的镜像源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker

yum makacache fast
yum -y install docker-ce

CentOS8安装方法:

直接使用rpm包的, 只要两个包

主包: docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm   

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm

依赖: docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm

安装方式yum, 为什么要用yum呢, yum可以解决依赖问题, 安装的时候需要安装noarch先, 因为它会自动搞掂依赖:

yum install docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm

再安装:

yum install docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm

安装完成后,Docker服务将自动启动。

Docker的启动与停止

systemctl命令是系统服务管理器指令

启动docker:

systemctl start docker

停止docker:

systemctl stop docker

重启docker:

systemctl restart docker

查看docker状态:

systemctl status docker

设置为开机启动:

systemctl enable docker

关闭开机启动:

systemctl disable docker

卸载Docker

yum remove docker-ce
rm -rf /var/lib/docker

查看docker概要信息

docker info

查看docker帮助文档

docker --help

查看版本

docker -v

docker [docker cp 源地址  目标地址]

docker cp /root/www.tar 70169ba99631:/www/wwwroot/virplus.com/www.tar
常用命令

搜索镜像:

docker search 镜像名称
注:
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

拉一个镜像:

docker pull centos:7

运行一个新容器并给它起个名字:

docker run -it --name c7 centos:7

启动容器:

docker start c7

停止容器:

docker stop c7

查看镜像:

docker ps

运行镜像:

docker exec -it temp bash

删除容器:

docker rm 容器名称(容器ID)

停用全部运行中的容器

docker stop $(docker ps -q)

删除全部容器:

docker rm $(docker ps -aq)

一条命令实现停用并删除容器:

docker stop $(docker ps -q) & docker rm $(docker ps -aq)

删除镜像:

docker rmi 镜像ID

删除所有镜像:

docker rmi `docker images -q`

查看最后一次运行的容器:

docker ps –l

查看停止的容器:

docker ps -f status=exited

映射、目录挂载、容器导入/出

docker映射端口和挂载目录

                  宿主 容器     宿主 容器      宿主  容器
docker run -it -p 8083:8080 -p 3389:3306 -v /mnt/:/mnt update /bin/bash

如:Nginx文件夹映射(命名并映射端口及文件夹):

docker run --name my-nginx -p 80:80 -v /etc/nginx/conf.d:/etc/nginx/conf.d -d nginx

导出容器

                    新名字     容器名字
docker export -o cheng.tar confident_hopper

导入容器   

                        新名字
docker import cheng.tar cheng
常用命令

--cpu=2  //限制使用2个核心

-m 6G     //限制使用6G内存

--cpu-shares=2000      //默认值1024,数字越高优先级越高。

docker run -i -d -p 20:20 -p 21:21 -p 8080:8080 -p 9090:9090 -p 9091:9091 -p 80:80 -p 81:81 -p 3306:3306 -p 443:443 -p 8888:8888 -p 888:888 -m 6G -v /data/:/data/ --cpus=2 --privileged --name baota centos:7 /usr/sbin/init


Nginx反代设置
1. 反代内部容器:

1.1 获取容器网络配置信息:

docker inspect 容器名称

1.2 进入容器,使用vi查看nginx.conf配置文件,一般显示使用的是conf.d目录下面的conf文件进行配置。

1.3 进入conf.d目录下面,编辑default.conf文件。

location / { 
  proxy_pass http://172.17.0.3:80; 
}
2. 反代外部服务器:

进入Nginx容器,直接进行1.3操作即可。

3. 多域名反代:

3.1 进入Nginx容器:

docker exec -it temp bash

3.2 打开/nginx/conf.d目录,新增一个virplus.com.conf文件:

cd /nginx/conf.d
vim virplus.com.conf

3.3 粘贴下文代码到virplus.com.conf文件中:

server {
    listen       80;
    server_name virplus.com;      # 要解析进来域名
    location / {
       proxy_pass http://172.17.0.10:80;  #宿主机ip:容器对外的端口号
      }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

3.4 保存退出(vim:!wq);

3.5 如果要多域名配置,只需在/nginx/conf.d目录下增加相应的配置文件即可,一般只需修改server_name和proxy_pass;

3.6 重启nginx容器。

4. Nginx反代 (hosts大法)

4.1 修改A主机Nginx配置文件:

server {
    listen       80;
    server_name blog.virplus.com;
    location / {
       proxy_pass http://blog.virplus.com;
      }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

4.2 修改A主机/etc/hosts文件,增加以下内容

1.2.4.8    blog.virplus.com

4.3 域名指向A主机时,反代会根据hosts文件重定向至1.2.4.8服务器。

镜像问题:

(镜像不能重复, 假如是备份原来的镜像cheng, 那么要导入新的镜像update.tar的时候就需要删除现有的cheng镜像, 不然导入失败, 因为当update.tar导入后会变成cheng名字的镜像, 两者名字不能重复, 如果使用export则无此问题)

导出镜像

docker save -o update.tar cheng

导入镜像

docker load -i update.tar

下面有三点需要注意的

1. docker save保存的是镜像(image),docker export保存的是容器(container)。
2. docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像。
3. docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

进入容器

                    容器名
docker exec -it condescending_franklin /bin/bash
环境搭建示例
Nginx

1 查看可用版本

docker search nginx

2 获取nginx镜像

docker pull nginx[:版本]

3 查看本地镜像

docker images

4 运行容器

docker run --name my-nginx -p 81:80 -d nginx

参数说明:

--name my-nginx:容器名称命名为my-nginx
-p 81:80:端口进行映射,将本地81端口映射到容器内部的80端口 [左边本地:右边容器]
-d nginx:设置容器在后台一直运行

5 安装成功

docker ps

6 测试
浏览器访问:127.0.0.1:81

安装 php

1 查看可用版本

docker search php

2 安装镜像

docker pull php[:版本]

3 查看本地镜像

docker images

4 运行容器

docker run -p 9000:9000 --name my-php -v ~/nginx/www:/usr/share/nginx/html:ro -v ~/nginx/php-log:/usr/local/var/log -itd php:7.1-fpm

参数说明:

--name my-php:容器名称命名为my-php
-p 81:80:端口进行映射,将本地81端口映射到容器内部的80端口
-v ~/nginx/www:/usr/share/nginx/html:挂载,将主机项目中的目录挂载到容器的/usr/share/nginx/html
-it:参数交互运行
-d:参数后台运行
ro:只读权限

注意:docker机制,docker容器运行必须有一个前台进程,如果没有前台进程执行,容器认为空闲就会自行退出。

常规后台运行php,一运行会立马退出,所以加入-it参数。

5 安装成功

docker ps
安装 mysql

1 查看可用版本

docker search mysql

2 拉取mysql镜像

docker pull mysql[:版本]

3 查看本地镜像

docker images

4 运行容器

docker run -itd --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

参数说明:

-itd:后台交互运行
--name my-mysql:容器名称命名为
-p 3306:3306:映射容器服务的3306端口到宿主机的3306
-e MYSQL_ROOT_PASSWORD:设置容器内环境变量,root的用户密码为root

5 安装成功

docker ps

6 测试

6.1 进入容器

docker exec -it [容器名称|容器ID] bash

6.2 进入mysql

mysql -h localhost -u root -p


php+mysql部署

1 启动php+mysql容器

docker run --name php-mysql -p 9002:9000 -v ~/nginx/www:/usr/share/nginx/html:ro -v ~/nginx/php-log:/usr/local/var/log --link my-mysql:mysql  -itd php:7.1-fpm

参数说明:

--name php-mysql:容器名称命名为php-mysql
-p 9002:9000:端口映射,将本地9002端口映射到容器内部的9000端口
-v :挂载,将主机项目中的目录挂载到容器的/usr/share/nginx/html,将nginx配置文件挂载到/etc/nginx/conf.d,将nginx日志文件挂载到/var/log/nginx
--link my-mysql:php:php链接mysql,把my-mysql的网络并入php

2 安装成功

docker ps


nginx+php部署

1 创建核心文件夹方便后续将容器内文件映射到本地,以便查看/修改

mkdir ~/nginx/nginx-conf ~/nginx/nginx-log ~/nginx/php-conf ~/nginx/php-log ~/nginx/www

2 复制php以及nginx的配置和日志文件到本地

2.1 复制php的配置文件

docker cp my-php:/usr/local/etc ~/nginx/php-conf

2.2 复制php的日志

docker cp my-php:/usr/local/var/log ~/nginx/php-log

2.3 复制nginx的配置文件

docker cp my-nginx:/etc/nginx/conf ~/nginx/nginx-conf

2.4 创建nginx的日志文件

touch ~/nginx/nginx-log/error.log ~/nginx/nginx-log/access.log

注意:

复制出来的目录可能多一级,把配置文件全部复制到根目录下

3 重新运行启动nginx容器

docker run --name php-nginx -p 82:80 -d -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/nginx-conf/conf.d:/etc/nginx/conf.d -v ~/nginx/nginx-log:/var/log/nginx --link php-mysql:php -d nginx

参数说明:

--name php-nginx:容器名称命名为php-nginx
-p 82:80:端口映射,将本地82端口映射到容器内部的80端口
-v :挂载,将主机项目中的目录挂载到容器的/usr/share/nginx/html,将nginx配置文件挂载到/etc/nginx/conf.d,将nginx日志文件挂载到/var/log/nginx
--link my-php:php:nginx链接php,把php-mysql的网络并入nginx

4 安装成功

docker ps

5 测试

127.0.0.1:82

6 修改本地配置文件解析php文件

配置文件中需要将解析php的注解去掉,修改root路径

注意:

核心是php配置文件的fastcgi_pass和fastcgi_param,如果这两个参数错误,会导致php的代码无法解析

制作Dockerfile

1. 从一个正在运行的 Nginx 容器中复制出配置文件:

docker cp some-nginx:/etc/nginx/nginx.conf /some/nginx.conf

2. 也可以通过推荐的Dockerfile方式来生成一个包含自定义配置文件的镜像,如下所示:

FROM daocloud.io/nginx
COPY nginx.conf /etc/nginx/nginx.conf

3. 再用下面的命令构建镜像:

docker build -t some-custom-nginx .

4. 最后启动容器:

docker run --name some-nginx -d some-custom-nginx


问题:

在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时,提示:

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim

这时候需要敲:

apt-get update

安装VIM:

apt-get install vim


更多相关:

1. Docker快速入门(安装方法,常用命令)

2. 常用基本命令

3. 快速学习Docker

4. 如何修改容器端口

5. 容器安装宝塔

6. 安装Spug

7. 容器的备份、恢复和迁移

8. Kangle;

更多:Docker相关文章




http://www.virplus.com/thread-1370.htm
转载请注明:2020-12-7 于 VirPlus 发表

推荐阅读
最新回复 (0)

    ( 登录 ) 后,可以发表评论!

    返回