flag flag flag立住了,本次更新docker,带你快速上手Docker!!!
那么下面有请Docker做个自我介绍
一、Docker自我介绍
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。
Go语言近几年很火呀,看今年时间,要是有时间就上手go语言了。
二、Docker的架构
Docker包括三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
那么下面就开始Docker旅程吧,对了windows or linux系统安装docker的话参考链接
跟随我一起跟Docker愉快的玩耍吧!!!
三、Docker的快乐玩耍
首先来到Docker的游乐场。在这里开启一个Docker。
然后新建一个实例,实例中开启一个terminal命令行,并开启4hour的玩耍时间。
1. Docker容器的使用
首先获取镜像,从仓库中用pull来拉取镜像:
docker pull nginx
查看本地拉取的镜像
docker images
启动容器
docker run -d -p 80:80 nginx
参数说明:
docker run [参数] 镜像名:版本 [运行的shell指令]
-d 后台运行
-e MYSQL_ROOT_PASSWOR=123456 环境变量
-p 80:80 端口映射
-it 阻塞运行
-v /suzhu:/rongqi 文件[夹]映射
--link mysql:mysql 链接其他容器
--rm 运行结束后自动销毁
--name 指定容器运行后的名字
--restart always 机器重启后是否自动运行
查看正在运行的容器
docker ps
进入容器中
docker exec -it 容器id /bin/bash
停止容器
docker stop <容器 ID>
停止的容器重启
docker restart <容器 ID>
删除容器
docker rm -f <容器 ID>
容器保存为镜像
docker commit <容器 ID> <镜像名>
2. Docker镜像使用
列出本机镜像
docker images
获取新的镜像
docker pull ubuntu:13.10
查找镜像
docker search httpd
删除镜像
docker rmi httpd
镜像保存为tar文件
docker save <镜像名> > <xx.tar>
加载镜像
docker load<镜像名> < <xx.tar>
Dockerfile来创建镜像
docker save<镜像名> > <xx.tar>
vim Dockerfile
docker build -t <镜像名>
3. Docker容器互联
运行一个容器
docker run -d -p 80:80 –name mynginx nginx
运行容器并连接到之前的容器上
docker run -dit -link mynginx:mynginx alpine
进入容器中
docker exec -it <容器id> sh
apk add curl
curl mynginx
cat etc/hosts
4. Docker Compose多容器互联
Docker Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,可以使用YML文件来配置应用程序所需的所有服务。然后使用一个命令,就可以从YML文件配置中创建并启动所有服务。
Docker Compose的使用三个步骤为:
- 使用Dockfile定义应用程序的环境
- 使用docker-compose.yml定义构成应用程序的服务,使其可以在隔离环境中运行
- 最后执行docker-compose up命令来启动并运行整个应用程序。
其中Compose的安装可参考链接(https://www.runoob.com/docker/docker-compose.html)
使用:
本次分为 nginx, php 和 mysql三个模块
目录结构如下
创建目录:
mkdir hello-docker-compose
mkdir conf
mkdir html
在conf目录下
cd conf/
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
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 /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
}
在html下
cd html/
vim index.html
# index.html中内容直接写
Hello Docker-Compose
在html下
vim test.php
<?php
phpinfo();
?>
vim mysql.php
<?php
$dbhost = 'mysql';
$dbuser = 'root';
$dbpass = '123456';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if (!$conn) {
die('could not connect! ' . mysqi_error());
}
echo 'connect success! ';
mysqli_close($conn);
?>
编写docker-compose.yml
version: "3"
services:
nginx:
image: nginx:alpine
ports:
- 80:80
volumes:
- ./html:/usr/share/nginx/html
- ./conf/nginx.conf:/etc/nginx/nginx.conf
php:
image: devilbox/php-fpm:8.0-work-0.106
volumes:
- ./html:/var/www/html
mysql:
image: mysql:5.6
environment:
- MYSQL_ROOT_PASSWORD=123456
最后运行启动
docker-compose up -d
大功告成!!!
Docker就先到此为止,等日后用了之后再后续补充,下次更新github以及git的使
用,顺便求大家给github的项目star,fork!!!