容器化技术与容器服务

Docker环境配置

准备Docker环境

sudo yum install -y yum-utils device-mapper-persistent-data lvm2 --nogpgcheck

在这里插入图片描述

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo --nogpgcheck
sudo yum install docker-ce --nogpgcheck

在这里插入图片描述

运行Docker

systemctl enable docker
systemctl start docker
sudo docker version

在这里插入图片描述

运行镜像

sudo docker run hello-world

在这里插入图片描述

sudo docker run -it ubuntu bash

在这里插入图片描述

Docker基本操作

显示本地镜像库内容

sudo docker images

在这里插入图片描述

获得帮助

sudo docker --help

在这里插入图片描述

显示运行中的容器

sudo docker ps

显示所有容器(包含已中止)

sudo docker ps -a

在这里插入图片描述

继续运行原容器并进入

在这里插入图片描述

mysql容器构建与应用容器化

拉取 MySQL 镜像

sudo docker pull mysql:5.7

在这里插入图片描述

sudo docker images

在这里插入图片描述

构建Docker镜像

mkdir mydock && cd mydock
vi dockerfile

保存以下内容

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

构建镜像

sudo docker build . -t hello

在这里插入图片描述
运行镜像

sudo docker run -it --rm hello -H

在这里插入图片描述

使用mysql容器

启动服务器

sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

在这里插入图片描述

在这里插入图片描述

sudo docker ps

启动 MySQL 客户端

sudo docker run -it --net host mysql:5.7 "sh"

在这里插入图片描述

mysql -h127.0.0.1 -P3306 -uroot -proot

使用MySQL容器(挂载卷保存db)

数据库文件在哪里?

sudo docker exec -it mysql2 bash
ls /var/lib/mysql

在这里插入图片描述
Dockerfile 的 VOLUME /var/lib/mysql 的含义

sudo docker container prune -f
sudo docker volume prune
sudo docker volume ls

在这里插入图片描述

  • 每次启动 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

在这里插入图片描述
启动客户端容器链接服务器

sudo docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash
env
mysql -hmysql -P3306 -uroot -proot

在这里插入图片描述

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

下载: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

在这里插入图片描述
编写:stack.yml

mkdir comptest && cd comptest
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网络

备制支持 ifconfig 和 ping 命令的 ubuntu 容器

sudo docker run --name unet -it --rm ubuntu bash
apt-get update

在这里插入图片描述

apt-get install net-tools

在这里插入图片描述

apt-get install iputils-ping -y

在这里插入图片描述

ifconfig and ping

在这里插入图片描述

启动另一个命令窗口,由容器制作镜像

sudo docker commit unet ubuntu:net

创建自定义网络

sudo docker network create mynet

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

sudo docker run --name u1 -it -p 8080:80 --net mynet --rm ubuntu:net bash
sudo docker run --name u2 --net mynet -it --rm ubuntu:net bash

在这里插入图片描述
两者可以ping通。

执行以下两条指令:

sudo docker network connect bridge u1
sudo docker network disconnect mynet u1

在这里插入图片描述
两个容器直接就ping不通了。

容器监控与与日志

检查docker的状态

sudo docker info
sudo docker info --format {{.ServerVersion}}

在这里插入图片描述

Docker图形化管理工具

单节点运行

sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

在这里插入图片描述
在这里插入图片描述

Docker Engine API与开发

用 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
sudo curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/08ade47e480e84c4296f4e775a95eb3d11350bad585318c33e3f82559cf5b4a0/start
sudo curl --unix-socket /var/run/docker.sock -X POST http://localhost/v1.41/containers/08ade47e480e84c4296f4e775a95eb3d11350bad585318c33e3f82559cf5b4a0/wait
sudo curl --unix-socket /var/run/docker.sock "http://localhost/v1.41/containers/08ade47e480e84c4296f4e775a95eb3d11350bad585318c33e3f82559cf5b4a0/logs?stdout=1"

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值