容器化技术与容器服务

准备docker环境

首先su root切换到root用户

升级内核

升级内核
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
reboot后查看内核版本为更新的版本

用国内阿里云安装
# Set up repository
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述

# Use Aliyun Docker
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

# 查看指定版本

yum list docker-ce --showduplicates

在这里插入图片描述

# 安装指定版本

yum install -y --setopt=obsoletes=0 \
   docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
   docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch

在这里插入图片描述

# 不指定版本号 默认安装最新版
sudo yum install docker-ce

在这里插入图片描述

设置文件系统
vim /etc/systemd/system/docker.service.d/override.conf

[Service]
ExecStart=
#ExecStart=/usr/bin/docker daemon  -H fd:// --insecure-registry hub.03in.com:5002
ExecStart=/usr/bin/dockerd -s overlay2  --insecure-registry hub.03in.com:5002
启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker

一定要做这一步,否则没有server

查看docker版本

安装成功
在这里插入图片描述
在这里插入图片描述

运行第一个容器

运行镜像
docker run hello-world

在这里插入图片描述

运行镜像
docker run -it ubuntu bash

在这里插入图片描述

显示本地镜像库内容
docker images

在这里插入图片描述

获得帮助
docker --help

在这里插入图片描述

显示运行中容器
docker ps

在这里插入图片描述

显示所有容器(包含已中止)
docker ps -a

在这里插入图片描述

继续运行原容器并进入
docker restart frosty_goodall
docker ps
docker attach frosty_goodall

MySQL与容器化

拉取 MySQL 镜像
docker pull mysql:5.7

构建docker镜像练习
mkdir mydock && cd mydock
vi dockerfile
在这里插入图片描述
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]

构建镜像
docker build . -t hello

在这里插入图片描述

运行镜像
docker run -it --rm hello -H  

在这里插入图片描述

使用MySQL容器

启动服务器
sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 00cbdb363500c562e7ee552250b6434a33a37301cc24986645d216d6bbcd2f36

启动服务器
sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

在这里插入图片描述

启动 MySQL 客户端
docker run -it --net host mysql:5.7 "sh"
mysql -h127.0.0.1 -P3306 -uroot -proot

在这里插入图片描述
之后可进行数据库的相关操作
在这里插入图片描述

使用MySQL容器(挂载卷保存db)
docker exec -it mysql2 bash

在这里插入图片描述

Dockerfile 的 VOLUME /var/lib/mysql 的含义
docker container prune -f
docker volume prune –f
docker volume ls

在这里插入图片描述

创建卷并挂载
docker rm $(docker ps -a -q) -f -v
docker volume create mydb
docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v mydb:/var/lib/mysql -d mysql:5.7

在这里插入图片描述

启动客户端容器链接服务器
docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash

在这里插入图片描述

自动编排容器

下载docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/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

docker-compose -f stack.yml up

在这里插入图片描述

管理容器网络
docker network ls

在这里插入图片描述

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

在这里插入图片描述

启动另一个命令窗口,由容器制作镜像
docker commit unet ubuntu:net

在这里插入图片描述

创建自定义网络
docker network create mynet

在这里插入图片描述

在两个窗口创建 u1,u2 容器网络,并使用以下命令
docker run --name u1 -it -p 8080:80 --net mynet --rm ubuntu:net bash
docker run --name u2 --net mynet -it --rm ubuntu:net bash
docker info u1
docker network connect bridge u1
docker network disconnect mynet u1

容器监控与与日志

检查docker的状态
docker info 
docker info --format {{.ServerVersion}}

在这里插入图片描述

容器详细信息
docker inspect
docker inspect -f '{{.NetworkSettings.IPAddress}}' 
容器日志查看
docker logs

实战

参考 https://blog.csdn.net/Mrfive555/article/details/85227697

创建静态文件服务器docker
FROM node:8

# Create app directory
RUN mkdir -p /home/swapi
WORKDIR /home/swapi

# Bundle app source
COPY . /home/swapi
RUN npm install

EXPOSE 8888
# CMD [ "npm", "start" ]
CMD ["node", "bin/index.js", "8888", "http://192.168.134.129:8080"]
创建后端服务器docker
# Use an official Golang runtime as a parent image
FROM golang:latest

# Make the working directory
RUN mkdir -p go/src/server

# Set the working directory to /go/src/server
WORKDIR /go/src/server

# Copy the current directory contents into the container at /go/src/server
COPY . /go/src/server

# Get all packets and install
RUN go get -u -v 
RUN go install -v

# Make port 8080 available to the world outside this container
EXPOSE 8080

CMD server run
创建数据库docker
FROM mysql:5.7.21

#设置登录密码
ENV MYSQL_ROOT_PASSWORD 123456
#定义工作目录
ENV WORK_PATH /opt/starWar
#定义会被容器自动执行的目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d

# 创建文件夹
RUN mkdir -p $WORK_PATH

#将所需文件放到容器中
COPY starWar.sql $WORK_PATH/
COPY setup.sh $AUTO_RUN_DIR/

#给执行文件增加可执行权限
RUN bash $AUTO_RUN_DIR/setup.sh

setup.sh

mysql -uroot -p$MYSQL_ROOT_PASSWORD &
source $WORK_PATH/starWar.sql;
service start mysql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值