1、更新update到最新的版本
yum update
2、卸载老版本docker
yum remove docker docker-common docker-selinux docker-engine
3、安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、查看docker版本/安装docker
yum list docker-ce --showduplicates|sort -r
yum install docker-ce-18.03.1.ce -y
6、启动docker / 加入开机自启
systemctl start docker
systemctl enable docker
7、配置国内镜像
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
8、查看/保存/删除/载入 [save是保存镜像 export是保存容器]
docker images
docker save REPOSITORY > abc.tar
eg:docker save php-fpm > php-fpm.tar
docker rmi IMAGE ID
docker load < php-fpm.tar
搭建mysql、nginx、php环境
docker network ls / rm name
docker network create --subnet=192.168.1.1/24 mysql-net
docker network create --subnet=192.168.2.1/24 nginx-net
docker network create --subnet=192.168.3.1/24 php-net
docker ps -a --no-trunc 【不省略】
docker run -itd -p 3306:3306 --name mysql -v /data/mysql/data:/var/lib/mysql -v /data/mysql/etc:/etc/mysql -e MYSQL_ROOT_PASSWORD=Andrewhsu123 --net mysql-net mysql
这/data/mysql/etc个文件夹下面的my.cnf文件会默认加载,所以需要自己手写一个my.cnf
docker run -itd -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=Andrewhsu123 --net mysql-net mysql
docker cp mysql:/etc/mysql /data/mysql/etc1
docker exec -it mysql bash
docker start mysql
docker exec -it mysql mysql -uroot -p
CREATE USER lin@'%' IDENTIFIED BY '123456';
DELETE FROM `user` WHERE `User`='lin' and `Host`='%';
ALTER USER 'shudaoo'@'%' IDENTIFIED BY 'Andrewhsu123' PASSWORD EXPIRE NEVER;
ALTER USER 'shudaoo'@'%' IDENTIFIED WITH mysql_native_password BY 'Andrewhsu123';
GRANT ALL PRIVILEGES ON *.* TO 'lin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Andrewhsu123';
select host,user,password_expired,plugin from user;
select Host,User,authentication_string from user;
UPDATE `mysql`.`user` SET `authentication_string`='*971A59AF30122E656A9A6F13D058DFD43E6896C5' WHERE `Host`='localhost' AND `User`='root';
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'sDaoo123';
RENAME USER 'xsz'@'%' TO 'shudaoo'@'%';
SET PASSWORD FOR 'shudaoo'@'%' = PASSWORD('Andrewhsu123');
GRANT GRANT OPTION ON *.* TO 'shudaoo'@'%';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'shudaoo'@'%';
select Host,User,authentication_string from user;
docker run -itd -p 80:80 -p 433:433 --name nginx --net nginx-net nginx
docker run -itd -p 80:80 -p 433:433 --name nginx -v /data/www:/usr/share/nginx/html -v /data/nginx/logs:/var/log/nginx--net nginx-net nginx
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf/conf.d
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/nginx/conf/conf.d:/etc/nginx/conf.d
docker run -itd -p 80:80 -p 443:443 --name nginx -v /data/www:/usr/share/nginx/html -v /data/nginx/logs:/var/log/nginx -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf/conf.d:/etc/nginx/conf.d -v /data/nginx/ssl:/etc/nginx/ssl --net nginx-net nginx
-p 80:80:将容器的 80 端口映射到主机的 80 端口。
-p 443:443:将容器的 443 端口映射到主机的 443 端口。(可选项,配置https时加上)
--name nginx:将容器命名为 nginx。
-v /opt/nginx/html:/usr/share/nginx/html:将我们自己创建的 html目录挂载到容器的 /usr/share/nginx/html。
-v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。
-v /opt/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。
-v /opt/nginx/conf/conf.d:/etc/nginx/conf.d: 将conf.d目录挂载,后面进行二级域名反向代理映射端口时用,不配做这个后面配置不生效
-v /opt/nginx/ssl:/etc/nginx/ssl:将我们自己创建的 ssl目录 挂载到容器的 /etc/nginx/ssl,此项为可选项,要使用https证书时加上。
docker run -itd -p 9000:9000 --name php7 -v /data/www:/www php