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