Docker新手入门学习笔记(含视频演示)

From:https://baiyue.one/archives/368.html

Docker 是一个开源的应用容器引擎,而一个容器containers其实是一个虚拟化的独立的环境,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

本站在学习了docker的基础指令及相关教学视频后,汇总整理以下内容。后期所有教程可能会逐步发展成docker部署,抛弃掉所有的lunnix手动部署教程。

Docker新手入门学习笔记(含视频演示)

优点

  • 类似win10 sandbox,一种沙箱机制,相互独立运行
  • 初始化环境完全一致
  • 容器内可运行多个镜像(比如同时运行上千个wordepress)
  • 无可比拟的优势:部署超快、超简单

Docker基础环境安装

docker已经通用与pc、mac、lunix系统。Docker 官方的安装教程,在这里

本站仅以centos为例

安装docker

docker version > /dev/null || curl -fsSL get.docker.com | bash 
service docker restart 
systemctl enable docker  #设置开机自启
Docker新手入门学习笔记(含视频演示)

安装docker compose(二选一)

方法一:

curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose   #下载最新文件
chmod +x /usr/local/bin/docker-compose     #添加可执行权限

方法二:

pip install docker-compose

Docker常用命令

docker images   #查看所有docker映像
docker ps    #查看所有容器
docker ps -a    #查看正在运行中的容器
docker stop XXXX  #停止运行xxxx容器(xxxx为容器id前4位)
docker rmi image-name   #删除一个映像
docker rmi -r $(docker images -q)   #删除所有映像
docker rm $(docker ps -a -q)    #删除所有容器
docker exec -it container-id bash   #进入容器
exit    #退出容器
ctrl+c    #退出当前容器并结束该容器
Docker新手入门学习笔记(含视频演示)

快速重置技巧

service docker stop  # 停止docker
rm -rf /var/lib/docker   #移除docker容器
service docker restart  #重启docker,此时相当于刚刚安装好docker。

Docker可视化管理

portainer可视化,可快速部署常见应用

官网:https://www.portainer.io

安装:

docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

完成后访问域名+9000即可

Docker新手入门学习笔记(含视频演示)

Seagull (海鸥)

项目地址:https://github.com/tobegit3hub/seagull

安装:

docker run -d -p 10086:10086 -v /var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull

支持十几种模板,多国语言,可快速运行、停止或删除镜像。

Docker新手入门学习笔记(含视频演示)

宝塔自带的docker容器管理

安装:通过宝塔软件管理下载安装,安装过程需要3分站左右

算是目前为止可视化操作最完善的管理器,可以图形化的生成镜像、完成推送、自带终端命令。一下子有一种把我们从windows1.0拉升至win10的感觉。

Docker新手入门学习笔记(含视频演示)

Docker部署完后设置域名代理

作用:通过域名直接访问

方法一:通过宝塔设置反代

先进入宝塔面板,点击左侧网站,添加站点,完成后进入网站设置,点击反向代理,目标URL填入http://127.0.0.1:代理端口代理端口就是docker应用的外接接口),再启用反向代理即可。如果想启用SSL ,就直接在站点配置即可。

Docker新手入门学习笔记(含视频演示)

方法二:caddy反代(没有宝塔时的策略)

设置较为麻烦,愿意的请参考:https://www.moerats.com/archives/422/

本期演示视频

YouTube bilibili OneDrive

最火的lnmp镜像

https://hub.docker.com/r/2233466866/lnmp

QQ群669756510

使用教程(快速入门)

下载(下载)

# 主流版本
docker pull 2233466866/lnmp
# nosql版本
docker pull 2233466866/lnmp:1.9-nosql

启动(Start)

# 端口映射自行指定,容器名称自行指定为lnmp
docker run -dit --privileged=true --name=lnmp 2233466866/lnmp

# 高级用法(Advanced usage)
docker run -dit \
-p 80:80 \
-p 443:443 \
-p 3306:3306 \
-p 9000:9000 \
-v /xxx/www:/www \
-v /xxx/mysql:/data/mysql \
--privileged=true \
--name=lnmp \
2233466866/lnmp

连接(连接)

# 容器名称与上一步保持一致
docker exec -it lnmp /bin/bash

状态(状态)

ps aux|grep nginx
ps aux|grep mysql
ps aux|grep php-fpm
# 或者(Or)
systemctl status nginx
systemctl status mysqld
systemctl status php7

初始密码(默认密码)

cat /var/log/mysqld.log|grep 'A temporary password'
# 或
password=`cat /var/log/mysqld.log|grep 'A temporary password'`;password=${password:91};echo $password

初始化(初始化)

如你的mysql数据是全新的,那么你可以在^1.11 or ^1.11-nosql版本中,使用 mysql_init 脚本将数据库密码初始化为:ASDFqwer1234####

警告(警告)

# 请保持清醒头脑,明确自己是在容器内还是在服务器本身执行命令,以及-v挂载对文件的影响,以免造成不可挽回的损失
# 当前Node和Python较火,故增加了对node.js的支持,是否添加对Python3.8的支持请在群内踊跃投票~~~

配置(Config)

#配置文件路径(Config file path)
# Nginx
/usr/local/nginx/conf/nginx.conf
# MySQL
/etc/my.cnf
# PHP
/usr/local/php7/lib/php.ini
/usr/local/php7/etc/php-fpm.conf
/usr/local/php7/etc/php-fpm.d/www.conf
# 如对配置文件比较熟悉,也可以通过宿主机挂载使用自定义的配置文件

PHP扩展(PHP扩展)

# 默认已安装部分扩展在目录:/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/
# 如果要启用指定扩展,则需要修改php.ini,加上
extension=xxx.so
# xxx为PHP扩展的文件名,然后重启php
systemctl restart php7

版本(版本)

# 各版本详细信息请参考
https://github.com/2233466866/lnmp/wiki