检查环境(版本高于3.10)
uname -r
安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
配置阿里云
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
更新yum缓存
yum makecache fast
安装docker
yum install -y docker-ce
开启docker
systemctl start docker
查看本地镜像
docker images
centos镜像
docker pull centos:centos7
docker run -itd --name centos-test centos:centos7
拉取nginx :latest(最新版本)
docker pull nginx:latest
docker run --name nginx-test -p 8080:80 -d nginx
–name nginx-test 容器名称
-p 8080:80 映射,本地的8080端口映射到容器中的80
-d nginx 容器后台一直运行
拉取php
docker pull php:5.6-fpm
#启动php(也可使用-v挂载目录)
docker run --name my-php -d php:5.6-fpm
配置文件 ~/nginx/conf/conf.d/runoob-test-php.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
运行nginx
docker run --name runoob-php-nginx -p 8083:80 -d \
-v ~/nginx/www:/usr/share/nginx/html \
-v ~/nginx/conf/conf.d:/etc/nginx/conf.d \
--link my-php:php \
nginx
解释
-p 8083:80: 端口映射,把 nginx 中的 80 映射到本地的 8083 端口。
~/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
~/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
–link myphp-fpm:php: 把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
退出容器
ctrl+Q+P
分割线 正式运行nginx php redis mysql
启动php
docker run --name tiramisu-php5.6 -d \
-v /var/tiramisu/www:/var/tiramisu/www \
-v /var/tiramisu/php/conf:/usr/local/etc/php/conf.d \
php:5.6-fpm
启动nginx
docker run --name tiramisu-nginx-php-one -p 8081:80 -d \
-v /var/tiramisu/www:/var/tiramisu/www \
-v /var/tiramisu/nginx/conf:/etc/nginx/conf.d \
--link tiramisu-php5.6:php \
nginx
启动mysql
docker run --name tiramisu-mysql -p 3306:3306 -d \
-v /var/tiramisu/mysql/data:/mysql_data \
-v /var/tiramisu/mysql/logs:/logs \
-v /var/tiramisu/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--link tiramisu-php5.6 \
mysql
#进入mysql中
#docker exec -it tiramisu-mysql /bin/bash
docker run -it --link tiramisu-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
#mysql8使用软件连接报错(authentication plugin ‘caching_sha2_password’ cannot be loaded:)
ALTER USER ‘root’@‘%’ IDENTIFIED BY ‘123456’ PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’; #更新一下用户的密码
docker中复制文件 (codker cp [容器id]:[容器内路径] [宿主机目录])
docker cp 48d3c00738a0:/etc/mysql/my.cnf /var/tiramisu/mysql/conf
php连接mysql8报错(SQLSTATE[HY000] [2054] Server sent charset unknown to the client. Please, report to the developers )
在mysql配置文件中 [mysqld]下添加
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default_authentication_plugin=mysql_native_password
安装&启动redis
docker pull redis:latest
docker run --name tiramisu-redis -p 6379:6379 -itd \
--link tiramisu-php5.6:php redis:2.6 #两者都是容器加php-redis映射
#进入redis
docker exec -it tiramisu-redis /bin/bash
redis-cli
docker 下安装php—redis拓展
mkdir -p /usr/src/php/ext
curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/2.2.7.tar.gz && tar xfz /tmp/redis.tar.gz && rm -r /tmp/redis.tar.gz && mv phpredis-2.2.7 /usr/src/php/ext/redis && docker-php-ext-install redis
docker中安装mysqli pdo pdo_mysql 拓展
docker-php-ext-install mysqli pdo pdo_mysql
修改已经挂载完的容器
docker commit CONTAINERID newID
docker run -it -v /var/a:/var/a newID /bin/bash
docker stop CONTAINERID; docker rm CONTAINERID; docker rename newID CONTAINERID;(删除旧容器,将新容器名称)
重启docker服务
systemctl restart docker
将自己的镜像打包上传
docker commit -a "tiramisuer" -m "php:7" tiramisu-php7 tiramisuer-php:7
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
上传
登录到本地计算机上的Docker公共注册表。
docker login
标记镜像
docker tag image username/repository:tag
例如:
docker tag tiramius-php:7 tiramisuer/tiramisu-php:7
运行docker镜像以查看新标记的镜像。(你也可以用docker image ls。)
[root@VM-8-9-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tiramisu-php 7 d8ec020412ce 3 minutes ago 427MB
tiramisuer/tiramisu-php 7 d8ec020412ce 3 minutes ago 427MB
发布镜像
将您的标记镜像上传到存储库:
docker push username/repository:tag
docker push tiramisuer/tiramisu-php:7