文章目录
基础操作
升级内核

安装完成后把最新版本内核设为默认内核

安装docker
配置源

安装最新版本
docker基本操作
检查docker版本

运行镜像
运行hello world示例。这里我们本地没有hello world的docker,于是docker被拉取下来并部署

运行ubuntu docker

显示本地镜像库内容

获得帮助

显示容器

上面是显示运行中的容器,加上-a参数后将显示所有容器,包括已终止的。
继续运行元容器并进入

拉取MySQL镜像

构建docker镜像练习
创建一个新文件夹,创建一个dockerfile,并写入以下内容
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
构建镜像

运行镜像

MySQL与容器化
启动MySQL服务器:

运行MySQL客户端

进行数据库操作

创建卷并挂载

自动编排容器
下载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编排文件

运行docker-compose -f stack.yml up开始自动部署

部署成功

新部署的容器

docker网络
查看网络

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

由容器制作镜像

创建网络

连通性检测
两个容器可以互相ping通
u1 ping u2

u2 ping u1

断开网络后,二者就不能再连通了


实战
在我们的项目中,运行的代码被分配到三个docker中:静态文件服务器,后端服务器,数据库服务器。
- 静态文件服务器:负责前端网页部分的传输
- 后端服务器:处理查询请求
- 数据库服务器:保存后端数据
创建静态文件服务器docker
dockerfile文件
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"]
这个容器是一个继承自node:8的容器,然后在容器内创建一个/home/swapi的文件夹,并把工作区转移到这里。接下来,我们使用COPY命令把前端文件从本机拷贝到docker内。
这些安装工作完成后,EXPOSE 8888命令把容器的8888对外暴露出来,提供访问服务。最后一句CMD语句的作用是在docker内运行一个node服务器,提供静态文件服务器。
创建后端服务器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
后端的部署与静态文件部署类似,但有一点不同的是,静态文件服务器继承的是node容器,后端容器继承的是golang的容器。布置的过程类似,同样是按照新建文件夹,复制文件,构建文件,暴露端口,运行服务器的顺序进行。
部署过程:

创建数据库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
数据库docker的部署比前面两个稍微复制一些。数据库docker使用的是MySQL数据库,其中部署的时候需要配置一些环境参数,如MySQL登陆密码,WORK_PATH目录等。最后运行一个setup的脚本文件开启MySQL服务器。
setup.sh文件如下
mysql -uroot -p$MYSQL_ROOT_PASSWORD &
source $WORK_PATH/starWar.sql;
service start mysql
自动编排docker

部署结果
制备好上面三个部分的docker

服务都已开启

在外部访问网页

进行api查询


1416

被折叠的 条评论
为什么被折叠?



