Docker命令,docker
Docker命令,docker
docker run
$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。
正确的命令:
$ docker run learn/tutorial echo "hello word"
- -d:containter将会运行在后台模式
- –name:给container命名,对于一个container来说有个name会非常方便,因为你可以当你需要link其它容器时或者其他类似需要区分其它容器时,使用容器名称会简化操作
- -P:container会开放部分端口到host,只要对方可以连接到host,就可以连接到container内部。当使用-P时,docker会查找一个未被占用的端口绑定到container。你可以使用docker port来查找这个随机绑定端口
docker run --name mongo_001 -d -P mongo
- -p:指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。支持的格式有 ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort
映射所有接口地址
使用 hostPort:containerPort 格式本地的 5000 端口映射到容器的 5000 端口,可以执行
$ sudo docker run -d -p 5000:5000 training/webapp python app.py
此时默认会绑定本地所有接口上的所有地址。
映射到指定地址的指定端口
可以使用 ip:hostPort:containerPort 格式指定映射使用一个特定地址,比如 localhost 地址
127.0.0.1$ sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
映射到指定地址的任意端口
使用 ip::containerPort 绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口。
$ sudo docker run -d -p 127.0.0.1::5000 training/webapp python app.py
还可以使用 udp 标记来指定 udp 端口
$ sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
查看映射端口配置
使用 docker port 来查看当前映射的端口配置,也可以查看到绑定的地址
$ docker port nostalgic_morse 5000
127.0.0.1:49155.
Dockerfile语法
VOLUME [“mountpoint”] 将本地文件夹或者其他container的文件夹挂载到container中
# Define mountable directories.
VOLUME ["/data/db"]
WORKDIR /path/to/workdir 切换目录用,可以多次切换(相当于cd命令)
# Define working directory.
WORKDIR /data
CMD [“executable”,”param1”,”param2”] container启动时执行的命令,但是一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD
# Define default command.
CMD ["mongod"]
EXPOSE port 把这个端口暴露在外,这样容器外可以看到这个端口并与其通信
# Expose ports.
# - 27017: process
# - 28017: http
EXPOSE 27017
EXPOSE 28017
ENV key value 设置环境变量
ENV APP_NAME app.js
示例(构建mongodb镜像的Dockerfile)
#
# MongoDB Dockerfile
#
# Pull base image
FROM ubuntu:latest
MAINTAINER LIU Qiu Shan <qsliubj@cn.ibm.com>
# Install MongoDB
# The real logic
# Add 10gen official apt source to the sources list
RUN \
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 && \
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' > /etc/apt/sources.list.d/mongodb.list && \
apt-get update && \
apt-get install -y mongodb-org && \
rm -rf /var/lib/apt/lists/*
# Define mountable directories
VOLUME ["/data/db"]
# Define working directory
WORKDIR /data
# Define default mongodb command
CMD ["mongod"]
# Expose the process port of mongodb
EXPOSE 27017
# Expose the http port of mongodb
#EXPOSE 28017
docker build
docker build -t="dockerfile/mongodb" .
在当前目录下有名为Dockerfile的文件,执行上述命令,构建名为dockerfile/mongodb的镜像。
镜像
查看所有镜像 $ docker images
删除指定镜像 $ docker rmi image_name
深入
”Docker有两方面的技术非常重要,第一是Linux容器方面的技术,第二是Docker镜像的技术。从技术本身来讲,两者的可复制性很强,不存在绝对的技术难点,然而Docker Hub由于存在大量的数据的原因,导致Docker Hub的可复制性几乎不存在,这需要一个生态的营造。“
Dockerfile 是软件的原材料,Docker 镜像是软件的交付品,而 Docker 容器则可以认为是软件的运行态。
Dockerfile中的四条命令 FROM, ADD, VOLUME, CMD, 这四条命令可以构建出一个镜像来,分别对应四个镜像层,见下图。
下图的出处是http://www.csdn.net/article/2015-08-21/2825511
版权声明:本文为博主原创文章,未经博主允许不得转载。
评论暂时关闭