• docker基础命令,常用操作


    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
      
      
  • 相关阅读:
    rsync 配置
    DNS主从服务,子域授权,view视图,日志系统,压力测试
    ubuntu VNC server 黑屏 yum源更新(ubuntu16.04)
    HTTPD服务 openssl的https服务机制
    vmware Esxi 更换管理网卡IP
    httpd 虚拟主机建立之访问机制及其日志定义
    pxe kickstart 配置+TFTP+NFS多版本系统部署
    Linux nohup不输出日志文件的方法
    Tomcat部署时war和war exploded区别
    vim编辑超大文件
  • 原文地址:https://www.cnblogs.com/yuncong/p/10293709.html
Copyright © 2020-2023  润新知