1、拉取基础镜象
docker pull centos:7
2、查看镜象
[root@kvm108 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos 7 5e35e350aded 5 months ago 203 MB
3、创建容器
docker run --privileged -it -p 8080:80 -d 5e35e350aded /usr/sbin/init
# --privileged container内的root拥有真正的root权限
# -d 5e35e350aded 镜像 ID
# /usr/sbin/init 启动容器之后可以使用systemctl方法
# -p 8080:80 端口映射,后面要装nginx
4、查看容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80e052bb4c83 5e35e350aded "/usr/sbin/init" 7 seconds ago Up 6 seconds 0.0.0.0:8080->80/tcp pensive_albattani
5、进入容器
docker exec -it 80e052bb4c83 /bin/bash
6、安装 Nginx
# 配置 nginx yum 源
vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
# 安装
yum install nginx -y
# 启动
systemctl start nginx
# 成功访问
curl http://localhost
7、安装 PHP
# 安装 相关
yum install epel-release -y
rpm -ivh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 安装 PHP
yum install php71w php71w-fpm \
php71w-cli php71w-common php71w-devel php71w-gd \
php71w-pdo php71w-mysql php71w-mbstring php71w-bcmath \
php71w-pecl-redis
# 启动
systemctl start php-fpm
# 修改配置文件
vi /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
root /opt/www;
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# 测试页
echo "<?php phpinfo(); ?>" > /opt/www/info.php
# 成功访问
curl http://localhost/info.php
8、安装 MySQL
wget http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql-community-release-el6-5.noarch.rpm
# 安装
yum install mysql-community-server.x86_64
# 启动
systemctl start mysqld
# vi /opt/www/conn.php
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "Abc@123456";
$conn = mysqli_connect($servername, $username, $password);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "success"
?>
9、通过容器构建镜象
# 查看镜象
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80e052bb4c83 5e35e350aded "/usr/sbin/init" 2 hours ago Up 2 hours 0.0.0.0:8080->80/tcp pensive_albattani
# 构建镜象
docker commit 80e052bb4c83 lnmp
# 80e052bb4c83 容器名
# lnmp 镜象名
10、查看镜象
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lnmp latest 0448509551fc 53 seconds ago 1.56 GB
docker.io/centos 7 5e35e350aded 5 months ago 203 MB
11、打包镜象
docker save -o lnmp.tar lnmp
# 查看
[root@kvm113 ~]# ll
-rw------- 1 root root 376077312 4月 27 17:14 lnmp.tar
12、别人如何使用这个镜象
[root@vm73 ~]# scp root@192.168.1.113:/root/lnmp.tar /home/
# 查看
[root@vm73 ~]# ll /home/
-rw------- 1 root root 376077312 4月 27 17:19 lnmp.tar
# 加载
[root@vm73 ~]# docker load -i /home/lnmp.tar
# 查看镜象
[root@vm73 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lnmp latest 947680f32a52 39 minutes ago 365MB
# 运行容器
docker run --name lnmp -it -d lnmp /bin/bash
# 进入容器
[root@vm73 ~]# docker exec -it lnmp /bin/bash