Docker 使用文档
注:本文档不是教程,而是针对记录docker的基础操作。方便笔者以后使用(笔者记性不好,记不住命令)。
本机:ubuntu16.04.2(已配好docker环境)
容器使用:
新建容器:sudo docker run -i -t ubuntu:16.04 /bin/bash
后台运行容器:sudo docker run -d + ‘启动的项目’
查看正在运行的容器:docker ps
停止容器运行:exit /sudo stop [ID或者名字]
参数:-P :将容器内部使用的网络端口映射到我们使用的主机上。
可以指定端口:eg: -p 5000:5000(这里以flask为例)
注:这里的大小写P有区别,不能通用
-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口。
查看输出:sudo docker logs [ID或者名字] 可以查看容器内部的标准输出。
参数:-f 能看到后续输出
看到容器内运行的进程:sudo docker top [ID或者名字]
看到docker底层信息:sudo docker inspect [ID或者名字]
重启容器:sudo docker start [ID或者名字]
重启正在启动的容器:docker start [ID或者名字]
删除容器:sudo docker rm [ID或者名字]
注:删除容器时,容器必须处于关闭状态
查看最后一次创建的容器:sudo docker ps -l
查看本机上所有已经创建的容器:sudo docker ps -a
镜像使用:
查看本机上的所有镜像:sudo docker images
现在我们用ubuntu16.04(笔者偏爱这一系统)这一镜像来运行容器
sudo docker run -t -i ubuntu:16.04 /bin/bash
注:如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。
注:如果你使用的是本机不存在的镜像,那么在开启容器前,docker会自动帮您下载该镜像。
当然,你也可以事先下载这一镜像:
Eg:sudo docker pull ubuntu:16.04
我们可以用:sudo search + 镜像名 来在docker hub上搜索适合的镜像
镜像更新:
当你下载的镜像不满足需求时,我们可以对该镜像进行更新:
1.首先创建一个容器:sudo docker run -t -i ubuntu:16.04 /bin/bash
2.运行命令:apt-get update
3.docker ps 查看该容器的ID
4.退出该容器:exit
5.创建新镜像:sudo docker commit -m=”has update” -a=”lgw” e218edb10161
注:m:提交的描述信息
-a:指定镜像作者
e218edb10161:容器ID
lgw/newubuntu:new:指定要创建的目标镜像名
6.你现在可以用sudo docker images 看到你的新镜像了
构建镜像:
有时候,我们需要一个自定义的镜像:
我们需要一个配置文件来告诉docker,我们需要在一个空的镜像上,执行哪些操作:
这个配置文件的格式应该是这个样子的(下面只是举个例子,具体要执行什么操作,还得看什么需求),如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:来自哪个基础镜像
MAINTAINER:创建者
RUN:执行的命令
EXPOSE:开一个端口
CMD:容器启动时启动的服务,一个doceckerfile只能有一个CMD,如有多条,只执行最后一条
创建你自定义的镜像:
sudo docker build -t lgw/centos:6.7 .
-t:后接创建镜像的名字
. :dockfile所在目录,或是它的跟目录
为你的镜像加上标签:(就拿刚才的new/centos举例)
sudo docker tag [ID] new/centos:dev
容器连接:
之前我们的sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
是可以用本机的5000端口,去访问容器的5000端口(左边本机,右边容器)
我们开的都是tcp端口,如果你想开一个udp端口
sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
你也可以使用
docker port [ID或者名字] 端口号
来查看该容器那个端口映射的我们本机的哪个端口
参数:创建容器时 –name [容器名] 可以为容器命名