微服务学习之docker的学习

Docker

定义:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker是一个开发运维一体化的主要的软件和配置文件

docker安装:

官方安装手册
https://docs.docker.com/install/linux/docker-ce/centos/
卸载旧版本

sudo yum remove docker-ce \
                docker-ce-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

安装一组工具

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

设置 yum 仓库地址

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
     --add-repo \
     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存

sudo yum makecache fast

安装新版 docker

sudo yum install docker-ce docker-ce-cli containerd.io

启动, 测试

启动 docker

sudo systemctl start docker

设置 docker 开机启动

sudo systemctl enable docker

镜像加速

下面命令直接生成文件 daemon.json

cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://hub-mirror.c.163.com"
  ]
}
EOF
#重新加载docker配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker

运行 hello-world 镜像,验证 docker

sudo docker run hello-world

docker

轻量的虚拟机
Docker 充分的利用宿主集的硬件资源,操作系统的底层资源,占用资源少,启动速度快。
docker的轻量虚拟机,也称为容器。

镜像

虚拟机的静态文件

镜像名称:

在这里插入图片描述

容器

从镜像运行启动的虚拟机,
下载虚拟镜像
有关docker的命令

#镜像命令
docker pull mysql #(docker pull)下载命令
docker images #// 查看镜像
docker load -i ... #// 导入文件(...代表文件名)
docker run ...  #//启动容器(...代表容器)
docker rmi -f ...  #// 删除镜像(...镜像文件)
docker rm -f ...  #// 删除镜像(...镜像文件)
docker rm -f xxx xxx xxx #//删除多个数据(xxx文件名或者是id前三位)
docker run \ 
-d \
--name xxx \
xxx bash   #//以新命名的方式进行启动容器
docker save mysql:5.7 node:8 | gzip > app.tar.gz  
#/*后台运行方式(...文件名字)*/
docker run \
-d \
...
#/*容器的命令*/
docker logs ...//日志查看(文件id的前三位)
#/*查看所有的容器*/
docker ps #//正在运行的容器
docker ps -a #//查看全部的容器包括正在运行的和退出结束的
docker stop ...#//停止容器(文件id的前三位)
docker start ...#//启动容器(文件id的前三位)
docker restart ...#//重启容器(文件id的前三位)
docker prune #//清理所有终止的容器
/*进入容器,在容器中运行指定的命令(...容器名或id前三位)*/
docker exec -it ... ls#//进入容器并执行查询操作
docker exex -it ... touch f1.txt #//进入容器并执行添加文件操作
docker exex -it ... ps #//文件进程
docker exex -it ... bash #//容器命令行提示
exit  #//退出容器

数据

#//--rm 当容器退出时,自动删除 -v指定的宿机目录如果不存在会自动创建。
docker run -dit \
--name app1 \
--rm -v /user/app:/opt/app \
xxx:x

#创建一个数据卷:
docker volume create my vol
docker colume ls
docker inspect my-vol
docker run \
--dit \
--rm \
--name app2\
centos:7
docker exec it app2 bash
cd /opt/app
echo 12345646413213564>f2.txt
cd  /var/lib/docker/volumes/my-vol/_data
ls
cat f2.txt

# 挂载主机目录
docker run -it --mount type=bind,source=/usr/app,target=/opt/app centos:7 bash
# 或
docker run -it -v /usr/app:/opt/app centos:7 bash


#删除指定的数据卷,如果数据卷被容器使用则无法删除
docker volume rm my-vol
#清理无主数据卷
docker volume prune

网络

docker run -d -P tomcat
# 查看容器信息
docker container ls -a
docker network ls
#新建网络
docker network create -d bridge my-net
#-d driver,网络类型,默认 bridge,也可以是 overlay(Swarm mode)
#列出网络
docker network ls
#查看网络信息
docker inspect ... #id前三位
#连接容器
docker run -it --name app1 --network my-net centos:7
#新开终端执行:
docker run -it --name app2 --network my-net centos:7
# 在两个终端中分别执行:
ping app1
ping app2

#以centos7为基础,安装oracle jdk8和tomcat7
FROM centos:7
#ADD命令将压缩包传入镜像中的指定目录,并同时解压缩
ADD jdk-8u212-linux-x64.tar.gz /opt/
ADD apache-tomcat-7.0.96.tar.gz /usr/
#为了方便,把文件夹名称改得简单一点
RUN mv /usr/apache-tomcat-7.0.96 /usr/tomcat
#设置环境变量
ENV JAVA_HOME=/opt/jdk1.8.0_212 \
    CATALINA_HOME=/usr/tomcat \
    PATH=$PATH:/opt/jdk1.8.0_212/bin:/usr/tomcat/bin
#暴露容器的8080端口
EXPOSE 8080
#设置启动容器时自动运行tomcat
ENTRYPOINT /usr/tomcat/bin/startup.sh && tail -F /usr/tomcat/logs/catalina.out

FROM centos:7
ADD jdk-8u212-linux-x64.tar.gz /opt/
ADD apache-tomcat-7.0.96.tar.gz /usr/
RUN mv /usr/apache-tomcat-7.0.96 /usr/tomcat
ENV JAVA_HOME=/opt/jdk1.8.0_212 \
    CATALINA_HOME=/usr/tomcat \
    PATH=$PATH:/opt/jdk1.8.0_212/bin:/usr/tomcat/bin
EXPOSE 8080
ENTRYPOINT /usr/tomcat/bin/startup.sh && tail -F /usr/tomcat/logs/catalina.out
#使用 Dockerfile 构建镜像
docker build -t tomcat:7 .

启动容器

准备存储目录

webapps目录,例如 /opt/webapps
logs目录,例如 /var/lib/tomcat-logs

mkdir /opt/webapps
mkdir /opt/webapps/ROOT
mkdir /var/lib/tomcat-logs

# 添加欢迎页
cat <<EOF > /opt/webapps/ROOT/index.html
<h1>Hello Docker!!!</h1>
EOF

启动容器,挂载目录

docker run \
-d \
-p 8080:8080 \
--name tomcat7 \
-v /opt/webapps:/usr/tomcat/webapps \
-v /var/lib/tomcat-logs:/usr/tomcat/logs \
tomcat:7

# 测试能否互联互通
ping 172.18.0.2
ping 172.18.0.3
# 进入 app1,ping宿主机和app2
docker exec -it app1 ping 172.18.0.1
docker exec -it app1 ping 172.18.0.3
docker exec -it app1 ping app2


#ng宿主机和app2
docker exec -it app1 ping 172.18.0.1
docker exec -it app1 ping 172.18.0.3
docker exec -it app1 ping app2

构建镜像

# 先准备文件夹,存放构建过程中使用的所有文件
# Dockerfile, jdk....gz, tomcat....gz
cd ~
mkdir tomcat7

cd tomcat7

cat <<EOF > Dockerfile
FROM centos:7
ADD jdk-8u212-linux-x64.tar.gz /opt/
ADD apache-tomcat-7.0.96.tar.gz /usr/
RUN mv /usr/apache-tomcat-7.0.96 /usr/tomcat
ENV JAVA_HOME=/opt/jdk1.8.0_212 \
    CATALINA_HOME=/usr/tomcat \
    PATH=$PATH:/opt/jdk1.8.0_212/bin:/usr/tomcat/bin
EXPOSE 8080
ENTRYPOINT /usr/tomcat/bin/startup.sh && tail -F /usr/tomcat/logs/catalina.out
EOF
# 上传jdk和tomcat7两个压缩文件到 tomcat7 目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值