Docker 常用命令

Docker 容器使用

runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world
各个参数解析:
docker: Docker 的二进制执行文件。
run:与前面的 docker 组合来运行一个容器。
ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo "Hello world": 在启动的容器里执行的命令

运行交互式的容器

我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力
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
查看容器内的标准输出
runoob@runoob:~$ docker ps

运行一个python web应用

runoob@runoob:~# docker run -d -P training/webapp python app.py
参数说明:
-d:让容器在后台运行
-P:将容器内部使用的端口映射到我们使用的主机上
-p 8286:8086:将容器内8086 映射到主机上的8286

查看web应用容器

runoob@runoob:~$ docker ps

网络端口的快捷方式(使用容器的名字或者ID )

runoob@runoob:~$ docker port 7a38a1ad55c6
5000/tcp -> 0.0.0.0:5000

runoob@runoob:~$ docker port determined_swanson
5000/tcp -> 0.0.0.0:5000

查看WEB应用程序日志

runoob@runoob:~$ docker logs -f 7a38a1ad55c6

查看WEB应用程序容器的进程

我们还可以使用 docker top 来查看容器内部运行的进程
runoob@runoob:~$ docker top determined_swanson

检查WEB应用程序

使用 docker inspect 来查看Docker的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
runoob@runoob:~$ docker inspect determined_swanson

停止WEB应用容器

runoob@runoob:~$ docker stop determined_swanson   
determined_swanson

重启WEB应用容器

runoob@runoob:~$ docker start determined_swanson
determined_swanson
docker ps -l 查询最后一次创建的容器:

移除WEB应用容器

我们可以使用 docker rm 命令来删除不需要的容器
runoob@runoob:~$ docker rm determined_swanson  
determined_swanson
删除容器时,容器必须是停止状态,否则会报如下错误`

Docker镜像操作

列出本地主机上的镜像
runoob@runoob:~$ docker images 
各个选型的说明
REPOSTITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

指定镜像的版本标签,不指定的话Docker默认使用最新的镜像
runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash

获取一个新的镜像
Crunoob@runoob:~$ docker pull ubuntu:13.10

查找镜像
runoob@runoob:~$  docker search httpd
选型说明:
NAME:镜像仓库源的名称
DESCRIPTION:镜像的描述
OFFICIAL:是否docker官方发布

拖取镜像
runoob@runoob:~$ docker pull httpd

创建镜像

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

  • 从已经创建的容器中更新镜像,并且提交这个镜像
  • 使用 Dockerfile 指令来创建一个新的镜像
更新镜像之前,我们需要使用镜像来创建一个容器
runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/# 

在运行的容器内使用 apt-get update 命令进行更新。
在完成操作之后,输入 exit命令来退出这个容器。
此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。
runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
各个参数说明:
-m:提交的描述信息
-a:指定镜像作者
e218edb10161:容器ID
runoob/ubuntu:v2:指定要创建的目标镜像名
我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像
runoob@runoob:~$ 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


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 "[email protected]"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
参数说明:
-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

我们可以使用 docker tag 命令,为镜像添加一个新的标签。
runoob@runoob:~$ docker tag 860c279d2fec runoob/centos:dev
......
我们可以指定容器绑定的网络地址,比如绑定127.0.0.1
runoob@runoob:~$ docker run -d -p 127.0.0.1:5001:5002 training/webapp python app.py
上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp
runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
docker port 命令可以让我们快捷地查看端口的绑定情况
runoob@runoob:~$ docker port adoring_stonebraker 5002
127.0.0.1:5001

容器命名

runoob@runoob:~$  docker run -d -P --name runoob training/webapp python app.py
43780a6eabaaf14e590b6e849235c75f3012995403f97749775e38436db9a441

高级用法

runoob@runoob:~/python$ docker run  -v $PWD/myapp:/usr/src/myapp  -w /usr/src/myapp python:3.5 python helloworld.py
命令说明:
-v $PWD/myapp:/usr/src/myapp :将主机中当前目录下的myapp挂载到容器的/usr/src/myapp
-w /usr/src/myapp :指定容器的/usr/src/myapp目录为工作目录
python helloworld.py :使用容器的python命令来执行工作目录中的helloworld.py文件

你可能感兴趣的:(Docker 常用命令)