Docker 命令 帮助命令
命令
说明
docker version
显示 Docker 版本信息
docker info
显示 Docker 系统信息
docker 命令 --help
查看 Docker 命令帮助
镜像命令 docker images - 查看本地的所有镜像opens@jiang ~ % docker images REPOSITORY TAG IMAGE ID CREATED SIZE alpine/git latest a939554ad0d0 6 weeks ago 25.1MB
解释:
字段
说明
REPOSITORY
镜像的仓库源
TAG
镜像的标签
IMAGE ID
镜像的 ID
CREATED
镜像的创建时间
SIZE
镜像的大小
可选项:
-a, --all:列出所有镜像
-q, --quiet:只显示镜像 ID
docker serach - 搜索镜像opens@jiang ~ % docker search ubuntu opens@jiang ~ % docker search ubuntu --filter=STARS=3000
docker pull - 下载镜像格式:docker pull 镜像名[:tag]
opens@jiang ~ % docker pull mysql Using default tag: latest latest: Pulling from library/mysql a076a628af6f: Pull complete f6c208f3f991: Pull complete 88a9455a9165: Pull complete 406c9b8427c6: Pull complete 7c88599c0b25: Pull complete 25b5c6debdaf: Pull complete 43a5816f1617: Pull complete 1a8c919e89bf: Pull complete 9f3cf4bd1a07: Pull complete 80539cea118d: Pull complete 201b3cad54ce: Pull complete 944ba37e1c06: Pull complete Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest docker pull docker.io/library/mysql:latest
docker rmi - 删除镜像docker rmi -f 镜像id docker rmi -f 镜像id 镜像id docker rmi -f $(docker images -aq)
容器命令 - 有了镜像才可以创建容器 docker run - 新建容器并启动格式:docker run [可选参数] image 可选参数:
参数
说明
--name="Name"
容器名字
-d
后台方式运行
-it
交互方式运行
-p
指定容器的端口
示例:
交互方式opens@jiang ~ % docker run -it centos [root@6af5c17049ad /] bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@6af5c17049ad /] exit
后台模式opens@jiang ~ % docker run -d --name centos1 -p 1234:80 centos -d --name centos1 -p 1234:80
docker ps - 列出所有正在运行的容器docker ps docker ps -a docker ps -n=2
退出容器
exit:停止并退出容器
Ctrl + P + Q:退出但不停止容器
dokcer rm - 删除容器docker rm 容器id docker rm -f 容器id docker rm -f $(docker ps -aq)
启动和停止容器 docker start 容器id docker restart 容器id docker stop 容器id docker kill 容器id
其他常用命令 docker run -d 镜像名 - 后台创建并启动容器注意:发现启动后自动停止了,这是因为容器想要在后台运行,就必须给他一个前台程序
opens@jiang ~ % docker run -d centos c4bf43350c76671700936a172587ad636e8efdb326f43ef587bf474346a000c7 opens@jiang ~ % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES opens@jiang ~ %
docker logs - 查看日志docker logs -tf --tail 10 容器id
docker top - 查看容器进程
docker inspect - 查看容器元数据
docker exec/attach - 进入正在运行的容器docker exec -it 容器id /bin/bash docker attach 容器id
docker cp - 从容器拷贝文件到主机docker cp 容器id :容器内路径 目的主机路径
docker commit - 生成新镜像格式:docker commit -m="注释" -a="作者" 容器id 生成的新镜像名:TAG
opens@jiang ~ % docker commit -m="add test file" -a="open" 85dd787c465e testimage:1.0 sha256:3a7bec701e93145d2378e278e605e9c1013120ba17bd404bae47a2a030cb1fc0 opens@jiang ~ % docker images REPOSITORY TAG IMAGE ID CREATED SIZE testimage 1.0 3a7bec701e93 7 seconds ago 72.9MB ubuntu latest f643c72bc252 4 months ago 72.9MB
容器数据卷 为啥需要容器数据卷? 容器是数据隔离的,容器数据卷可以实现主机和容器之间在指定的文件夹里数据同步。删除容器并不会删除主机里的数据
如何使用容器数据卷? 命令行:
docker run -it-v 主机目录:容器目录 镜像 控制台 opens@jiang dockermount % docker run -it-v ~/dockermount:/home ubuntu
Dockerfile: Dockerfile是用来构建docker镜像的脚本文件。镜像是一层一层的,脚本每一行对应一层。
FROM ubuntu VOLUME ["volume01" ,"volume02" ] CMD echo "---end---" CMD /bin/bash docker build -f Dckerfile路径 -t 生成镜像名:tag
数据卷容器 docker run -it --name name02 --volumes-from name01 镜像名
使用 –volumes-from 实现多个容器数据同步
删除父容器不会删除共享数据
Dockerfile dockerfile是用来构建docker镜像的命令参数脚本文件,构建步骤如下:
新建 Dockerfile 文件
docker build 构建镜像
docker run 运行镜像
docker push 发布镜像
Dockerfile指令
指令
说明
FROM
基础镜像
MAINTAINER
镜像作者(姓名+邮箱)
RUN
镜像构建时运行的命令
ADD
添加内容(会自动解压)
WORKDIR
镜像的工作目录
VOLUME
挂载的目录
EXPOSE
暴露的端口
CMD
容器启动时运行的命令(只有最后一个生效)
ENTRYPOINT
容器启动时运行的命令(可追加)
ONBUILD
当被继承时运行的指令
ENV
设置环境变量
示例 - 构建一个镜像
准备构建镜像时需要的文件,所有的文件都放在一个文件夹下,接下来的所有操作也都是在这个文件夹下opens@jiang router % ls msdk-4.4.7-mips-EL-3.10-u0.9.33-m32t-140827.tar.gz
编写Dockerfile文件,官方指定文件名,如果使用该名,在构建镜像的时候不需要指定Dockerfile文件,会自动寻找该文件。FROM ubuntu:16.04 MAINTAINER opensjiang<toopens@163.com> ADD msdk-4.4.7-mips-EL-3.10-u0.9.33-m32t-140827.tar.gz /usr RUN apt-get update \ && apt-get install -y vim \ && apt-get install -y lsb-core \ && apt-get install -y lib3221 lib32ncurses5 ENV MYPATH /usr/home WORKDIR $MYPATH ENV MIPS_JOME /usr/msdk-4.4.7-mips-EL-3.10-u0.9.33-m32t-140827 ENV PATH $PATH :$MIPS_JOME /bin EXPOSE 8080 CMD [ "/bin/bash" ]
建镜像文件opens@jiang router % docker build -t router:compile . [+] Building 186.7s (9/9) FINISHE
由于我用的Dockfile所以不需要指定目录,注意build命令最后面有一个”.”
查看构建的镜像opens@jiang router % docker images REPOSITORY TAG IMAGE ID CREATED SIZE router compile a90555201290 3 minutes ago 820MB
用自己的镜像创建一个容器并挂载volumeopens@jiang router % docker run -it--name nickname -v /Volumes/OpenWrt:/home 188ea4832445