Docker学习笔记
一、基本介绍
1.简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口 (类似 iPhone 的 app),更重要的是容器性能开销极低。
2.应用场景
Web 应用的自动化打包和发布
自动化测试和持续集成、发布
在服务型环境中部署和调整数据库或其他的后台应用
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS (Platform-as-a-Service) 环境
3.优点
①简化程序
②避免选择恐惧症
③节省开支
④轻松快捷配置
⑤提高工作效率
⑥应用隔离
⑦云调度,项目用Docker部署就可以称之为是云应用
4.系统架构
Docker使用客户端-服务器(C/S)架构模式,使用远程API管理创建Docker容器。Docker容器通过Docker镜像创建。相当于面向对象中的对象与类:容器(对象)镜像(类)
5、Docker安装
①查看内核版本:uname -r uname --m
②更新数据源:cd /etc/apt vi sources.list apt-get update
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
③使用脚本安装:curl -sSL https://get.daocloud.io/docker | sh
④启动tomcat成功,但是访问不到页面时,可以查看启动的webapps中是否有访问页面,如果没有将该文件夹删除 rm -rf webapps,将webapps.list改名成webapps即可。
⑤启动mysql 时,如果提示端口占用可以用netstat -tanlp查看3306端口是否被占用,如果占用将最后一列PID号kill掉即可
二、Docker Compose
1.简介
Docker Compose 是一种用于通过使用单个命令创建和启动 Docker 应用程序的工具。我们可以使用它来配置应用程序的服务。
它是开发,测试和升级环境的利器。
它提供以下命令来管理应用程序的整个生命周期:
启动,停止和重建服务
查看运行服务的状态
流式运行服务的日志输出
在服务上运行一次性命令
要实现 docker compose,需要包括以下步骤:
将应用程序环境变量放在 Docker 文件中以公开访问。
在 docker-compose.yml 文件中提供和配置服务名称,以便它们可以在隔离的环境中一起运行。
运行 docker-compose 将启动并运行整个应用程序。
2.安装和使用
①去https://github.com/docker/compose/releases/下载Linux的放到虚拟机上
②给 docker-compose 添加执行的权限:sudo chmod +x /usr/local/bin/docker-compose
③查看 docker-compose 的版本:docker-compose version
④前台运行:docker-compose up
⑤后台运行:docker-compose up -d
⑥启动:docker-compose start
⑦停止:docker-compose stop
⑧停止并移除容器:docker-compose down
3.运行tomcat
如果启动tomcat成功访问404则修改webapps文件夹即可。参考:
修改tomcat404问题
docker-compose.yml 配置文件:
version: ‘3’
services:
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- 8080:8080
volumes:
- /usr/local/docker/tomcat/webapps/test:/usr/local/tomcat/webapps/test
environment:
TZ: Asia/Shanghai
4.运行MySQL
docker run -d --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
mysql -u root -p
输入mysql密码
show databases;查看mysql数据库
use mysql; 进入mysql数据库
show tables; 查看表
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Caoxu0407@'; 更新密码
docker-compose.yml 配置文件:
version: ‘3’
services:
mysql:
restart: always
image: mysql
container_name: mysql
ports:
- 3306:3306
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
command:
–character-set-server=utf8mb4
–collation-server=utf8mb4_general_ci
–explicit_defaults_for_timestamp=true
–lower_case_table_names=1
–max_allowed_packet=128M
–sql-mode=“STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO”
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
注:如果docker启动了mysql远程连接不上数据库可以执行。如:
sudo mkdir -p /var/run/mysqld
sudo chown mysql /var/run/mysqld/
sudo service mysql restart
5.解决docker下载容器慢问题
== ①输入命令:cd /etc/docker,找到daemon.json文件,如果没有就新建一个。==
== ②打开daemon.json,配置内容:==
{
"registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com"]
}
③重启docker即可:service docker restart