docker的使用记录(基本使用用于记录备忘)

docker的使用

docker概念

  • 镜像文件,可以理解为操作系统的镜像
  • 容器实例,可以理解为微型的操作系统
  • 仓库,存储docker景象文件的地方

docker的安装(docker官网有安装指导)

可以参考对应系统的安装相关

https://docs.docker.com/install/linux/docker-ce/ubuntu/#set-up-the-repository

centos系统

  • yum安装,配置yum仓库

    • 仓库配置,阿里云、清华等(版本可能略低)

    • 建议选择官方的安装源(最新的)

      1.卸载旧版本
      sudo yum remove docker \
                        docker-client \
                        docker-client-latest \
                        docker-common \
                        docker-latest \
                        docker-latest-logrotate \
                        docker-logrotate \
                        docker-selinux \
                        docker-engine-selinux \
                        docker-engine
      
      2.设置存储库
      sudo yum install -y yum-utils \
        device-mapper-persistent-data \
        lvm2
      
      sudo yum-config-manager \
          --add-repo \
          https://download.docker.com/linux/centos/docker-ce.repo
      
      3.安装docker社区版
      sudo yum install docker-ce
      4.启动关闭docker
      systemctl start docker
      
  • rpm安装,不推荐

  • 源码编译安装,比较麻烦,没有特定需求还是建议使用yum

ubuntu18.04安装docker(这是本人安装执行命令记录历史,照着来应该没有问题,不过我使用的是root权限)

dpkg -l | grep docker | awk -F' ' '{print $2}'|xargs -n 1 apt -y remove
 sudo apt-get install  apt-transport-https  ca-certificates curl  software-properties-common -y
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 sudo apt-get update
 apt-cache madison docker-ce
 apt-key fingerprint 0EBFCD88
 add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
 sudo apt-get update
 apt-get install docker-ce docker-ce-cli containerd.io
 docker run  hello-world # docker  run 自动下载本地不存在但是仓库中存在的镜像

docker服务相关命令

systemctl status/start/stop  docker

docker镜像、仓库、容器的增删改查管理、使用命令

镜像

  • 从远程仓库中下载Centos镜像

    docker pull centos
    
  • docker删除镜像

    docker  rmi  容器标识ID/镜像名称    
    # 该命令的解释应该是 remove image  简写为 rmi
    # 如果有容器进程正在使用要删除的docker镜像,则删除不成功会报错。
    # 删除镜像是将docker镜像从本地的docker仓库中将要删除的镜像移除。
    docker rmi  -f 容器标识ID/镜像名称 
    # 该命令是强制删除容器命令镜像,无论是否有容器使用和依赖该镜像。
    

    docker删除容器

    docker  rm 容器标识ID
    # 该命令是删除容器
    
  • docker启停

    docker start 容器标识ID
    docker stop 容器标识ID
    
  • docker 从远程仓库查找镜像,相当于从官网仓库中直接搜索镜像名字所获的结果

     docker  search  centos  
    

    docker查看本地所有的镜像文件

    docker    images
    

    查看本地docker运行过哪些容器,包括已经运行结束(docker容器如果没有在后台运行的话,就会执行结束退出)

    也就是说,容器随时创建,随时删除的

    docker   ps   -a
    

    查看本地docker正在运行的程序

    docker ps
    

    显示所有的容器ID

    docker ps -aq
    
  • 运行一个“活着”的容器

    docker run -d centos /bin/sh -c "while true;do echo '你个糟老头子,不听课,坏的很'; sleep 1;done"
    # 参数说明:
    #  -d 后台运行
    #  centos 指定运行的容器镜像名称
    # /bin/bash 指定运行容器镜像的shell解释器
    # -c 指定一段shell解释代码
    

    查看容器的标准输出

    docker logs 容器标识ID
    

    进入容器内

    docker  exec -it 容器标识ID  /bin/bash
    命令说明:
    -i 交互式命令操作
    -t 开启一个终端
    容器标识ID指定要操作 的容器
    /bin/bash 指定终端登陆的解释器
    

    补充:

    查看系统发行版本命令

    cat /etc/system-release

    cat /etc/os-release

  • 自定制的镜像文件

    # 首先进入容器
    docker run -it 镜像  /bin/bash
    或者
    docker exec -it 一个正在运行的容器ID  /bin/bash
    # 安装或部署配置环境,例如执行如下命令安装vim
    yum -y install vim
    # 然后退出
    exit
    # 然后查看刚刚运行容器的ID
    docker ps -a
    # 根据标识ID,将需要提交打包的容器
    docker commit  容器标识ID  容器镜像名称
    # 导出docker镜像成为一个压缩文件
    docker save 要导出的镜像名称  > 导出镜像命名全路径
    # 删除原镜像
    docker rmi 镜像名称/容器ID
    # 将导出的镜像压缩文件重新倒入本地仓库
    docker load  < 要道如的镜像文件压缩包
    # 查看倒入是否成功
    docker images
    # 如果导入成功,则启动进入容器,验证环境是否符合预期
    docker exec -it centos /bin/bash
    
  • docker启停app,以及端口映射,启动一个镜像容器,并将容器提供服务的端口映射到宿主机上

    docker run -d -P 容器镜像  python app.py
    # 命令说明
    # -d 后台运行
    # -P 随即端口映射
    # -p portA:portB   指定端口映射  例如 -p 8888:5000 意思是将 docker容器5000端口映射到宿主机的8888端口上
    

    需要注意的是注意宿主机防火墙和云服务端口限制等设置

  • docker加速器(配置国内下载源)

    # 具体步骤可以查看 https://www.daocloud.io/mirror
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
    
  • docker的自定义制作镜像文件

    FROM scratch #制作base image 基础镜像,尽量使用官方的image作为base image
    FROM centos #使用base image
    FROM ubuntu:14.04 #带有tag的base image
    
    LABEL version=“1.0” #容器元信息,帮助信息,Metadata,类似于代码注释
    LABEL maintainer=“yc_uuu@163.com" # 指定作者信息
    
    #对于复杂的RUN命令,避免无用的分层,多条命令用反斜线换行,合成一条命令!
    RUN yum update && yum install -y vim \
        Python-dev #反斜线换行
    RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME”
    
    WORKDIR /root #相当于linux的cd命令,改变目录,尽量使用绝对路径!!!不要用RUN cd
    WORKDIR /test #如果没有就自动创建
    WORKDIR demo #再进入demo文件夹
    RUN pwd     #打印结果应该是/test/demo
    
    # ADD and COPY
    # ADD 存在压缩文件的解压功能,因此只是将文件copy到容器中,应该使用COPY而不是ADD
    # ADD与COPY
    # - 优先使用COPY命令
    #    -ADD除了COPY功能还有解压功能
    # 添加远程文件/目录使用curl或wget
    ADD hello /  #把本地文件添加到镜像中,吧本地的hello可执行文件拷贝到镜像的/目录
    ADD test.tar.gz /  #添加到根目录并解压
    
    WORKDIR /root
    ADD hello test/  #进入/root/ 添加hello可执行命令到test目录下,也就是/root/test/hello 一个绝对路径
    COPY hello test/  #等同于上述ADD效果
    
    
    ENV #环境变量,尽可能使用ENV增加可维护性
    ENV MYSQL_VERSION 5.6 #设置一个mysql常量
    RUN yum install -y mysql-server=“${MYSQL_VERSION}” 
    
    • 下面开始自定义一个docker flask web 服务器容器

      # 1、编写web服务
      cat app.py
      #coding:utf8
      from flask import Flask
      app=Flask(__name__)
      @app.route('/')
      def hello():
          return "hello docker"
      if __name__=="__main__":
          app.run(host='0.0.0.0',port=8080)
          
      # 2、编写Dockerfile
      FROM new_ubuntu
      RUN apt-get install -y gnupg2
      RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8
      RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak
      COPY sources.list /etc/apt/
      RUN apt update
      RUN apt -y install python3-pip
      RUN pip3 install flask
      COPY app.py /opt/
      WORKDIR /opt
      EXPOSE 8080
      CMD ["python3","app.py"]
      
      # 3、构建docker容器
      
      docker build -t ubuntu_flask  .
      
      # 4、构建完成查看镜像
      docker images
      
      # 5、启动docker实例,并进行映射
      docker run -d -p 8081:8080 ubuntu_flask
      
      #6、宿主机访问验证
      curl http://127.0.0.1:8081
      
      #7、验证成功关闭docker实例
      docker stop 实例ID
      
      

仓库

登陆docker共有仓库
docker login
用户名:yuchao163
密码:
将本地镜像push到远程仓库中
docker push docker.io/本地镜像名   yuchao163/自定义镜像名
从共有仓库中拉取镜像
docker pull yuchao163/要下载的共有仓库镜像
docker私有仓库搭建
docker run -d -p5000:5000 \
-v /opt/data/registry:var/lib/registry \
registry
-v参数,将宿主机器上的文件夹目录映射到容器内的文件夹,在容器内通过访问被映射文件路径访问操作宿主机文件路径
其中registry是要安装下载的镜像

修改docker的配置文件使其支持非安全的https的方式推送镜像
cat /etc/docker/daemon.json
{"registry-mirrors":["http://95822026.m.daocloud.io"],
"insecure-registrues":["192.168.10.200:5000"]
}
修改系统启动文件 /lib/systemd/system/docker.service
EnvironmentFile=-/etc/docker/daemon.json

修改完成后重新加载配置
systemctl daemon-reload
重新启动docker服务
systemctl restart docker


docker tag docker.io/hello-world 192.168.10.200:5000/test_hello
访问 192.168.10.200:5000/

容器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值