docker常用指令

1 - docker run

sudo docker run -i -t --name dck_v1 ubuntu /bin/bash

sudo docker pull training/webapp
sudo docker run -d -P training/webapp python app.py
  • 标志
    • -i标志保证容器中STDIN是开启的,
    • -t标志告诉Docker为创建的容器分配一个伪tty终端。这样,新创建的容器才能提供一个交互式shell。
    • -d让容器在后台运行
    • -P将容器内部使用的网络端口映射到我们使用的主机上
    • --name重命名
  • ubuntu是告诉Docker基于什么镜像来创建容器,unbuntu镜像是一个基础镜像,保存在Docker Hub Registry上
  • 当容器创建完毕之后,Docker就会执行容器中的/bin/bash命令

python web demo

2 - docker commit

docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
  • -m:提交的描述信息
  • -a:指定镜像作者
  • e218edb10161:容器ID
  • runoob/ubuntu:v2:指定要创建的目标镜像名

3 - docker build

cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "[email protected]"

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 在镜像内执行命令,安装了什么

构建

docker build -t runoob/centos:6.7 .
  • -t:指定要创建的目标镜像名
  • .:Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

4 - docker 容器连接

  • -P :是容器内部端口随机映射到主机的高端口。
  • -p : 是容器内部端口绑定到指定的主机端口。

指令

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
docker run -d -P training/webapp python app.py
docker ps

5 - Dockerfile

  • FROM 指定基础镜像
  • RUN 执行命令
RUN apt-get update
RUN apt-get install -y gcc libc6-dev make
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz"
RUN mkdir -p /usr/src/redis
RUN tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1
RUN make -C /usr/src/redis
RUN make -C /usr/src/redis install

Dockerfile 中每一个指令都会建立一层,RUN 也不例外。每一个 RUN 的行为,就和刚才我们手工建立镜像的过程一样:新建立一层,在其上执行这些命令,执行结束后,commit 这一层的修改,构成新的镜像。

RUN buildDeps='gcc libc6-dev make' \
    && apt-get update \
    && apt-get install -y $buildDeps \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \
    && mkdir -p /usr/src/redis \
    && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
    && make -C /usr/src/redis \
    && make -C /usr/src/redis install \
    && rm -rf /var/lib/apt/lists/* \
    && rm redis.tar.gz \
    && rm -r /usr/src/redis \
    && apt-get purge -y --auto-remove $buildDeps

如果注意,会看到 docker build 命令最后有一个 .。. 表示当前目录,而 Dockerfile 就在当前目录,因此不少初学者以为这个路径是在指定 Dockerfile 所在路径,这么理解其实是不准确的。如果对应上面的命令格式,你可能会发现,这是在指定上下文路径。

  • COPY 复制文件
    • COPY <源路径>... <目标路径>
  • ADD 更高级的复制文件
  • CMD 容器启动命令
  • ENTRYPOINT 入口点
  • ENV 设置环境变量
  • ARG 构建参数
  • VOLUME 定义匿名卷
  • EXPOSE 声明端口
  • WORKDIR 指定工作目录
  • USER 指定当前用户
  • HEALTHCHECK 健康检查
  • ONBUILD 为他人做嫁衣裳

Docker常用命令

你可能感兴趣的:(docker常用指令)