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 |
13 Docker 與 虛擬機的對比
Docker 容器虛擬化 與 創痛虛擬機比較