服务计算——Docker容器技术

文章目录

  • 作业要求
  • 实验过程
    • Docker环境安装
      • 安装依赖
      • 运行docker
    • 运行第一个容器
      • 运行镜像
      • Docker基本操作
    • MYSQL与容器化
    • 拉取MySQL镜像
      • 构建Docker镜像
        • 运行镜像
      • 使用MySQL容器
        • 启动服务器
        • 启动Mysql客户端
        • Dockerfile 的 VOLUME /var/lib/mysql 的含义
        • 创建卷并挂载
        • 启动客户端容器链接服务器
      • Docker compose 与多容器应用自动化部署
    • Docker网络
    • Docker仓库
    • 容器监控与日志
      • 检查docker的状态
    • Docker图形化管理工具
    • Docker Engine API与开发
    • 实验感想

作业要求

按课件内容实践,并给出实验报告

实验过程

实验使用的是Centos7虚拟机

Docker环境安装

安装依赖

1.使用命令

sudo yum install -y yum-utils device-mapper-persistent-data lvm2 --nogpgcheck
服务计算——Docker容器技术_第1张图片
2.使用命令

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo --nogpgcheck
服务计算——Docker容器技术_第2张图片
3.

sudo yum install docker-ce --nogpgcheck
服务计算——Docker容器技术_第3张图片

运行docker

systemctl enable docker
systemctl start docker
sudo docker version

服务计算——Docker容器技术_第4张图片
服务计算——Docker容器技术_第5张图片

运行第一个容器

运行镜像

使用命令
sudo docker run hello-world
服务计算——Docker容器技术_第6张图片
sudo docker run -it ubuntu bash
服务计算——Docker容器技术_第7张图片

Docker基本操作

显示本地镜像库内容
sudo docker images
获得帮助
sudo docker --help
服务计算——Docker容器技术_第8张图片
服务计算——Docker容器技术_第9张图片
服务计算——Docker容器技术_第10张图片
服务计算——Docker容器技术_第11张图片
服务计算——Docker容器技术_第12张图片
显示运行中容器
sudo docker ps
运行中容器
显示所有(包括已中止)容器
sudo docker ps -a
服务计算——Docker容器技术_第13张图片
继续运行原容器并进入
sudo docker restart competent_wilson

sudo docker attach competent_wilson

MYSQL与容器化

拉取MySQL镜像

sudo docker pull mysql:5.7

sudo docker images

服务计算——Docker容器技术_第14张图片

这一步等所有都complete就完成了,如果下载过慢可以考虑换个源,不想换源又卡住了就只能中断进程再重来

服务计算——Docker容器技术_第15张图片

构建Docker镜像

mkdir mydock && cd mydock

vi dockerfile
在vim中输入:

FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]

esc+:wq退出

使用以下命令构建镜像
sudo docker build . -t hello
服务计算——Docker容器技术_第16张图片

运行镜像

sudo docker run -it --rm hello -H
服务计算——Docker容器技术_第17张图片
服务计算——Docker容器技术_第18张图片
运行镜像3

使用MySQL容器

启动服务器

sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
sudo docker ps
服务计算——Docker容器技术_第19张图片

启动Mysql客户端

sudo docker run -it --net host mysql:5.7 “sh”

# mysql -h127.0.0.1 -P3306 -uroot -proot
服务计算——Docker容器技术_第20张图片
使用MySQL容器(挂载卷保存db)
sudo docker exec -it mysql2 bash

/# ls /var/lib/mysql
服务计算——Docker容器技术_第21张图片

Dockerfile 的 VOLUME /var/lib/mysql 的含义

sudo docker container prune -f
服务计算——Docker容器技术_第22张图片

sudo docker volume prune
服务计算——Docker容器技术_第23张图片
sudo docker volume ls
含义3

每次启动 mysql 容器,docker 创建一个文件卷挂载在容器内/var/lib/mysql位置
这个卷在主机(host)的 /var/lib/docker/volumes/ 目录下

创建卷并挂载

sudo docker rm $(sudo docker ps -a -q) -f -v

sudo docker volume create mydb

sudo docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v mydb:/var/lib/mysql -d mysql:5.7
服务计算——Docker容器技术_第24张图片

启动客户端容器链接服务器

sudo docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash

/# env

/# mysql -hmysql -P3306 -uroot -proot
服务计算——Docker容器技术_第25张图片

Docker compose 与多容器应用自动化部署

创建并进入comptest文件夹
下载:docker-compose(容器编排的原型)
sudo curl -L “https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$ (uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose

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

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
服务计算——Docker容器技术_第26张图片
服务计算——Docker容器技术_第27张图片
编写:stack.yml
vi stack.yml

version: '3.1'
services:
  db:
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

启动服务
sudo docker-compose -f stack.yml up
服务计算——Docker容器技术_第28张图片
服务计算——Docker容器技术_第29张图片

Docker网络

备制支持 ifconfig 和 ping 命令的 ubuntu 容器
sudo docker run --name unet -it --rm ubuntu bash

apt-get update
服务计算——Docker容器技术_第30张图片
服务计算——Docker容器技术_第31张图片

apt-get install net-tools
服务计算——Docker容器技术_第32张图片
apt-get install iputils-ping -y

服务计算——Docker容器技术_第33张图片
服务计算——Docker容器技术_第34张图片

ifconfig
服务计算——Docker容器技术_第35张图片
ping172.17.0.3
服务计算——Docker容器技术_第36张图片
ping本机
服务计算——Docker容器技术_第37张图片
启动另一个命令窗口,由容器制作镜像
sudo docker commit unet ubuntu:net
服务计算——Docker容器技术_第38张图片
创建自定义网络

sudo docker network create mynet

在两个窗口创建 u1,u2 容器网络,并使用以下命令

sudo docker run --name u1 -it -p 8080:80 --net mynet --rm ubuntu:net bash
服务计算——Docker容器技术_第39张图片
sudo docker run --name u2 --net mynet -it --rm ubuntu:net bash
服务计算——Docker容器技术_第40张图片
两个网络互相ping,可以ping通
服务计算——Docker容器技术_第41张图片
ping百度也可以
服务计算——Docker容器技术_第42张图片
执行以下两条指令:

sudo docker network connect bridge u1

sudo docker network disconnect mynet u1

两个容器直接就ping不通了,但是百度还可以ping通
服务计算——Docker容器技术_第43张图片
pingu1

Docker仓库

容器监控与日志

检查docker的状态

sudo docker info
服务计算——Docker容器技术_第44张图片
服务计算——Docker容器技术_第45张图片
服务计算——Docker容器技术_第46张图片
sudo docker info --format { {.ServerVersion}}
服务计算——Docker容器技术_第47张图片
查看容器内进程
sudo docker ps
sudo docker top (ID)
sudo docker stats (ID)
服务计算——Docker容器技术_第48张图片
容器详细信息
sudo docker inspect (ID)
服务计算——Docker容器技术_第49张图片
容器日志查看
sudo docker logs (ID)
服务计算——Docker容器技术_第50张图片

Docker图形化管理工具

单节点运行

sudo docker run -d -p 3306:3306 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
单节点运行

Docker Engine API与开发

先拉取Alpine
sudo docker pull alpine
用 curl 发 docker 客户端命令

==sudo curl --unix-socket /var/run/docker.sock -H “Content-Type: application/json” ==

==> -d ‘{“Image”: “alpine”, “Cmd”: [“echo”, “hello world”]}’ ==

> -X POST http://localhost/v1.41/containers/create
服务计算——Docker容器技术_第51张图片
sudo curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/(上面生成的很长的Id)/start
sudo curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/(上面生成的很长的Id)/wait
服务计算——Docker容器技术_第52张图片
sudo curl --unix-socket /var/run/docker.sock “http://localhost/v1.41/containers/(上面很长的Id)/logs?stdout=1”
API2

实验感想

这次作业主要是配置Docker和熟悉一些操作,总的来说有参考的手册配置起来并不难,但是由于镜像等问题还是卡了很久,后面一些比较复杂的操作还是不是很好理解的,要“玩转”可能还有很长的路要走

你可能感兴趣的:(服务计算,docker,centos)