前两天我学习了一下docker的一些基本知识点,这里用的centos7,现在做一个总结。
目录
安装docker
拉取镜像
运行nginx
运行php
nginx配置php
运行mysql
配置phpmyadmin
安装docker
1 2 3 4 5 6 cat /etc/redhat-release 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-config-manager --enable docker-ce-edge yum-config-manager --enable docker-ce-test yum install docker-ce
1 systemctl enable docker && systemctl start docker
进入daemon.json写入以下内容。
1 2 cd /etc/docker/daemon.json
写入以下内容
1 2 3 { "registry-mirrors" : ["https://registry.docker-cn.com" ] }
1 sudo usermod -aG docker <USER>
systemctl restart docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 docker pull 镜像名称:镜像版本号 docker images docker rmi 镜像名称/镜像id docker run --name 容器名称 -p 外部端口号:容器端口号 -e 容器环境参数 -v 映射外部文件到镜像内部 -d 镜像名称 docker ps docker ps -a docker start 容器名称/容器id docker stop 容器名称/容器id docker restart 容器名称/容器id docker rm 容器名称/容器id
拉取镜像 1 2 3 4 5 6 7 8 9 10 11 12 docker pull nginx docker pull php:7.1-fpm docker pull mysql:8.0.18 docker pull node:10.18.0 docker pull phpmyadmin/phpmyadmin docker pull centos:centos7
运行nginx docker run --name nginx-test -p 8080:80 -d nginx
打开ip:8080
就可以访问了。
运行php docker run --name php-test -v /usr/local/web:/www -d php:7.1-fpm
-v就是本地的文件映射到容器内的文件
nginx配置php
主机新建web用于存放php文件;创建nginx用于存放nginx配置文件。
1 2 3 4 mkdir -p /usr/local /web mkdir -p /usr/local /src/nginx cd /usr/local /src/nginxmkdir conf.d logs html
1 vi /usr/local /web/index.php
写入
1 2 3 <?php echo phpinfo(); ?>
1 2 cd /usr/local /src/nginx/conf.dvi php-test.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 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; } }
1 docker run --name php-demo -p 8082:80 -d -v /usr/local /web:/usr/share/nginx/html:ro -v /usr/local /src/nginx/conf.d:/etc/nginx/conf.d:ro --link php-test:php nginx
打开ip:8082
就可以访问了。
运行mysql
1 docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=MYsqldlmm20001. -d mysql:8.0.18
1 2 3 4 5 6 7 docker exec -it mysql-test /bin/bash mysql -u root -p create database test ; CREATE USER 'test' @'%' IDENTIFIED BY '123456' ; GRANT ALL PRIVILEGES ON test .* TO 'test' @'%' ; FLUSH PRIVILEGES; exit ;
配置phpmyadmin 1 docker run -d --name phpMyAdmin -e PMA_HOST=$(ip route show | grep docker0 | awk '{print $9}' ) -e PMA_PORT=3306 -p 8081:80 phpmyadmin/phpmyadmin
配置centos7 1 docker run --name=centos -itd --privileged -p 20010:22 centos:centos7 /usr/sbin/init
注意:Failed to get D-Bus connection: Operation not permitted
,使用不了systemctl
,systemd维护系统程序,需要特权就会访问Linux内核;容器不是一个完整的操作系统,只有一个文件系统,而且默认启动只是普通用户这样的权限访问Linux内核,所以要给特权以便容器访问系统。