docker学习笔记

yum install   docker  -y  #安装
systemctl  start   docker.service  #启动服务
systemctl  enable   docker.service   #随机启动
docker  version   
docker  search    镜像名字   #搜索镜像 
docker  pull  ubuntu     #从docker官方仓库下载镜像  
docker images    #查看当前系统有哪些镜像
docker inspect 镜像ID  #查看镜像详细信息
docker tag 旧名称:旧标签   新名称:新标签   
docker rmi  镜像ID或仓库名称:标签     #删除镜像 注意:对于多标签的镜像,
                                     #使用docker rmi删除镜像只会删除对应的标签而不是镜像,除非这个标签是最后一个
                                     #如果有基于该镜像运行的容器,请先删除容器再删除镜像
                                  
#docker create   -t  -i  ubuntu   /bin/bash     //创建(但不运行)一个容器                                  
#docker run   -t  -i  ubuntu   /bin/bash     //docker  run  -d     -it   ubuntu    /bin/bash 
新建并启动一个容器,可以基于某个镜像开无数个容器  
这里的-t是让docker分配一个伪终端,
-i是让容器的标准输入保持打开  
也可以加-d 放后台运行
-c  进入容器运行命令

确认系统上有哪些容器 
#docker ps  -a     
如果进入容器后,退出想重新进入原来的容器,可以使用如下步骤和命令来完成  
docker start|stop  容器id  
#docker attach  容器的名字   //也可以使用docker exec  或者第三方软件nsenter
docker  exec    -it      容器名字或容器id     /bin/bash  
退出容器:exit


#docker save  -o   ubuntu_14.04.tar   ubuntu:14.04   //导出镜像  
#docker load  <   ubuntu_14.04.tar    //导入镜像
#docker stop 容器ID   //停止容器    
#docker rmi   ubuntu   //删除镜像    
#docker  rm   容器id   //删除容器  
#docker export  容器id的前4个字符   > test_con.tar  //导出容器(生成的是一个镜像) 
#cat  test_con.tar |docker import  -  test/ubunut:v1.0 //导入容器  (test/ubunut:v1.0这个容器将被取代)


#########容器资源控制#########
docker run   -t  -i -m 100M --memory-swap  200M --cpu-share 1024 docker.io/centos   /bin/bash  
//先启动一个容器  #-m  内存大小--memory-swap swap大小,--memory-swap默认是-m指定的两倍  
  多任务--cpu-share 后面跟1024及倍数 如果另一个容器为2048   ,那么这两个容器cpu资源配比为1:2
  --cpuset-cpus 0,1,2,3....  设置容器独占内核
  --device-write-iops  设定每秒io次数限制设备写速度   示例: --device-write-iops  2
  --device-read-bps    设定读取速度   示例:--device-read-bps  1MB
  --device-write-bps   意思自己猜
docker ps -a  //查询容器ID
cd /sys/fs/cgroup/cpu/system.slice/docker-fee4bfa929b33a7c7d1f58385d655e720dea02fa55d9cc73fe70cea9951c9720.scope 
#切换目录  cpu.cfs_quota_us /cpu限额 -1不限制   可以修改为20000,意思就是不超过20%

docker镜像创建:
1)基于已有的镜像创建:
docker  commit  选项 容器ID|名称  仓库名称:标签
选项  -m 说明信息
      -a 作者信息
      -p 生成过程总停止容器运行
 示例:
docker ps -a      #查询容器 
docker commit -p  -m "centos" -a "tommypeng"  a8ea31e32454   peng:centos7-20200805      ##运行中的容器生成镜像
docker  images  | grep  peng   ##查询彭这个仓库的镜像

2)基于本地模板创建
http://openvz.org/Download/template/precreated  #模板下载开源地址
示例:
wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz  ##下载debian模板
cat debian-7.0-x86-minimal.tar.gz | docker import - debian:test  ###导入为镜像

3)基于Dockerfile创建
在编写 Dockerfile时,有严格的格式需要遵循:

第一行必须使用FROM指令指明所基于的镜像名称;

之后使用MAINTAINER指令说明维护该镜像的用户信息;

然后是镜像操作相关指令,如 RUN指令。每运行一条指令,都会给基础镜像添加新的一层

最后使用CMD指令指定启动容器时要运行的命令操作。
示例:
1)切换到opt目录下,创建apache目录 准备网页文件

 cd /opt/
 mkdir apache
 cd apache/
 vim index.html
 <h1>this is my first dockerfile</h1>
 cat index.html
 <h1>this is my first dockerfile</h1>


(2)编写dockerfile脚本

vim Dockerfile 
FROM centos:7   #基于基础镜像centos7
MAINTAINER  The centos project <pxg 202208051946>   ##维护人员信息
RUN yum install  -y  httpd   ##镜像操作指令:安装apache
EXPOSE  80   ##开放80端口
ADD index.html  /var/www/html   ##复制网站首页文件
WORKDIR  /usr/sbin/  ##知道执行路径
ENTRYPOINT  ./apachectl -D FOREGROUND   ##指定前台运行

(3)创建一个新的镜像,并执行 Dockerfile脚本

docker build -t apache:centos7 .    ###眼睛睁大一点哦  -t 指定镜像的标签信息

docker run -itd -p 1314:80 apache:centos7 /bin/bash  ###运行

##########私有仓库#########
docker pull registry   ##拉取私有仓库镜像
vim /etc/sysconfig/docker   ##编辑配置文件
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry=192.168.137.215:5000'

systemctl restart docker   ##重启docker
docker run -d -p 5000:5000  -v /date/registry:/tmp/registry   registry   ##启动容器
docker  tag  docker.io/registry 192.168.137.215:5000/registry   ###重置标签
docker push 192.168.137.215:5000/registry     ##像私有仓库导入镜像

##########docker的数据管理##########
docker run -d -v /data1 -v /data2  --name web  apache:centos7  /bin/bash  ###运行容器,创建data1和data2两个数据卷
docker  ps 
docker exec -it web  /bin/bash  ##进入容器终端
ls /  ##浏览根,显示如下,data1 和 data2挂载在容器的根下
anaconda-post.log  bin  boot  data1  data2  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

##挂载宿主机目录作为数据卷
mkdir  /ppo     ###宿主机创建目录
docker run -d -v /ppo:/data1  --name web1  apache:centos7  /bin/bash   ##运行容器,将宿主机ppo目录挂载到容器的data1目录
touch /ppo/1.txt  ##在宿主机创建文件
docker exec -it web1  /bin/bash   ##进入容器
ls /data1   ##浏览容器的data1 目录 ,可以看到1.txt文件
###反之亦然

###数据卷容器
docker run -it --volumes-from web  --name db1  apache:centos7  /bin/bash  ##运行容器,并挂载容器web的数据卷
docker  start 8909d263727  ##启动容器
docker ps -a   ##查看容器
docker  exec   -it db1  /bin/bash   ##登录容器
ls /   ##  浏览根,可以看到data1和data2

############docker网络通信############
##端口映射
docker run   ####-P  随机映射端口   -p 指定映射端口 
##例如:
docker run -it  -p 80:80 --name NAT  apache:centos7  /bin/bash 

##容器互联
docker  run    ##--link name:alias  name是要连接的容器名称 ,alias是连接的别名
容器web1已经存在
docker run -d  -P  --name  web2  --link  web1:web1   apache:centos7  /bin/bash  ##创建并运行容器web2与web1互联
docker  exec -it  web2  /bin/bash  ##进入容器web2
ping web1  ##测试连通性
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT大白鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值