前两天我学习了一下docker的一些基本知识点,这里用的centos7,现在做一个总结。
# 目录
- 安装docker
- 拉取镜像
- 运行nginx
- 运行php
- nginx配置php
- 运行mysql
- 配置phpmyadmin
# 安装docker
- 下载docker(yum自带版本低)
yum install docker
1
- 下载docker-ce
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
2
3
4
5
6
2
3
4
5
6
- 启动运行docker
systemctl enable docker && systemctl start docker
1
- 配置国内镜像
进入daemon.json写入以下内容。
# 进入文件
cd /etc/docker/daemon.json
1
2
2
写入以下内容
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
1
2
3
2
3
- 添加当前用户到docker组
sudo usermod -aG docker <USER>
1
- 重启docker
systemctl restart docker
- docker常用命令
# 镜像操作
# 拉取镜像
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
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 拉取镜像
# nginx
docker pull nginx
# php
docker pull php:7.1-fpm
# mysql
docker pull mysql:8.0.18
# node
docker pull node:10.18.0
# phpmyadmin
docker pull phpmyadmin/phpmyadmin
# centos7
docker pull centos:centos7
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 运行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配置文件。
mkdir -p /usr/local/web
mkdir -p /usr/local/src/nginx
cd /usr/local/src/nginx
mkdir conf.d logs html
1
2
3
4
2
3
4
- 在web文件夹中写入一个文件
vi /usr/local/web/index.php
1
写入
<?php
echo phpinfo();
?>
1
2
3
2
3
- 写入nginx配置文件
cd /usr/local/src/nginx/conf.d
vi php-test.conf
1
2
2
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- 运行配置
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
1
打开ip:8082
就可以访问了。
# 运行mysql
- 运行mysql
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=MYsqldlmm20001. -d mysql:8.0.18
1
- 创建账号和数据库
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;
1
2
3
4
5
6
7
2
3
4
5
6
7
# 配置phpmyadmin
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
1
# 配置centos7
docker run --name=centos -itd --privileged -p 20010:22 centos:centos7 /usr/sbin/init
1
注意:Failed to get D-Bus connection: Operation not permitted
,使用不了systemctl
,systemd维护系统程序,需要特权就会访问Linux内核;容器不是一个完整的操作系统,只有一个文件系统,而且默认启动只是普通用户这样的权限访问Linux内核,所以要给特权以便容器访问系统。