docker构建与使用
安装
#安装
wget -qO- https://get.docker.com/ | sh
#后台启动
sudo service docker start
#运行测试
docker run hello-world
修改国内源/etc/default/docker
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io"
重新启动
service docker restart
使用
docker run ubuntu:15.10 /bin/echo "Hello world"
ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo "Hello world": 在启动的容器里执行的命令
交互式容器
-i -t参数
runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@dc0050c79503:/#
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
启动容器
runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
看到一串字符,是容器id
查看容器
docker ps
查看容器输出
docker logs 2b1b7a428627
docker logs trusting_bardeen
停止容器
docker stop 2b1b7a428627
docker stop trusting_bardeen
容器使用
docker查看命令

docker 命令 --help查看具体命令的帮助
运行一个web应用
docker run -d -P training/webapp python app.py
## -d:让容器在后台运行。
## -P:将容器内部使用的网络端口映射到我们使用的主机上。
查看 WEB 应用容器docker ps
多出了端口信息
0.0.0.0:32769->5000/tcp
这里docker开放了5000端口,映射到主机的32769端口
可以使用-p绑定端口
docker run -d -p 5000:5000 training/webapp python app.py
这样容器内部的 5000 端口映射到我们本地主机的 5000 端口上
查看端口映射
docker port 7a38a1ad55c6
查看web日志
docker logs -f 7a38a1ad55c6
-f就像tail一样获取标准输出
查看web应用程序内部的进程
docker top determined_swanson
检查docker底层信息
返回一个 JSON 文件记录着 Docker 容器的配置和状态信息
runoob@runoob:~$ docker inspect determined_swanson
停止WEB应用容器
docker stop determined_swanson
重启WEB应用容器
docker restart determined_swanson
查看正在运行的容器
docker ps -l
移除容器,需要保证移除时容器是停止状态,否则会报错
docker rm determined_swanson
镜像的使用
列出本地镜像docker images如下
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
training/webapp     latest              6fae60ef3446        11 months ago       348.8 MB
REPOSTITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一个仓库源可以有多个tag,代表不同的版本
获取一个镜像
docker pull ubuntu:13.10
查找镜像,可以从https://hub.docker.com 或者如下命令
docker search httpd
NAME:镜像仓库源的名称
DESCRIPTION:镜像的描述
OFFICIAL:是否docker官方发布
拖取镜像 docker pull
创建
## 运行
docker run -t -i ubuntu:15.10 /bin/bash
## 更新
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
# -m:提交的描述信息
# -a:指定镜像作者
# e218edb10161:容器ID
# runoob/ubuntu:v2:指定要创建的目标镜像名
构建对象
首先创建一个Dockerfile
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"
RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
然后使用Dockerfile,构建
runoob@runoob:~$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......
-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec
可以使用新的镜像创建容器
docker run -t -i runoob/centos:6.7  /bin/bash
设置镜像标签
docker tag 860c279d2fec runoob/centos:dev
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号