1 Docker的安装
1
|
# 1 yum 包更新到最新
|
2 Docker 架构
3 配置镜像加速器
4 Docker 服务相关命令
-
启动docker服务
1
systemctl start docker
-
停止docker服务
1
systemctl stop docker
-
重启docker服务
1
systemctl restart docker
-
查看docker服务状态
1
systemctl status docker
-
开机启动docker服务
1
systemctl enable docker
-
查看docker 日志
1
docker logs 容器名
5 Docker 镜像相关命令
-
查看本地镜像
1
2
3
4
5
6docker images
# REPOSITORY 指的是容器
# TAG 指的是版本号
# IMAGE ID 镜像的id
# CREATED 创建时间
# SIZE 大小 -
搜索镜像
1
docker search redis
-
下载镜像
1
2
3
4
5docker pull redis
# 不写版本号 默认是 lastest
# 我们在hub.docker.com 搜索 软件版本号
docker pull redis:5.0
# 下载 5.0 版本的 redis -
删除镜像
1
2
3
4
5
6
7
8# id 删除
docker rmi 镜像id
# 版本删除
docker rmi redis:版本
# 查看所有镜像的id
docker images -q
# 删除所有镜像
docker rmi `docker images -q`
6 Docker 容器相关命令
-
创建容器
1
2
3
4
5
6
7
8
9
10# 1 查看镜像
docker images
# 创建容器
docker run -it --name=c1 mysql:5.7 /bin/bash
# -i 表示 容器一直运行着
# -t 表示 给容器加个伪终端
# -d 以守护式 模式创建容器
# -name 表示 起名字 后面可以 = 或者空格
# 指定镜像 mysql:5.7
# /bin/bash 表示进入容器时的初始化指令 默认是 /bin/bash1
# 使用exit 退出容器
注意 :
1
2
3# 使用 -it 创建的容器
# 创建成功会立马进入容器
# 在退出容器后会立马停止容器创建后台运行的容器
1
2# 创建的容器会在后台运行.
docker run -id --name=m2 mysql:5.7
-
查看容器
1
2
3
4# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a -
进入容器
1
docker exec -it 容器名 /bin/bash
-
启动容器
1
docker start 容器名
-
停止容器
1
docker stop 容器名
-
删除容器
1
2docker rm 容器名
# 开启的容器是不能被删除 -
容器其他信息
1
docker inspect 容器名
-
查看容器日志
1
docker logs 容器名
容器启动错误解决
-
Errcode: 13 - Permission denied)
1
2# 在创建容器时 加上
-–privileged=true
7 Docker 容器的 数据卷
-
数据卷的简介
-
配置数据卷
数据卷容器
-
简介
-
配置数据卷容器
-
数据卷目录 位置查找
1
2# 查找容器的具体信息
docker inspect 容器名查找宿主机数据目录与容器对应目录
小结
8 Docker的应用部署
Docker 部署 mysql
-
1 搜索 mysql
1
docker search mysql
-
2 拉取mysql 镜像
1
docker pull mysql:5.7
-
3 创建容器
1
2
3# 1 在/root 下创建mysql 目录 用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql1
2
3
4
5
6
7
8docker run -id
-p 3306:3306
--name=c_mysql
-v $PWD/conf:/etc/mysql/conf.d
-v $PWD/logs:/logs
-v $PWD/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=951228
mysql:5.7-
参数说明
- -p 3307:3306 将容器的3306端口映射到宿主机的3307端口
- -v $pwd/conf:/etc/mysql/conf.d 将主机当前目录下的conf/my.cnf 挂在到容器的 /etc.mysql/my.cnf 配置目录
- -v $pwd/logs:/logs 将 主机当前目录下的logs 目录挂在到容器的/logs 日志目录
- -v $pwd/data:/var/lib/mysql 讲主机当前目录下的data 目录 挂载到容器的 /var/lib/mysql 数据目录
- -e MYSQL_ROOT_PASSWORD=123456 初始化root用户的密码
-
Mysql 5.7 默认配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
-
-
docker 中配置默认路径
1
/usr/my.cnf
Docker 部署 Tomcat
1
|
# 注意 需要进入 tomcat 容器内 把 webapps.disp 改名为 webapps , 不然访问不到主页
|
-
1 搜索tomcat镜像
1
docker search tomcat
-
2 拉去tomcat 镜像
1
docker pull tomcat
-
3 创建容器, 设置端口映射, 目录映射
1
2mkdir ~/tomcat
cd ~/tomcat1
2
3
4docker run -id --name=c_tomcat
-p 8080:8080
-v $PWD:/usr/local/tomcat/webapps
tomcat- 参数解释同上
Docker 部署 Nginx
1
|
# 注意, 首先要创建nginx.conf 文件 用于管理 容器的nginx
|
Nginx 原始配置文件
1
|
|
-
搜索nginx镜像
1
docker search nginx
-
拉去nginx 镜像
1
docker pull nginx
-
创建nginx 容器
1
2
3
4
5
6mkdir ~/nginx
cd mkdir ~/nginx
# 创建 conf 文件夹
mkdir conf
# 在conf 文件夹下创建 nginx.conf 文件, 粘贴下面内容
vim nginx.conf -
准备好 nginx 配置文件
1
2
3
4
5user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
1
|
|
-
参数说明
1
2
3
4# -p 80:80 宿主机80 端口 映射 容器的80端口
# -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf 使用宿主机 nginx.conf 配置文件映射到 容器的配置文件
# -v $PWD/logs:/var/log/nginx 挂在log 目录文件
# -v $PWD/html:/usr/share/nginx/html
Docker 部署 Redis
-
1 搜索 Redis
1
docker search redis
-
2 拉去镜像
1
docker pull redis:5.0
-
3 创建容器 映射端口
1
docker run -id --name=c_redis -p 6379:6379 redis:5.0
9 Docker 镜像原理
10 Docker 镜像制作
第一种方式
容器转镜像
第二种方式
dockerfile
关键字
Dockerfile 案例1
构建镜像
1
|
docker built -f centos_dockerfile -t itheima_centos:1.0
|
Dockerfile 案例2
11 Docker的服务编排
介绍
Docker Compose
1 安装 Docker Compose
1
|
# Compose 目前已经完全支持Linux , Macos 和Windows, 在我们安装Compose 之前, 需要先安装Docker, 下面我们以编译好的二进制包方式安装在Linux系统中.
|
2 卸载 Docker Compose
1
|
# 而今之宝方式安装的, 删除二进制文件即可
|
3 使用
-
1 创建 docker-compose 目录
1
2mkdir ~/docker-compose
cd ~/docker-compose -
2 编写 docker-compose.yml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14version: '3'
services:
nginx:
image: nginx
ports:
- 80:80
links:
- app
valumes:
- ./nginx/conf.d:/etc/nginx/conf.d
app:
image: app
expose:
- "8080" -
3 创建./nginx/conf.d 目录
1
2mkdir -p ./nginx/conf.d
# -p 表示是在父文件夹 -
4 在 ./nginx/conf.d 目录下 编写 nginx 的 conf 文件. 文件必须是 conf 文件 名字无所谓
1
2
3
4
5
6
7
8server {
listen 80;
access_log off;
location / {
proxy_pass http://app:8080;
}
} -
5 在 ~/docker-compose 目录下 使用 docker-compose 启动容器
1
docker-compose up
-
6 测试访问
1
直接访问 nginx
12 Docker 私有仓库
一 私有仓库的搭建
1
|
# 1 拉去私有仓库镜像
|
二 将 镜像上传至私有仓库
1
|
# 1 标记镜像为私有仓库镜像
|
三 私有仓库的镜像拉到本地
1
|
docker pull 仓库ip:5000/centos:7
|