docker基础命令

使用docker镜像

  • 获取镜像

    从docker registry获取镜像的命令是docker pull。命令格式是:
    docker pull [选项][docker registry地址] 仓库名:标签
    docker register地址:地址的格式一般是 域名:端口,默认地址是docker hub
    仓库名:仓库名是两段格式,用户名/软件名,如果不写用户,默认docker hub用户名是library,也就是官方镜像
  • 列出服务器所有的镜像文件

    # 列出所有的imaga文件
    docker image ls
    等同与
    docker images
    删除所有的image文件
    docker image rm [imagename]

docker命令学习

  1. 删除docker镜像(必须删除依赖这个镜像的容器记录)

    docker rmi 镜像id/镜像名
  2. 运行镜像,且产生一个容器记录,且进入容器空间内

    docker run  -it  centos  /bin/bash
    -it 交互式的终端,代表我可以在容器中输入命令
    /bin/bash 指定shell解释器
  3. 创建一个容器,在容器内安装一个vim工具

    # 运行镜像,
    docker run -it centos /bin/bash
    # 安装vim
    yum install vim #退出
    exit
  4. 提交这个容器,创建新的image

    docker commit 059fdea031ba chaoyu/centos-vim
    # 059fdea031ba 为上述容器id, 后面的是新的image文件名
  5. 查看已提交的镜像记录

    docker images
  6. 基于这个拥有vim的镜像,创建新的容器

    docker run -it 479  /bin/bash
    # 479 为拥有vim的镜像id, 后续为路径
  7. 导出当前系统的镜像文件,可以传输给其他人

    docker save shenzhenqishi1qi/centos-vim    > /opt/centos-vim.tar.gz
  8. .其他人或者自己可以导入这个镜像文件

    docker load < /opt/centos-vim.tar.gz
  9. 创建启动容器的方式有2种

    1.基于镜像创建新的容器
    2.对于已运行的容器,进行启停
    docker stop 容器id
    docker start 容器id
  10. 运行centos镜像生成容器并执行 echo hehe

    #这条命令意思是:创建一个只运行一次的容器
    docker run centos /bin/echo "hehe"
  11. 运行一个容器记录,且给与名字

    docker run --name mydocker -it centos /bin/bash#启动一个bash终端,允许用户进行交互
  12. 运行一个ubuntu容器

    1.查看系统的版本信息
    cat /etc/redhat-release #这个命令查看红帽系列的系统
    cat /etc/os-release
    2.运行一个ubuntu容器
    docker run -it ubuntu /bin/bash
  13. 删除容器记录

    docker rm  容器id
    docker -aq #列出所有容器记录的id
    docker stop `docker ps -aq` #停止所有正在运行的容器
    docker rm `docker ps -aq` #一次性删除所有容器记录
    docker rmi `docker images -aq` #一次性删除所有本地的镜像记录
  14. 暴露容器端口,端口映射

    	-P 参数会随机映射端口到容器开放的网络端口
    docker run -d -P training/webapp python app.py
    -d 后台运行
    -P 端口映射, 随机映射 ,物理机的随机端口:容器内暴露的端口 如果本地没有镜像文件,docker run会自动帮我们下载镜像
    在docker run centos [root@qishione ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    e3e0be2b22a8 training/webapp "python app.py" 2 seconds ago Up 1 second 0.0.0.0:32769->5000/tcp qishiweb 只要我访问宿主机的32769端口也就是访问到了容器内的5000端口
  15. 指定端口映射,启动容器应用

    docker run -d -p 9999:5000 --name my9999webapp training/webapp python app.py
  16. training/webapp 这个镜像文件,我们基于这个镜像,运行了一个flask web app

    1.基于ubuntu 14.04的操作系统   FROM ubuntu:14.04
    2.默认进入了/opt/webapp目录 RUN cd /opt/webapp
    3.在这个目录下存放了Procfile app.py requirements.txt tests.py
    4.通过容器内的命令,运行一个后台程序 python app.py
    5.最终这个镜像,生成了一个web容器
    6.数据挂载
    -v 宿主机的文件夹:容器内的文件夹
    -p 端口映射 宿主机的端口:容器内的端口
    7. docker port 82e 查看容器的端口映射关系
  17. 发布docker镜像到docker hub

    1.登录odcker hub仓库,注册一个用户,用于存放自己的docker镜像
    2.在linux中登录docker
    docker login #输入账号密码 3.修改本地镜像的名字,推送到docker hub
    docker tag docker.io/hello-world yuchao163/qishi1qi-hello-docker 4.推送本地镜像到共有仓库
    docker push yuchao163/qishi1qi-hello-docker 5.仍和人都可以随意下载这个镜像
    docker pull yuchao163/qishi1qi-hello-docker
  18. 搭建私有docker仓库,提交本地镜像

    1.下载一个docker官方私有仓库镜像
    docker pull registry
    2.运行一个docker私有容器仓库
    docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
    -d 后台运行
    -p 端口映射 宿主机的5000:容器内的5000
    -v 数据卷挂载 宿主机的 /opt/data/registry :/var/lib/registry
    registry 镜像名
    3.修改docker的配置文件,让他支持http方式,上传私有镜像
    vim /etc/daemon.json
    写入如下内容
    {
    "registry-mirrors": ["http://f1361db2.m.daocloud.io"],
    "insecure-registries":["192.168.11.37:5000"]
    }
    4.修改docker的服务配置文件
    vim /lib/systemd/system/docker.service
    找到[service]这一代码区域块,写入如下参数
    [Service]
    EnvironmentFile=-/etc/docker/daemon.json
    5.重新加载docker服务
    systemctl daemon-reload
    6.重启docker服务
    重启docker服务,所有的容器都会挂掉
    重启docker服务,所有的容器都会挂掉
    重启docker服务,所有的容器都会挂掉 systemctl restart docker 7.修改本地镜像的tag标记,往自己的私有仓库推送
    docker tag docker.io/yuchao163/hello-world-docker 192.168.11.37:5000/xiayuhao
    8.下载私有仓库的镜像
    docker pull 192.168.11.37:5000/xiayuhao
  19. 编写dockerfile,构建自己的镜像,运行flask程序

    1.在宿主机中,编写一个flask代码文件,和Dockerfile
    cd /opt/dockertest/
    touch flasktest.py
    from flask import Flask
    app=Flask(__name__)
    @app.route('/')
    def hello():
    return "i love china"
    if __name__=="__main__":
    app.run(host='0.0.0.0',port=8080) 2.构建dockerfile
    1.指引一个基础的系统镜像centos
    2.定义作者标签
    3.解决环境依赖关系,安装python-setuptools
    4.安装flask模块 easy_install flask
    5.准备代码文件到容器中 COPY flasktest.py /opt/
    6.切换到/opt目录下 workdir /opt
    7.运行代码 python flasktest.py 3.dockerfile内容如下
    [root@qishione dockertest]# cat Dockerfile
    FROM centos
    LABEL maintainer="深圳骑士1期"
    RUN yum install python-setuptools -y
    RUN easy_install flask
    COPY flasktest.py /opt/
    WORKDIR /opt
    EXPOSE 8080
    CMD ["python","flasktest.py"] 4.构建镜像文件,找到当前目录的Dockerfile,开始构建
    docker build -t qishi1qi/flask-web . 5.基于这个镜像,生成容器实例
    docker run -d -p 7777:8080 945 6.推送这个镜像到私有仓库
    docker tag qishi1qi/flask-web 192.168.11.37:5000/qishi1qi-flaskweb
    docker push 192.168.11.37:5000/qishi1qi-flaskweb

docker基础命令,常用操作的更多相关文章

  1. docker基础命令和操作

    前言 之前在部署个人网站的时候,需要打包maven,在生产环境,需要使用到docker去做服务器和端口的守护. 于是在查阅了相关资料,学习了docker一些基本命令行操作,包括对镜像的查看,修改和添加 ...

  2. Docker基础和常用命令

    Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...

  3. 1. Docker基础命令

    本文简要介绍Docker的基础命令,目的在于快速入门Dokcer,Docker的完整命令可以参考Docker官方手册. 0. 安装Docker Docker当前分为企业版(Docker Enterpr ...

  4. Linux - nginx基础及常用操作

    目录 Linux - nginx基础及常用操作 Tengine淘宝nginx安装流程 nginx的主配置文件nginx.conf 基于域名的多虚拟主机实战 nginx的访问日志功能 网站的404页面优 ...

  5. Docker - Docker基础命令及使用

    Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 Docker基础命令 Docker 查看帮助信息:docker --help 查看 ...

  6. Linux 的基础命令的操作

    Linux 的基础命令的操作 显示日期和时间:date 显示日历:cal 简单好用的计算机:bc 1.显示日期: date +%Y/%m/%d 2018/09/01 date +%H:%M 14:26 ...

  7. Mac 下 Git 的基础命令行操作

    Mac 下 Git 的基础命令行操作 sudo apt-get install git-core //安装Git 用户配置 git config --global user.name "Yo ...

  8. Docker安装及常用操作

    Docker简介: Docker是一个轻量级容器技术,类似于虚拟机技术,但性能远远高于虚拟机,Docker支持将软件编译成一个镜像(image),在这个镜像中做好对软件的各种配置,然后可以运行这个镜像 ...

  9. 02-命令篇——基础命令&常用命令

    基础命令 docker 启动与停止 启动docker systemctl start docker 停止docker systemctl stop docker 重启docker systemctl ...

随机推荐

  1. 面试题之java缓存总结,从单机缓存到分布式缓存架构

    1.缓存定义 高速数据存储层,提高程序性能 2.为什么要用缓存(读多写少,高并发) 1.提高读取吞吐量 2.提升应用程序性能 3.降低数据库成本 4.减少后端负载 5.消除数据库热点 6.可预测的性能 ...

  2. 框架4--NFS网络共享

    目录 框架4--NFS网络共享 1.练习 2.昨日问题 3.今日内容 4.NFS简介 5.NFS应用 6.NFS实践 6.1.服务端 6.2.客户端 7.NFS配置详解 8.搭建考试系统 8.1.搭建 ...

  3. [LeetCode]27.移除元素(Java)

    原题地址: remove-element 题目描述: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必 ...

  4. Dapp开发petshop——truffle官方例程

    truffle-pet-shop pet-shop是truffle的官方例程. 之前参考https://learnblockchain.cn/2018/01/12/first-dapp/的中文教程,但 ...

  5. ICLR 2018 | Deep Gradient Compression: Reducing the Communication Bandwidth for Distributed Training

    为了降低大规模分布式训练时的通信开销,作者提出了一种名为深度梯度压缩(Deep Gradient Compression, DGC)的方法.DGC通过稀疏化技术,在每次迭代时只选择发送一部分比较&qu ...

  6. Python-Flask框架之"图书管理系统"项目,附详解源代码及页面效果截图

    该图书管理系统要实现的功能如下: 1. 可以通过添加窗口添加书籍或作者,如果要添加的作者和书籍已存在于书架上, 则给出相应的提示: 2. 如果要添加的作者存在,而要添加的书籍书架上没有,则将该书籍添加 ...

  7. ShaderLab实现Vignette过场动画效果

    实现Vignette过场动画效果 postprocessing中有渐晕效果(Vignette),镜头可以由边缘往中间慢慢变黑: 但是我打包WebGL的时候提示我postprocessing,GPU不支 ...

  8. python数据结构:数组和列表

    线性结构有两种:数组和列表 array和list 其中list各项操作的时间复杂度如下 因为insert是在头部插入 所以列表所有元素后移,时间复杂度为O(n) remove移除列表中某个值的第一个匹 ...

  9. 号外!号外!这个敏捷高效的大数据bi看板可以免费使用啦!

    随着信息革命的深入推进,数据已经成为国家基础性战略资源,各个行业开始重视数据分析,企业不同,数据分析需求当然不一样,如销售行业需要对商品进行销售分析:网站运营需要进行用户.渠道.流量等信息分析:制造行 ...

  10. 【Windows 访问控制】九、AccessCheck 的工作原理

    授权和访问控制组件 下图说明了授权Windows访问控制过程. 在此图中,主题 (由用户启动) 访问对象(如共享文件夹)的过程. 将用户的访问令牌中的信息与对象的安全描述 (AES) 中的访问控制项进 ...