docker学习笔记,三板斧

概念理解:

docker是为了干什么:为了把项目的环境、代码一起打包复用,免于环境不同导致的各种依赖问题。

镜像就是把自己已有的环境、代码进行打包,变成一个镜像文件,可以认为它是个母体(比如蚁后);因为蚁后自身不具备战斗力,所以其他人下载这个镜像文件后,它是无法直接使用的,要先让让蚁后生一个兵蚁,也就是docker run 指令产生一个容器,产生的容器就包含了镜像的各种环境,无需安装就能使用。

镜像和容器的关系理解:

docker run -it --name bee1 IMAGE /bin/bash    # 名叫bee1的容器从名叫image的镜像中生成了

bee1:我出生了,我的妈妈是IMAGE

docker run -it --name bee2 IMAGE /bin/bash    # 名叫bee2的容器从名叫image的镜像中生成了

bee2:我也出生了,虽然我的妈妈也是IMAGE,但是我和bee1没关系,我俩各管各的

docker run -it --name bee1 IMAGE /bin/bash    # 名叫bee1的容器又一次从名叫image的镜像中生成了

旧bee1:纳尼?新出生的那小子也叫bee1??那我死了哈!  # 旧bee1会被杀死,容器中的缓存会丢失

新bee1:   我又出生了,我的妈妈又是IMAGE,等等,我为什么要说“又”?

docker run -it --name bee3 IMAGE2 /bin/bash  # 名叫bee3的容器又一次从名叫image2的镜像中生

bee3:我出生了,我的妈妈是IMAGE2。bee1、bee2是谁?我不认识,我只认识我妈。

安装环境Ubuntu16.04

准备项:——————————————————————————————————

安装前检查:
内核版本
uname -a
存储驱动(Device Mapper):查看该文件是否存在
ls -l /sys/class/misc/device-mapper

检查无误后选择安装安装ubuntu维护的版本或docker维护版本

安装ubuntu维护的版本:
(sudo apt-get upgrade) 更新apt-get
sudo apt-get install docker.io
source /etc/bash_completion.d/docker.io 更新配置
sudo docker -version # 查看版本号以确认是否安装成功

安装docker维护版本:
检查apt的https协议支持情况,查看/usr/lib/methods/https文件是否存在
若不存在,则直接安装
apt-get update
apt-get install apt-transport-https
添加docker的地址到apt命令列表中
echo deb https://get. docker. com/ubuntu docker main > /etc/apt/sources. Iist. d/docker. list
添加仓库的key (GPG秘钥)
apt-key adv --keyserver hkp://keyservers. ubuntu. com:80 --recv-keys
58118E89F3A912897C070ADBF76221572052609D
安装Docker
apt-get update
apt-get install - y Ixc-docker

docker -version 查看版本号来确认是否安装成功

将非root用户加入用户组

使用非root用户:
sudo groupadd docker 添加名字为docker的用户组
sudo gpasswd -a {user} docker 将当前用户添加到该用户组中
sudo service docker restart 重启docker服务
退出账户并重新登录

准备工作完成————————————————————————————————

常用命令——————————————————————————————————

镜像:
查看
docker images
docker images -a #显示所有镜像
docker images *词条* #显示名称中包含“词条”的镜像
docker images -q #只显示镜像唯一ID
docker inspect 名称:TAG #查看镜像中的内容

搜索
docker search {ubuntu} #从dockerhub搜索包含ubuntu的镜像

下载和删除
docker pull {ubuntu:lastest} #拉取镜像名称为ubuntu的镜像到本地镜像,默认TAG为lastest,或者可以指定比如ubuntu:18.04
docker rmi {ubuntu:lastest}或者imageID #删除

容器:
查看
docker ps #查看当前正在运行的容器
docker inspect {容器ID}或者{容器名称} #返回当前容器详细信息

启动
docker run -it IMAGE /bin/bash #从一个叫IMAGE的镜像启动一个容器,不取名的话会默认随机容器名
docker run -it --name {new_name} IMAGE /bin/bash #启动容器并取名
注意!!启动容器最好取名,否则如果正好默认名字和其他容器冲突,会杀死之前的容器
-i 告诉docker的守护进程始终打开标准输入
-t 告诉docker为容器创建一个tty的终端,提供一个交互式shell
容器中exit就可以退出容器

停止
docker kill 容器名 #停止一个启动中容器,但是不会删除它

重启
docker exec -it 容器ID /bin/bash #再次进入一个已启动的容器(并打开bash命令行),exec重进容器必须带启动命令(如/bin/bash,python3)否则会报错

删除
docker rm 容器名 # 彻底删除一个停止运行的容器


dockerfile:
docker镜像的描述文件,docker能读取dockerfile中的指令自动构建新的镜像
需要注意:每个指令在制作镜像时都会创建一个镜像层,镜像层越多,效率越低。因此一个指令能完成的动作尽量不要分多个指令定义

关键字:
FORM #指定基础镜像
MAINTAINER #作者信息
RUN #执行什么命令
EXPOSE #容器对外暴露的端口
WORKDIR #该镜像启动容器后,进入容器后进入到哪个目录
ENV #配置环境变量
ADD #将文件拷贝到镜像中并自动解压
COPY #将文件拷贝到镜像中
VOLUME #配置数据卷(目录挂载)
CMD #容器启动时候执行的命令
ENTRYPOINT #容器启动时候执行的命令

案例:
ls
Dockerfile hello.py  # 确认当前路径下有Dockerfile文件,hello.py则是你要加入镜像的代码文件

FROM ubuntu                                          #指定要生成的镜像的基础镜像,开头第一句话必须也只能是FROM
MAINTAINER zb1312065xxxx@163.com  #指定作者是谁

RUN apt-get update                                #执行apt-get update进行apt-get更新
RUN apt-get install vim -y                       #执行 apt-get install vim -y  命令,安装vim
RUN mkdir /home/data                          #执行mkdir /home/data创建文件夹
COPY hello.py /home/data/hello1.py     #执行cp hello.py /home/data/hello1.py 复制并重命名文件,无法执行会报错

WORKDIR /home/zb                               #启动容器后,如果启动交互模式,直接进入到/home/zb
CMD ["/bin/bash"]                                  #启动容器的时候,进入到/bin/bash这种命令行

基于dockerfile创建新的镜像
docker bulid -t 新的镜像名:TAG 上下文路径
docker build -t ubuntu:zb18.04 .  #最后一个点是表示:上下文路径为当前路径,即dockerfile指令行中涉及到路径的命令,其起始路径从当前路径开始
docker build -t 新的镜像名:TAG -f Dockerfile路径 上下文路径 # 通过其他路径的dockerfile创建镜像
docker build -t ubuntu:lastdata_zb  -f home/zb/Dockerfile home/data/
                     指定这个位置的Dockerfile  指定上下文路径为/home/data,则Dockerfile中的诸如COPY指令会从/home/data路径开始搜索文件并执行操作

创建完镜像后,它就会变成一个本地镜像,可以使用docker images 等指令查询,然后用docker run等质量来启动它。

然后打包镜像就可以把它从服务端上下载下来进行移动了

docker save -o <filename>.tar  <image_name>:<tag>

                           自定义               镜像名             镜像TAG

ls

<filename>.tar

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值