Docker学习总结

dockerFile学习

启动容器

docker ps 
docker run -it [imageID]

删除容器

docker rm -f $(docker ps -q)

数据卷

容器数据卷,如何持久化容器的数据,防止断电后数据丢失
在这里插入图片描述

数据卷
docker run -it -v /宿主机的绝对路径:/容器内目录 镜像名
docker run -it -v /myDataVolume:/dataVolumnContainer
容易停止推出后,主机修改数据仍然可以获取到
* 第一步,编写一个dockerfile脚本,volumn test
FROM centos
VOLUME ["/dataVolumnContainer1","/dataVolumnContainer2"]
CMD echo "finish,success"
CMD /bin/bash

开放端口

参考https://blog.csdn.net/leinminna/article/details/100560036

dockerfile

  • dockerfile的构建过程
FROM 基础镜像,当前镜像是基于哪个镜像
MAINTAINER 镜像维护者的姓名和邮箱地址
RUN 容器构建需要运行的命令
EXPOSE 当前容器对外暴露出的端口
WORKDIR 指定创建容器后,终端默认登陆进入的工作目录
ENV 用来在构建镜像中设置环境变量
ADD 将宿主机目录文件拷贝到镜像中并且解压缩
COPY 拷贝文件和目录到镜像中
VOLUME 容器数据卷
CMD 指定一个容器启动的时候运行的命令,dockerfile可以有多个,但是只有最后一个生效
ENTRYPOINT 指定一个容器运行要的命令,追加
ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
  • 自定义一个dockerfile文件
    现在我们需要解决三个问题
    1.初始的镜像默认路径是/
    2.默认不支持vim
    3.默认不支持ifconfig
    自定义一个dockerfile去解决这个问题

例子1

1.编写dockerfile

from centos
ENV mypath /tmp
WORKER $mypath
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD /bin/bash

在这里插入图片描述

2.BUILD dockerfile

#指定路径制作镜像
docker build -f ${DockerFile path} -t [Container]:[TAG] .
#默认在本路径下生成镜像(本路径下有dockerfile文件)
docker build -t [Container]:[TAG]

网络管理

默认网络

docker network ls

在这里插入图片描述

查看容器使用网络的情况

默认网桥docker0

docker network inspect bridge

自定义网络

实际生产环境中,我们要自己定义网络

docker network create --driver bridge isolated_nw

创建完毕之后,我们任然可以看到这个网络是桥接的
现在我们去以这个网络去运行一个名字为nwtest的镜像

docker run -itd --name=nwtest --network=isolated_nw busybox

为容器nwtest添加一种默认的bridge管理方式

docker network connect bridge nwtest

再使用下面命令可以查看情况

docker inspect nwtest

如果要移除这个网络,使用

docker network disconnect isolated_nw nwtest

移除这个自定义网络

docker network rm isolated_nw

容器通信

1.创建两个容器c1,c2

docker run -itd --name=c1 busybox
docker run -itd --name=c2 busybox

2.创建一个自定义的isolated_nw网络(需要预先创建容器)

docker network create --driver bridge isolated_nw

3.然后我们创建一个新的c3容器,使用这个网络

docker run --network=isolated_nw -itd --name=c3 busybox

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pFnMyEeU-1599611729667)(evernotecid://399C2A36-2295-4452-AA3C-022192D15EA5/appyinxiangcom/28360271/ENResource/p80)]

4.为c2新增一个自定义的网络连接

docker network connect isolated_nw c2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KmURXd8V-1599611729668)(evernotecid://399C2A36-2295-4452-AA3C-022192D15EA5/appyinxiangcom/28360271/ENResource/p81)]

5.现在我们测试下c2,c3的连通性

docker inspect c1,c2获得两个容器的ip,互相ping通就行

docker swarm的使用

Dockerswarm学习链接
docker swarm是docker的一个集群管理工具
1.dockerswarm的架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YixSvKgv-1599611729668)(evernotecid://399C2A36-2295-4452-AA3C-022192D15EA5/appyinxiangcom/28360271/ENResource/p82)]

2.dockerswarm集群搭建
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hb2UGKLC-1599611729669)(evernotecid://399C2A36-2295-4452-AA3C-022192D15EA5/appyinxiangcom/28360271/ENResource/p83)]

3.创建docker swarm
在node1上创建swarm集群

docker swarm init --advertise-addr 192.168.59.128

查看管理节点的集群信息

docker node ls

强制删除某个节点

docker swarm leave -f

我们去查看网络也可以看到有个ingress网络
4.向docker swarm添加工作结点,在两个工作结点中分别执行以下的命令(这一步目前如果直接在两台服务器操作就会失败,但是如果使用ssh操作就会成功
添加两个work结点

docker swarm join --token xxx node2:2377

例如这个🌰

docker swarm join --token SWMTKN-1-3sylqzh0dbytnl1n2ncqtsk725xcvuwpindr4dgweusrq1swnd-cf2je7ppyr4gkpc228ev70uxg 192.168.59.128:2377

这个时候使用docker node ls就可以看到整个集群节点了
5.部署服务

docker service create --replicas 1 --name helloworld alpine ping docker.com

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B3pSijXH-1599611729670)(evernotecid://399C2A36-2295-4452-AA3C-022192D15EA5/appyinxiangcom/28360271/ENResource/p84)]

6.查看docker swarm中的服务

  • 查看服务列表
docker service ls
  • 查看部署服务的详细信息
docker service inspect 服务名称
  • 查看服务在集群节点上的分配以及运行状况
docker service ps 服务名称

7.修改副本数量

  • 在manager上修改服务副本的数量
docker service scale helloworld=5

8.删除服务

docker service rm 服务名称

9.部署一个Nginx服务

  • 在manager上创建一个overlay为驱动的网络
docker network create -d=overlay my-multi-host-network
  • 在集群管理节点部署一个nginx服务
docker service create \
--name my-web \
--network my-multi-host-network \
-p 8080:80 \
--replicas 2 \
nginx

接下来我们使用docker service ps my-web就可以看到服务了

Docker Compose使用

1.docker-compose是基于python的,使用pip安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose==1.24.1

查看版本

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值