Docker

目录

初识 Docker

docker概念

安装docker

docker架构

Docker 命令

进程相关命令

镜像相关命令

容器相关命令

Docker 容器数据卷

数据卷概念及作用

配置数据卷

配置数据卷容器

数据卷小结

Dockerfile

Docker 镜像原理

Dockerfile概念及作用

Dockerfile关键字

案例

Docker 应用部署

MySQL部署

Nginx部署

Redis部署

Docker 服务编排

服务编排概念

Docker Compose 概述

案例

Docker 私有仓库

搭建私有仓库

上传镜像到私有仓库

从私有仓库拉取镜像

Docker相关概念


初识 Docker

docker概念

Docker_第1张图片 Docker_第2张图片

安装docker

  Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上,本课程基于CentOS 7 安装Docker。官网:https://www.docker.com
1、yum 包更新到最新 
yum update

2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2

3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4、 安装docker,出现输入的界面都按 y 
yum install -y docker-ce

5、 查看docker版本,验证是否验证成功
docker -version

docker架构

Docker_第3张图片

 Docker_第4张图片

Docker 命令

进程相关命令

Docker_第5张图片

 Docker_第6张图片

镜像相关命令

Docker_第7张图片

 Docker_第8张图片

容器相关命令

Docker_第9张图片

 Docker_第10张图片

Docker_第11张图片

Docker 容器数据卷

数据卷概念及作用

Docker_第12张图片

配置数据卷

Docker_第13张图片

配置数据卷容器

Docker_第14张图片

 Docker_第15张图片

数据卷小结

Docker_第16张图片

Dockerfile

Docker 镜像原理

Docker_第17张图片

 Docker_第18张图片

 Docker_第19张图片

Docker_第20张图片

Docker_第21张图片

Dockerfile概念及作用

Docker_第22张图片

 Dochub网址:https://hub.docker.com

Dockerfile关键字

Docker_第23张图片

案例

Docker_第24张图片

 Docker_第25张图片

Docker 应用部署

MySQL部署

Docker_第26张图片

 Docker_第27张图片

 

1、搜索mysql镜像

docker search mysql

2、拉取mysql镜像

docker pull mysql:5.6

3、创建容器,设置端口映射、目录映射

在/root目录下创建mysql目录用于存储mysql数据信息

mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3307: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=root \
mysql:5.6

参数说明:

  • -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=root:初始化 root 用户的密码。

4、进入容器,操作mysql

docker exec –it c_mysql /bin/bash

5、使用外部机器连接容器中的mysql

Docker_第28张图片

 注意:

1、修改服务器mysql数据库user表,配置为允许远程访问。命令如下:

update user set host = '%' where user = 'root';

Docker_第29张图片

2、服务器要关闭防火墙

关闭防火墙:

systemctl stop firewalld.service

开启防火墙:

systemctl start firewalld.service

开启开机启动:

systemctl enable firewalld.service

关闭开机启动:

systemctl disable firewalld.service

查看防火墙状态:

systemctl status firewalld 
firewall-cmd --state

3、各种云服务器要记得暴露端口

Docker_第30张图片

Tomcat部署

Docker_第31张图片

1、搜索tomcat镜像

docker search tomcat

2、拉取tomcat镜像

docker pull tomcat

3、创建容器,设置端口映射、目录映射

在/root目录下创建tomcat目录用于存储tomcat数据信息

mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat 

- 参数说明:

  •   -p 8080:8080:将容器的8080端口映射到主机的8080端口
  •    -v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps

4、使用外部机器访问tomcat

Docker_第32张图片

Nginx部署

Docker_第33张图片

1、搜索nginx镜像

docker search nginx

2、拉取nginx镜像

docker pull nginx


3、创建容器,设置端口映射、目录映射
在/root目录下创建nginx目录用于存储nginx数据信息

mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf


 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容

vim nginx.conf

user  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;
}

docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

- 参数说明:

  • -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
  • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
  • -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录

4、使用外部机器访问nginx

Redis部署

Docker_第34张图片

1、搜索redis镜像

docker search redis

2、拉取redis镜像

docker pull redis:5.0

3、创建容器,设置端口映射

docker run -id --name=c_redis -p 6379:6379 redis:5.0

4、使用外部机器连接redis

redis-cli.exe -h 192.168.149.135 -p 6379

Docker 服务编排

服务编排概念

Docker_第35张图片

Docker Compose 概述

Docker_第36张图片

1、安装Docker Compose

Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 

curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

设置文件可执行权限 

chmod +x /usr/local/bin/docker-compose

查看版本信息 

docker-compose -version

2、卸载Docker Compose
二进制包方式安装的,删除二进制文件即可

rm /usr/local/bin/docker-compose

案例

1. 创建docker-compose目录

mkdir ~/docker-compose
cd ~/docker-compose

2. 编写 docker-compose.yml 文件

version: '3'
services:
  nginx:
   image: nginx
   ports:
    - 80:80
   links:
    - app
   volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d
  app:
    image: app
    expose:
      - "8080"

3. 创建./nginx/conf.d目录

mkdir -p ./nginx/conf.d

4. 在./nginx/conf.d目录下 编写itheima.conf文件

server {
    listen 80;
    access_log off;

    location / {
        proxy_pass http://app:8080;
    }
   
}

5. 在~/docker-compose 目录下 使用docker-compose 启动容器

docker-compose up

6. 测试访问

http://192.168.149.135/hello

Docker 私有仓库

搭建私有仓库

1、拉取私有仓库镜像 
docker pull registry

2、启动私有仓库容器 
docker run -id --name=registry -p 5000:5000 registry

3、打开浏览器 输入地址
http://私有仓库服务器ip:5000/v2/_catalog
看到{"repositories":[]} 表示私有仓库 搭建成功

4、修改daemon.json   
vim /etc/docker/daemon.json    
在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip 
{"insecure-registries":["私有仓库服务器ip:5000"]} 

5、重启docker 服务 
systemctl restart docker
docker start registry

上传镜像到私有仓库

1、标记镜像为私有仓库的镜像     
docker tag centos:7 私有仓库服务器IP:5000/centos:7
 
2、上传标记的镜像     
docker push 私有仓库服务器IP:5000/centos:7

从私有仓库拉取镜像

docker pull 私有仓库服务器ip:5000/centos:7

Docker相关概念

Docker_第37张图片

 Docker_第38张图片

 

你可能感兴趣的:(docker,容器,运维)