• 周六. 10 月 5th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

【工具篇】10分钟快速上手Docker

King Wang

1 月 3, 2022

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!!!

发表回复