码迷,mamicode.com
首页 > 编程语言 > 详细

python| Docker的安装

时间:2020-12-09 12:23:26      阅读:6      评论:0      收藏:0      [点我收藏+]

标签:权限   错误   方式   pool   nbsp   gzip   remote   logging   端口映射   

1 Docker的安装

1
2
3
4
5
6
7
8
9
10
# 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 -v

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
    6
    docker images
    # REPOSITORY 指的是容器
    # TAG 指的是版本号
    # IMAGE ID 镜像的id
    # CREATED 创建时间
    # SIZE 大小

    技术图片

  • 搜索镜像

    1
    docker search redis
  • 下载镜像

    1
    2
    3
    4
    5
    docker 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/bash

    技术图片

    1
    # 使用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
    2
    docker 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 ~/mysql
    1
    2
    3
    4
    5
    6
    7
    8
    docker 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
    2
    mkdir ~/tomcat
    cd ~/tomcat
    1
    2
    3
    4
    docker run -id --name=c_tomcat \
    -p 8080:8080 \
    -v $PWD:/usr/local/tomcat/webapps \
    tomcat
    • 参数解释同上

Docker 部署 Nginx

1
2
# 注意,  首先要创建nginx.conf 文件 用于管理 容器的nginx
# 在 宿主nginx 文件夹下创建/conf/nginx.conf 用于映射 容器nginx配置文件

Nginx 原始配置文件

1
2


  • 搜索nginx镜像

    1
    docker search nginx
  • 拉去nginx 镜像

    1
    docker pull nginx
  • 创建nginx 容器

    1
    2
    3
    4
    5
    6
    mkdir ~/nginx
    cd mkdir ~/nginx
    # 创建 conf 文件夹
    mkdir conf
    # 在conf 文件夹下创建 nginx.conf 文件, 粘贴下面内容
    vim nginx.conf
  • 准备好 nginx 配置文件

    1
    2
    3
    4
    5
    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;

}

1
2
3
4
5
6
7
8
9
10

- 创建nginx 容器

```bash
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
  • 参数说明

    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
2
3
docker built -f centos_dockerfile -t itheima_centos:1.0
# -f 找到 dockerfile 文件
# -t 指定 新镜像的名称及版本

Dockerfile 案例2

技术图片

11 Docker的服务编排

介绍

技术图片

Docker Compose

技术图片

1 安装 Docker Compose

1
2
3
4
5
6
# Compose 目前已经完全支持Linux , Macos 和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

1
2
# 而今之宝方式安装的, 删除二进制文件即可
rm /usr/local/bin/docker-compose

3 使用

  • 1 创建 docker-compose 目录

    1
    2
    mkdir ~/docker-compose
    cd ~/docker-compose
  • 2 编写 docker-compose.yml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    version: ‘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
    2
    mkdir -p ./nginx/conf.d
    # -p 表示是在父文件夹
  • 4 在 ./nginx/conf.d 目录下 编写 nginx 的 conf 文件. 文件必须是 conf 文件 名字无所谓

    1
    2
    3
    4
    5
    6
    7
    8
    server {
    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
2
3
4
5
6
7
8
9
10
11
12
# 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
2
3
4
5
# 1 标记镜像为私有仓库镜像
docker tag centos:7 私有仓库服务器ip"5000/contos:7

# 2 上传标记镜像
docker push 私有仓库服务器ip:5000/centos:7

三 私有仓库的镜像拉到本地

1
2
docker pull 仓库ip:5000/centos:7
# 拉取镜像到本地

13 Docker 与 虚拟机的对比

Docker 容器虚拟化 与 创痛虚拟机比较

技术图片

技术图片

 

python| Docker的安装

标签:权限   错误   方式   pool   nbsp   gzip   remote   logging   端口映射   

原文地址:https://www.cnblogs.com/huangjiangyong/p/14089105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!