docker

yum install epel-release.noarch

yum install docker-io.x86_64

 

docker info

 

docker exec -ti alex /bin/bash一般用这个,退出用ctrl d

 

docker run -i -t ubuntu /bin/bash

  -i表示容器中stdin是开启的。

  -t为创建的容器分配一个伪tty

 

docker ps -l 列出最后一次运行的容器,包括运行和已经停止的。

 

docker ps -a 列出所有容器

 

docker ps -a -q 列出所有容器,只显示id

 

docker ps 列出正在运行的容器

 

docker run --name alex_container -i -t ubuntu /bin/bash 创建一个名叫alex_container的容器。

 

docker start 54940193f5d7  或者docker start alex_container

 

docker attach alex_container 进入这个container

 

创建守护式容器docker run --name alex_container -t -i -d ubuntu /bin/bash

 

docker images 列出物理机上所有镜像

 

docker pull ubuntu 不要用,会拉取ubuntu仓库中所有镜像

 

docker run --name blex -i -t ubuntu:12.04 /bin/bash  启动ubuntu12.04容器

 

docker search centos 

 


 

用Dockerfile构建镜像

mkdir static_web

cd static_web

vim Dockerfile

FROM ubuntu:14:04

MAINTAINER ALEX HE "alex@alexhe.net"

RUN apt-get update

RUN apt-get install -y nginx

RUN echo "hi im alex" >/usr/share/nginx/html/index.html

EXPOSE 80

 

from指定一个已经存在的镜像,基础镜像

maintainer指令,告诉docker该镜像的坐着是谁,以及坐着的邮件地址。

expose指令告诉容器内的应用程序将会使用容器的指定端口。可以指定多个expose指令向外部公开多个端口。

 

最后执行docker build -t="alex/static_web" .

或者给个标签号docker build -t="alex/static_web:v1" .

 

docker images alex/static_web 查看这个镜像的信息

docker history b7c0d3dff989 查看这个镜像怎么构建出来的

 

docker run -d -p 80 --name alex_web alex/static_web nginx -g "daemon off;"

nginx -g "daemon off;" 这将以前台运行的方式启动Nginx,作为我们的web服务器

-p,控制docker在运行时应该公开哪些网络端口给外部(母机)。

docker ps  查看哪个端口映射到了container的80端口

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                   NAMES

706acc8f76c1        alex/static_web     "nginx -g 'daemon of   5 seconds ago       Up 4 seconds        0.0.0.0:32768->80/tcp   alex_web     

 

 

docker port 706acc8f76c1 80

0.0.0.0:32768

 

 

-p选项还能灵活的管理容器和宿主之间的端口映射关系。比如可以指定将容器中的端口映射到docker宿主机的某一特定端口上,

如:

docker run -d -p 48888:80 --name alex_web alex/static_web nginx -g "daemon off;" 这将容器中的80端口绑定到宿主机的48888端口

docker run -d -p 127.0.0.1:48888:80 --name alex_web alex/static_web nginx -g "daemon off;" 将容器内的80端口绑定到宿主机127.0.0.1的80端口

docker run -d -p 127.0.0.1::80 --name alex_web alex/static_web nginx -g "daemon off;" 将容器内的80端口绑定到宿主机的随机端口上

 

 

-e传递环境变量

docker run -ti -e "WEB_PORT=8080" ubuntu env 这样就会传递进去环境变量

 

 

VOLUME指令

VOLUME ["/opt/project"]为基于此镜像创建的任何容器创建一个名为/opt/project的挂载点。

也可以通过数组:VOLUME ["/opt/project","/data"]

 

 

ADD指令用来构建环境下的文件和目录复制到镜像中

ADD software.lic /opt/application/software.lic

这里的add指令将会构建目录下的software.lic 文件复制到经相中的/opt/application/software.lic

或者用url:ADD http://wordpress.org/latest.zip /root/wordpress.zip

 

 

COPY指令

COPY指令不会提取贺解压文件。

COPY conf.d/ /etc/apache2/

 

挂载文件夹

docker run --name alex -v `pwd`:/mnt ubuntu /bin/bash

 


 

运行自己的Docker Registry

docker run -p 5000:5000 registry启动一个运行Registry应用的容器,并绑定到宿主机的5000端口

docker images alex/static_web 找到镜像id,b7c0d3dff989

docker tag b7c0d3dff989  192.168.1.1:5000/alex/static_web   用新的registry给该镜像打上标签

docker push 192.168.1.1:5000/alex/static_web    push命令推送到新的registry中去

 

使用自己的registry创建容器

docker run -t -i 192.168.1.1:5000/alex/static_web clex /bin/bash

 

posted @ 2017-07-10 18:07  alexhe  阅读(181)  评论(0编辑  收藏  举报