docker使用教程

前两天我学习了一下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
  • 启动运行docker
systemctl enable docker && systemctl start docker
1
  • 配置国内镜像

进入daemon.json写入以下内容。

# 进入文件
cd /etc/docker/daemon.json
1
2

写入以下内容

{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}
1
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

# 拉取镜像

# 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

# 运行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
  • 在web文件夹中写入一个文件
vi /usr/local/web/index.php
1

写入

<?php
 echo phpinfo();
?>
1
2
3
  • 写入nginx配置文件
cd /usr/local/src/nginx/conf.d
vi php-test.conf
1
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
  • 运行配置
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

# 配置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内核,所以要给特权以便容器访问系统。

分享至:

  • qq
  • qq空间
  • 微博
  • 豆瓣
  • 贴吧