Docker实践

一、概要

本文主要介绍docker安装,基本使用,registry私有仓库。

二、docker介绍

docker常用操作
解释:

  • Image相当于镜像文件、类、模板
  • Container 相当于类的具体实例,可以根据Image生成多个Container,每个Container里有各自不同的配置
  • Dockerfile 可以根据Dockerfile里面的描述生成image文件
  • Docker registryDocker官方仓库,支持从仓库里获取(pull)公共的image,推送(push)自己镜像到仓库(国内貌似推送不了,所以要用私有registry
  • Docker 轻量级的虚拟容器,跟虚拟机相比,不仅运行速度更快,而且支持版本控制(依赖git),可以快速tag和从某一tag恢复,升级维护方便

阿里云部署
如果是部署在阿里云ECS的则可以利用阿里云的Docker Registry 获取(pull)Docker的常用image(据说是跟官网同步的),但是该Registry是不支持push的,要push需要自己另外建立私有Registry。

二、docker安装

参考 https://docs.docker.com/linux/started/
docker安装支持window、mac、linux等操作系统,如果是window用户建议在window环境下安装一个ubuntu虚拟机,在虚拟机再安装docker,这样会有更好的体验。

下面是在ubuntu14.04 server下的安装步骤(低版本的ubuntu可能需要先升级)

  1. 安装wget(一般系统都有的了)
    $ sudo apt-get update
    $ sudo apt-get install wget
  2. 安装docker
    $ wget -qO- https://get.docker.com/ | sh
  3. 检查是否安装成功(一般情况下所有命令需要sudo)
    $ sudo docker version
    如果出现版本信息即可

三、docker常用命令

  • docker服务start/stop/restart
    $ sudo service docker start/stop/restart

  • 列出本地所有images
    $ sudo docker images

  • 将某个公共的image某个版本(tag)下载到本地(可在https://hub.docker.com/ 查询),不指定tag默认是最新版本即tag为latest
    $ sudo docker pull image_name[:tag]

  • 将本地某个image某个版本(tag)上传到官网Registry或私有Registry,不指定tag默认是所有版本
    $ sudo docker push image_name[:tag]

  • 生成一个新tag的image
    $ sudo docker tag image[:tag] new_image[:tag]

  • 删除images
    $ sudo docker rmi image_name/image_id

  • 查询官网images
    $ sudo docker search key

  • 查看image提交历史
    $ sudo docker history image_name/image_id

  • 查看帮助
    $ sudo docker [command] --help

  • 查看Container
    $ sudo docker ps 正在运行
    $ sudo docker ps -a 所有容器,包括已停止
    $ sudo docker ps -l 最近运行的容器

  • Container常用操作(可以用container_id的缩写进行操作)
    $ sudo docker start/stop/kill/rm container_name/container_id
    $ sudo docker attach container_name/container_id 重新进入到容器中
    $ sudo docker start/stop/kill/rm $(sudo docker ps -a -q) start/stop/kill/rm所有容器
    注意,rm之前先要kill或者stop,因此rm不会删掉正在运行的容器

  • 启动新Container(运行后会产生一个新的Container)
    $ sudo docker run -it image_name/image_id
    以交互方式进入容器,进入容器后输入exit则退出容器,并停止容器,如不停止退出则输入ctrl+p ctrl+q
    $ sudo docker run -d image_name/image_id 以后台方式运行
    $ sudo docker run -v /temp:/home/temp image_name/image_id
    将本机/temp挂载到容器的/home/temp目录,容器对/home/temp的所有读写都会反映到本机/temp目录下
    $ sudo docker run -p 5001:5000 image_name/image_id
    将本机的5001端口映射到容器的5000端口

  • 由Container生成image
    $ sudo docker commit -m comment container_id image_name[:tag]

  • 由DockerFile生成image
    $ sudo docker build -t image_name docker_file_path

  • 输入登录信息(push到官方Registry需要)
    $ sudo docker login
    然后输入用户名、密码、email

三、创建私有Registry

其实搭建私有registry很简单,它也是docker上面的一个镜像registry
$ sudo docker run -p 5000:5000 registry
应用是以5000端口提供服务

下面介绍私有registry的使用:

  1. 先将需要push的image改名,image的命令规则如下
    [REGISTRYHOST/][USERNAME/]NAME[:TAG],其中

    • REGISTRYHOST为私有Registry地址可以是ip或者域名,如果是官方Registry则可以省略
    • USERNAME为Registry上面的用户名
    • NAME为image名字

    通过tag命令将目标image改名,如
    $ sudo docker tag myimage mydomain:5000/myname/myimage:v1

    通过$ sudo docker images会看到新的mydomain:5000/myname/myimage:v1

  2. 然后提交到私有Registry
    $ sudo docker push mydomain:5000/myname/myimage:v1

  3. 同样从私有Registry获取image
    $ sudo docker pull mydomain:5000/myname/myimage:v1

注意
如果push遇到类似证书错误,可以修改本机/etc/default/docker如下
DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=mydomain:5000"
其中mydomain:5000为你私有Registry的域名或地址,然后重启docker服务即可再次push

四、docker重启自动启动Container

$ sudo docker run --restart=always images [command]

其中:
–restart分为三个参数
no - container不重启(默认)
on-failure - container退出状态非0时重启
always - 始终重启

注意:
默认情况run执行完command会自动退出(exit 0),因此使用always时要避免不断重启

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值