docker

1 内核版本

 

更新该Liunx系统的内核版本

$ yum updatedate$ yum update$ yum update$ yum update$$ yum update y$ yum updateum updateu$ yum updatem update

#$ reboot #重启

 

2 安装Docker

安装1

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

设置yum源

sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

查看仓库中docker版本 
yum list docker-ce --showduplicates | sort -r

安装 Docker CE

$ sudo yum makecache fast

$ sudo yum install docker-ce

 

安装2

 

$ curl -fsSL get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh --mirror Aliyun

centos8的yum库中没有符合最新版docker-ce对应版本的containerd.io

containerd.io版本不够的话 yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.2.el7.x86_64.rpm

3 启动 Docker CE

$ sudo systemctl enable docker

$ sudo systemctl start docker

 

4 建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

$ sudo groupadd docker

将当前用户加入 docker 组:

$ sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。

5 测试 Docker 是否安装正确

$ docker run hello-world

若能正常输出以上信息,则说明安装成功。

 

6 镜像加速器

{

  "registry-mirrors": [

    "https://dockerhub.azk8s.cn",

    "https://hub-mirror.c.163.com"

  ]

}

之后重新启动服务。

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

 

查找镜像

docker search php

拉取镜像

docker pull php:5.6-fpm

本地镜像列表

docker image ls

docker images

容器

docker run --name php_1 php

docker stop php_1

docker rm php_1

进入容器

docker exec -it php_1 bash

 

 

容器互联

创建一个新的 Docker 网络

docker network create -d bridge my-net1 #network .sh

#docker run -it --rm --name php7 --network my-net1 php7 sh

-d 参数指定 Docker 网络类型,有 bridge overlay。其中 overlay 网络类型用于 Swarm mode

 

启动脚本建立好了以后首先开始mysql的安装,在start_docker_mysql.sh里面写入内容:

sudo docker run --name mysql_3306 -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=12345678 -v /root/mysql:/var/lib/mysql --network my-net1 mysql

-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。

MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

-v /root/docker挂载宿主机的一个目录,可以用-v参数指定冒号":"前面的目录是宿主机目录,后面的目录是容器内目录在容器启动后,容器内会自动创建/var/lib/mysql的目录

-e 传入的环境变量参数

-i 以交互模式运行容器,通常与 -t 同时使用

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

-d 后台运行容器,并返回容器ID

 

编写启动php脚本。在start_docker_php.sh中写入一下内容:

sudo docker run --name php_1 --network my-net1 -d -v /root/www:/home/www -v /home/www/logs:/home/wwwlogs -v /tmp:/tmp -v /etc/localtime:/etc/localtime --privileged=true php

--privileged container内的root拥有真正的root权限,不建议
否则,container内的root只是外部的一个普通用户权限。

/etc/localtime让docker容器使用主机系统时间

 

#docker run -p 80:80 -d --name mynginx  -v /root/www:/usr/share/nginx/html nginx

sudo docker run \

--name nginx_1 \

--network my-net1 \

-d -p 80:80 \

-v /root/www:/home/www \

-v /root/nginx/vhosts:/etc/nginx/conf.d \

-v /root/www/logs:/home/wwwlogs \

nginx

 

添加nginx 配置文件

/root/nginx/vhosts目录nginx.conf

 

sudo /root/docker/network.sh

sudo /root/docker/start_mysql.sh

sudo /root/docker/start_php.sh

sudo /root/docker/start_nginx.sh

 

 

docker search nginx

 

https://hub.docker.com/_/nginx查看版本

docker pull nginx

docker pull nginx:1.18.0

docker images nginx

docker run --name nginx01 -p 80:80 -v /var/www:/var/www -v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d -d nginx:1.18.0

#docker restart nginx01 重启

 

创建并运行容器后,docker内的nginx即启动成功,无需进入docker内部再次启动nginx, 否则会提示80等端口被占用,因为nginx已经启动。

vi /usr/local/nginx/conf/conf.d/nginx.conf

server {

    charset utf-8;

    client_max_body_size 128M;

 

    listen       80;

    listen       [::]:80;

 

    server_name www.youtianyuan.top;

    root        /var/www;

    index       index.php;

 

location ~ \.php$ {

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_pass 172.18.0.3:9000; //172.18.0.3 php镜像的ip地址

        try_files $uri =404;

    }

}

 

docker search php

docker pull php:7.4-fpm

docker images

docker run -p 9000:9000 --name  phpfpm7401 -v /var/www:/var/www -d php:7.4-fpm

 

查看php镜像的ip地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' phpfpm7401

 

docker search mysql

docker pull mysql:8.0.21

docker run -p 3306:3306 --name mysql801 -v /usr/local/mysql:/etc/mysql/sqlinit -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.21

#docker rm mysql801 

#docker exec -it -u root mysql801 bash

#cd /etc/mysql/

 

php安装pdo

docker exec -it -u root phpfpm7401 bash

 

docker-php-ext-install pdo pdo_mysql

docker restart phpfpm7401

 

Redis

mkdir -p /docker/redis/{conf,data}

touch /docker/redis/conf/redis.conf

docker run --name redis01 -p 6379:6379 -v /docker/redis/data:/data -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值