docker备忘录

重点

  • docker中镜像是静态数据
  • 通过docker run等类似命令从镜像创建一个容器, 容器是动态的数据,所有对容器的修改,不会影响创建容器的镜像. 一个镜像可以创建多个容器

因为工作需要学习了一下docker的使用方法,记录在此.

安装

目前docker只支持linux下,而且也要是比较新的版本,比如ubuntu只有14.04和16.04支持.下面是16.04下的安装步骤

  • 安装必要的系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common   
  • 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -    
  • 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"   
  • 更新并安装Docker-CE
sudo apt-get -y update   
sudo apt-get -y install docker-ce    
  • 安装校验
docker version   

下载镜像

下面的命令利用docker在Ubuntu:16.04镜像内执行一个echo语句,如果本地没有ubuntu:16.04,会自动下载.

docker run ubuntu:16.04 /bin/echo "just tt"

但是因为GFW的原因,一般是下载失败的,可以先执行如下命令,设置加速器

docker pull registry.docker-cn.com/library/ubuntu:16.04

另一个加速的方法是注册DaoCloud,注册后会给个一命令,执行后重启docker服务,docker pull的速度会提高

运行docker

docker中镜像是静态的,镜像运行起来后就是容器,容器是动态的.

交互式运行docker

docker run -i -t ubuntu:16.04 /bin/bash

执行这条命令后,会使用镜像ubuntu:16.04创建一个容器,用户会进入这个容器,使用exit命令退出容器.

后台运行docker

docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"

上面的命令利用镜像ubuntu:15.10创建一个容器,并执行一个shell循环. 这个命令会返回一个长字符串,叫做容器ID,唯一标识一个容器.

docker ps

查看所有运行中的容器

docker logs docker-id

docker-id就是那一长串字符(前面几位即可),该命令会显示容器的标准输出的内容

docker stop docker-id

停止后台运行的docker

扫描二维码关注公众号,回复: 1707781 查看本文章

docker 启动时增扩硬盘

docker -d --storage-opt dm.basesize=20G

docker 如何联网

docker默认的ubuntu镜像没有ifconfig和ping命令,在容器内执行如下命令即可

apt-get update
apt install net-tools
apt install iputils-ping

docker容器管理

  • docker run: 创建并启动一个容器
    有几个重启选项
    –restart=always: 不管容器返回码是什么, 都会重启容器
    –restart=on-failure:5 当容器返回值非零时才会重启容器
  • docker run -dit 192.168.1.10:5000/testpc:ver1: 后台方式启动一个镜像
  • docker ps -a: 查看所有容器,包括停止的
  • docker start A: 启动之前已经停止的容器A
  • docker stop: 推出容器
  • docker kill: 强制停止一个容器
  • docker rm: 删除已经停止的容器
  • docker cp: 在本地和docker之间复制文件
  • docker attach: 重新链接一个后台运行容器
    退出容器时,用ctrl-D会结束容器,用ctrl-P ctrl-Q退出但不结束容器

搭建docker私有库

  • docker pull registry
    registry也是一个特殊容器,保留字

  • docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 –restart=always –name registry registry
    启动registry容器, 端口5000, 默认目录/var/lib/registry映射到本机的/opt/registry目录 (无认证启动registry容器)

  • docker commit 容器id 新的镜像名
    docker commit 96feb0 192.168.1.10:5000/testpc:ver2
    保持容器在运行中,做了修改后, 直接commit成规范的名字, 然后不需要tag,直接push即可

  • docker push 192.168.1.10:5000/linuxtest:v1
    把192.168.1.10:5000/linuxtest:v1推送到服务器,当然注意服务器上registry容器处在运行之中

  • curl http://192.168.1.10:5000/v2/_catalog
    查看服务器192.168.1.10上的images

  • curl http://192.168.1.10:5000/v2/mypc/tags/list
    查看服务器上mypc镜像的信息. 如果遇到http/https的问题,在客户机上做如下处理
    vim /etc/docker/daemon.json
    里面的内容是一个json对象,加上一项insecure-registries,地址自己更改(docker服务器地址):
    {
    “insecure-registries”:[“192.168.1.12:5000”]
    }
    然后重启docker,执行

systemctl daemon-reload docker  
systemctl restart docker

导出容器

这里是把镜像打包,不是导出一个正在运行的容器(docker export), 命令如下:
docker save 镜像名 | gzip > 文件名.tar.gz

猜你喜欢

转载自blog.csdn.net/z0n1l2/article/details/80698973