docker的使用
docker利用容器来运行应用:docker容器是由docker镜像创建的运行实例。docker容器类似虚拟机,可以执行包含启动,停止,删除等。每个容器间是相互隔离的。容器中会运行特定的运用,包含特定应用的代码及所需的依赖文件。可以把容器看作一个简易版的linux环境(包含root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。
容器:运行程序
镜像:安装程序
仓库:存储镜像
1. 在centos上使用docker
yum install -y docker service docker start /stop/restart
sudo docker run ubuntu:15.10 /bin/echo "helloworld"
- docker: Docker 的二进制执行文件。
- run:与前面的 docker 组合来运行一个容器。
- ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
- /bin/echo "Hello world": 在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
docker run -i -t ubuntu:15.10 /bin/bash
- -t:在新容器内指定一个伪终端或终端。
- -i:允许你对容器内的标准输入 (STDIN) 进行交互。
进入 一个ubuntu15.10的容器 exit/ctrl+d: 退出
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
长字符串是容器ID
docker ps
查看容器是否运行
CONTAINER ID:容器ID
NAMES:自动分配的容器名称
在容器内使用docker logs命令,查看容器内的标准输出
docker logs 13972412dbdf 或 docker logs 对应的名字
停止:
docker stop 13972412dbdf 或 docker stop 对应的名字
docker search java docker pull java //搜索对应的镜像,然后下载
2. 运行web应用
# docker run -d -P training/webapp python app.py
#docker ps
输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5aabc457784 training/webapp "python app.py" 12 seconds ago Up 11 seconds 0.0.0.0:32768->5000/tcp agitated_brown 13972412dbdf ubuntu:15.10 "/bin/sh -c 'while t…" 16 minutes ago Up 16 minutes ........
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上。
这时我们可以通过浏览器访问WEB应用(使用本地主机IP)
我们也可以通过 -p 参数来设置不一样的端口:
docker run -d -p 5000:5000 training/webapp python app.py
查看端口映射情况:
docker port 1b4d598106c1 或 docker port 对应名字
其他常用命令:
docker top id/name:查看容器内运行的进程信息
docker inspect id/name: 来查看 Docker 的底层信息。它返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
docker start/stop/rm id/name:运行、停止、删除镜像
docker images:查看本地镜像 REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小
docker pull ubuntu:13.10 获取新镜像
docker tag 860c279d2fec runoob/centos:dev //打标签
3. 提交容器副本
ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
各个参数说明:
- -m:提交的描述信息
- -a:指定镜像作者
- e218edb10161:容器ID
- runoob/ubuntu:v2:指定要创建的目标镜像名
docker images
docker run -t -i fish/ubuntu:v2 /bin/bash
4 构造dockerfile,构建镜像:
FROM centos:6.7
MAINTAINER Fisher "[email protected]"
RUN /bin/echo 'root:123456' |chpasswd
&& useradd runoob \
&& /bin/echo 'runoob:123456' |chpasswd \
&& /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local \
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
构建镜像:
docker build -t runoob/centos:6.7 /home/fish/
构建成功后,查看 docker images 再运行 生成容器