Docker使用

Docker常用命令

docker ps -----查看所有镜像的进程
docker ps |awk '{print $2, $NF}'-----只打印出IMAGE和NAMES两列

Docker 基础

Docker简介

Docker 是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Go语言实现。
项目后来加入了Linux基金会,遵从了Apache2.0协议,项目代码在GitHub上进行维护。
Docker是高效和轻量级的PAAS解决方案,它在LINUX系统上快速创建容器,并在容器上部署和运行应用。容
器和宿主机共享操作系统内核,容器与容器以及宿主机之间通过NameSpace实现隔离,通过cgroup实现资源
配额。
Docker通过配置文件可以轻松实现应用程序的自动化安装、部署和升级,非常方便。

Docker在如下几个方面具有较大的优势:
• 更快速的交付和部署
• 更高效的虚拟化
• 更轻松的迁移和扩展
• 更简单的管理

DOCKER介绍—三个基本概念

Docker包括三个基本概念:
• 镜像(Image)
• 容器(Container)
• 仓库(Repository)
Docker 镜像就是一个只读的模板,可以把它看成是包含了应用的操作系统镜像。
例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或用户需要的其它应用 程序。 镜像可以用来创建Docker容器。 镜像:
Docker利用容器来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。
每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的Linux环境(包括
root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。 容器:
仓库是集中存放镜像文件的场所。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub

Docker 的基本结构

  • 如果把Docker看成一个生态的话,它主要有两部分组成:Docker仓库和Docker自身程序。拿iPhone做类比的话,Docker仓库相当于iPhone的AppStore,Docker相当于iPhone的IOS手机操作系统。

Docker 基本使用

Docker的安装

Ubuntu 系统中已经自带了 Docker 包,可以直接安装。

$ sudo
$ sudo apt-get update
apt-get install -y docker.io
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
$ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io

安装后启动

$ sudo service docker start

也可通过离线安装包安装,可以根据自己的系统与安装习惯,自己搜索查找安装,
网上资料很多

Docker镜像的运行

Docker 运行容器前需要本地存在对应的镜像,如果镜像存在本地,Docker 会从镜像
仏库下载(默讣是Docker Hub 公共注册服务器中的仓库)
基本命令:
Docker Hub 库下载一个 Ubuntu 12.04 操作系统的镜像

#列出本地镜像
sudo docker pull ubuntu 
sudo docker images
#运行镜像
sudo docker run -t -i ubuntu

创建镜像有两种方式

一种是在容器(运行中的镜像)中做修改,然后将容器保存成镜像文件
进入容器:docker run -t -i ubuntu /bin/bash
进行修改,比如随便安装软件或者修改文件
退出

docker commit -m "描述" -a "作者" 0b2616b0e5a8 ubuntu:t1

二中是利用Dockerfile,一种文本文件,该文件中需要写docker支持的命令(用的更广泛)

$ mkdir ysbd
$ cd ysbd
$ touch Dockerfile
FROM ubuntu:14.04
MAINTAINER yaoyu26@foxmail.com
RUN echo "hello" > createFile.txt
$docker build -t="ubuntu:t2" .

上边是构建最简单的镜像
此外,还可以利用 ADD 命令复制本地文件到镜像;用 EXPOSE 命令来向外部开放端口;用 CMD
命令来描述容器启动后运行的程序等。
具体命令列表见下一页
注意:一个镜像不能超过 127 层

#打不同的tag标志:
docker tag 镜像ID ubuntu:v3
#导入镜像:
docker load -i 镜像文件
#导出镜像:
docker save -o 文件名字 镜像名称
#上传镜像
docker push 镜像名称:tag
#删除镜像
docker rmi 镜像ID或者名称:tag

FROM
格式为 FROM 戒 FROM : 。
第一条挃令必须为 FROM 挃令。幵丏,如果在同一个Dockerfile中创建多个镜像时,可以使用多个 FROM
挃令(每个镜像一次)。
MAINTAINER
格式为 MAINTAINER ,挃定维护者信息。
RUN
格式为 RUN 戒 RUN [“executable”, “param1”, “param2”] 。
前者将在 shell 终端中运行命令,即 /bin/sh -c ;后者则使用 exec 执行。挃定使用其它终端可以通过第二
种方式实现,例如 RUN ["/bin/bash", “-c”, “echo hello”] 。
每条 RUN 挃令将在当前镜像基础上执行挃定命令,幵提交为新的镜像。当命令较长时可以使用 \ 来换
行。
CMD
支持三种格式
使用 exec 执行,推荐方式;

CMD command param1 param2 在 /bin/sh 中执行,提供给需要交亏的应用;
CMD ["executable","param1","param2"]
CMD ["param1","param2"]

提供给 ENTRYPOINT 的默讣参数;
挃定吪劢容器时执行的命令,每个 Dockerfile 叧能有一条 CMD 命令。如果挃定了多条命令,叧有最后一
条会被执行。
如果用户吪劢容器时候挃定了运行的命令,则会覆盖掉 CMD 挃定的命令。

EXPOSE
格式为 EXPOSE […] 。
告评 Docker 服务端容器暴露的端口号,供亏联系统使用。在吪劢容器时需要通过 -P,Docker 主机会自劢
分配一个端口转发到挃定的端口。
ENV
格式为 ENV 。 挃定一个环境变量,会被后续 RUN 挃令使用,幵在容器运行时保持。
例如ENV PG_MAJOR 9.3

ENV PG_VERSION 9.3.4
RUN curl -SL http://example.com/postgres-$PG_VERSION.tar.xz | tar -xJC /usr/src/postgress && ... ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH

ADD
格式为 ADD 。
诠命令将复制挃定的 到容器中的 。 其中 可以是Dockerfile所在目录的一个相对路
径;也可以是一个 URL;迓可以是一个 tar 文件(自劢解压为目录)。则。
COPY
格式为 COPY 。
复制本地主机的 (为 Dockerfile 所在目录的相对路径)到容器中的 。
当使用本地目录为源目录时,推荐使用 COPY 。

ENTRYPOINT
两种格式:

ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2

(shell中执行)。
配置容器吪劢后执行的命令,幵丏丌可被 docker run 提供的参数覆盖。
每个 Dockerfile 中叧能有一个 ENTRYPOINT ,当挃定多个时,叧有最后一个起效。
VOLUME
格式为 VOLUME ["/data"] 。
创建一个可以从本地主机戒其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
USER
格式为 USER daemon 。
挃定运行容器时的用户名戒 UID,后续的 RUN 也会使用挃定用户。
当服务丌需要管理员权限时,可以通过诠命令挃定运行用户。幵丏可以在乀前创建所需要的用户,例
如: RUN groupadd -r postgres && useradd -r -g postgres postgres 。要临时获取管理员权限可以使用
gosu
,而丌推荐 sudo 。
WORKDIR
格式为 WORKDIR /path/to/workdir 。为后续的 RUN 、 CMD 、 ENTRYPOINT 挃令配置工作目录。
可以使用多个 WORKDIR 挃令,后续命令如果参数是相对路径,则会基亍乀前命令挃定的路径。例如

WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd

则最终路径为 /a/b/c 。

ONBUILD
格式为 ONBUILD [INSTRUCTION] 。
配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作挃令。
例如,Dockerfile 使用如下的内容创建了镜像 image-A 。

[...]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build --dir /app/src
[...]

如果基亍 image-A 创建新的镜像时,新的Dockerfile中使用 FROM image-A 挃定基础镜像时,会自劢执行
ONBUILD 挃令内容,等价亍在后面添加了两条挃令。

FROM image-A
#Automatically run the following
ADD . /app/src
RUN /usr/local/bin/python-build --dir /app/src

使用 ONBUILD 挃令的镜像,推荐在标签中注明,例如 ruby:1.9-onbuild

目前Docker官方维护了一个公共仓库Docker Hub。其大部分需求, 都可以通过
在Docker Hub 中直接下载镜像来实现。
Search 命令:

docker search centos #在docker 公共仓库上搜索image
#Pull 命令:
docker pull tomcat #从docker公共仓库上下载image到本地库

从docker官网docker hub获取image在生产环境上并不方便或无法实现。用户可
以创建一个本地仓库供私人使用。docker-registry是官方提供的工具,可以用于
构建私有的镜像仓库。 docker-registry提供两种安装方式,一种是yum安装,一
种是运行docker-registry容器。本文介绍第二种安装方式。

#从能够访问外网的主机上下载docker-registry image:
docker pull docker.io/registry
docker save -o docker_registry docker.io/registry

#在作为私有库的服务器上安装docker-registry:
docker load -i docker_registry
docker run --name registry -d -p 5000:5000 -e
STORAGE_PATH=/tmp/registry -v
/hadoop/data8/docker_registry:/tmp/registry docker.io/registry

#Save 命令:
docker save -o centos_6.5 docker.io/insaneworks/centos #将本地库中的image保存到本地文件系统

#load 命令:
docker load -i /hadoop/data8/software/jdk7_docker #装载image到本地库

#images 命令:
docker images #列出本地库中的所有image

#tag 命令:
docker tag acc7283c7ad3 hpinc/nervecore:demo #修改image的tag

#rmi 命令:
docker rmi hpinc/nervecore:demo #删除本地库中的image

DOCKER常用命令-IMAGE操作
history 命令:

docker history hpinc/nervecore:demo #查看image历史信息
#push 命令:
docker push 10.255.242.52:1180/ecipt #将本地库中的image上传到私有库

DOCKER常用命令-容器命令
1.CREATE
格式为:

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

创建容器,例如:

docker create --name ncdemo -it hpinc/nervecore:demo bash /var/shell/runAll.sh

2.EXPORT
格式为:

docker export CONTAINER

导出容器到本地文件系统,例如:

docker export 227de23e65d0 > ncdemo_snapshot.tar

3.IMPORT
格式为:

docker import URL|- [REPOSITORY[:TAG]]

导入容器,例如:

cat ncdemo_snapshot.tar |docker import -hpinc/nc_snapshot:demo

4.COMMIT
格式为:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

将容器文件保存为镜像,例如:

docker commit -p ncdemo hpinc/nc_snapshot:demo

5.DIFF
格式为:

docker diff CONTAINER

比较指定容器和它自身基础镜像的不同(DOCKER FILE 中FROM命令指定的基础镜像),例如:

docker diff ncdemo

DOCKER常用命令-容器命令
6.PS
格式为:

docker ps [OPTIONS]

列出所有容器,例如:

docker ps -a

7.START
格式为:

docker start [OPTIONS] CONTAINER [CONTAINER...]

启动一个容器,例如:

docker start ncdemo

8.STOP
格式为:

docker stop [OPTIONS] CONTAINER [CONTAINER...]

中止容器,例如:

docker stop ncdemo

9.RM
格式为:

docker rm [OPTIONS] CONTAINER [CONTAINER...]

删除容器,例如:

docker rm 947e200f2b65 or docker rm -f ncdemo

10.RESTART
格式为:

docker RESTART [OPTIONS] CONTAINER [CONTAINER...]

重启容器,例如:

docker restart 947e200f2b65 or docker restart -f ncdemo

DOCKER常用命令-容器命令
11.RUN
格式为:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

在容器上运行一个命令后,停止容器,例如:

docker run -idt --name osdemo docker.io/insaneworks/centos uname -a

12.ATTACH
格式为:

docker attach [OPTIONS] CONTAINER

进入某个容器,例如:

docker attach 227de23e65d0 or docker attach ncdemo #CTRL+P and CTRL+Q 安全退出
docker attach --sig-proxy=false e2d7963422a8 #能够直接安全退出

13.LOGS
格式为:

docker logs [OPTIONS] CONTAINER

查看容器日志,例如:

docker logs --tail="all" ncdemo

14.INSPECT
格式为:

docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]

查看一个容器的底层信息,包含主机名、ip地址、暴露的端口号、创建时间、挂载信息、状态、驱动等。例如:

docker rm 947e200f2b65 or docker rm -f ncdemo

15.TOP
格式为:

docker top CONTAINER [ps OPTIONS]

查看容器中的进程,例如:

docker top register

DOCKER常用命令-容器命令
16.KILL
格式为:

docker kill [OPTIONS] CONTAINER [CONTAINER...]

杀死一个容器,并发送KILL信号给容器中的进程,例如:
docker kill -s register
17.CP
格式为:

docker cp CONTAINER:PATH HOSTPATH

拷贝容器中的文件或目录到本地文件系统,例如:

docker cp ncdemo:/var/logs /hadoop/data8/ecip/tmp/logs

18.PORT
格式为:

docker port CONTAINER [PRIVATE_PORT[/PROTO]]

查看容器对外暴露的端口对应在容器中的私有端口,例如:

docker port ecipt 1145

DOCKER常用命令-容器命令-常用参数
1.暴露端口
格式为:-p
暴露容器中的某个端口,例如:

docker run --name register -d -p 1180:5000 docker.io/registry

2.挂载文件或目录
格式为:-v
挂载某个目录或文件到容器,例如:

docker create --name ecipt -v /hadoop/data8/bes.lic.txt:/opt/ecip/bes.lic.txt -v
/hadoop/data8/software/9710/oltplogs:/var/run/bes/oltplogs --net=host -m 2g -it 10.255.242.52:1180/ecipt

3.CPU份额
参数: -c
限制CPU份额,例如:

docker run -c 10 -it ubuntu /bin/bash #10% cpu份额

4.内存大小
参数: -m
限制内存大小,例如:

docker run -m 1024m -dit ubuntu /bin/bash #容器占用内存限额为1G

5.容器名称
参数: -name
指定容器名称,例如:
docker run --name register -d -p 1180:5000 docker.io/registry

DOCKER常用命令-容器命令-常用参数
6.以demon的方式运行容器
格式为:-d
以demon的方式运行容器,例如:

docker run --name register -d -p 1180:5000 docker.io/registry

7.运行完后删除容器
格式为:–rm
运行完后删除容器,例如:

docker run --name register --rm -d -p 1180:5000 docker.io/registry

8.配置容器的桥接模式
参数:

 --net=bridge|none|container:NAME_or_ID|host 

#bridge 使用桥接模式,none不适用网络,通过指定的容器来转发数
据包,host和外部主机共有网络
配置容器的桥接模式,例如:

docker create --name ecipt --net=host -m 2g -it 10.255.242.52:1180/ecipt

如果选用bridge方式,容器会生成一个私有的IP地址,跨主机间容器通信可以通过暴露端口和在iptables共同作用下实现。
9.容器主机名
格式为:-h
运行完后删除容器,例如:

docker run --name register --rm -d -p 1180:5000 docker.io/registry

DOCKER常用命令-容器命令-常用参数
10.容器互联
格式为:–link
容器与容器建立互联关系,例如:

docker run -d --name db training/postgres
docker run -d -P --name web --link db:db training/webapp python app.py

通过env命令查看容器环境变量,以及查看/etc/host文件,可以看到内容的变化。

其他-DNS
挂载了三个文件

/dev/disk/by-uuid/1fec...ebdf on /etc/hostname type ext4 ...
/dev/disk/by-uuid/1fec...ebdf on /etc/hosts type ext4 ...
tmpfs on /etc/resolv.conf type tmpfs ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值