以下内容均为看官方文档(docs.docker.com)时做的笔记 docker version 查看版本 docker search 搜索镜像 docker run hello-world #hello-world是一个镜像,本地没有就自动从仓库下载,不指定tag则默认下载latest docker ps 只显示正在运行的container docker ps -a 显示所有container docker images 查看所有本地镜像 docker run -it centos /bin/bash #-i为interactive, -t为pseudo-tty docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done" #-d为使其以进程方式运行在后台,可能过docker ps 查看到其container id docker logs -f nostalgic_morse 显示容器的标准输出,-f类似于tail -f的使用 docker top nostalgic_morse 查看容器正在运行的进程 docker inspect nostalgic_morse 查看容器的详细信息 docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nostalgic_morse # -f参数指定只查看某一部分信息 docker stop 停止容器运行 docker start 启动容器 docker run -d -P training/webapp python app.py # -P为映射端口到主机,可通过docker ps -l查看,会看到类似:0.0.0.0:49155->5000/tcp,这里5000就是容器的端口( Flask),49155是主机端口。 docker run -d -p 80:5000 training/webapp python app.py #-p指定映射端口,80是主机的,5000是container的 docker commit -m "Added json gem" -a "Kate Smith" 0b2616b0e5a8 ouruser/sinatra:v2 #在退出窗口后打包更改过的容器为新的镜像,-m 后描述修改的内容,-a后写修改人 docker run -d -P --name web training/webapp python app.py #--name web 指定容器名为web docker exec -it [container-id] bash 进入一个正在运行的容器,启动新进程。 docker attach [container-id]进入一个正在运行的容器,使用之前的进程,离开用CTRL-p CTRL-q docker run -d -P --name web -v /webapp training/webapp python app.py #-v /webapp挂载数据卷,/webapp是容器里的目录而非主机,可通过docker inspect查看到 docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py #指定主机目录:/src/webapp,主机目录也可以是一个name,此时就会自动创建一个此名字的卷。 通过挂载卷可以实现主机和虚拟机、虚拟机之间共享文件。 docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py #默认为读写,通过:ro指定为只读 docker volume create -d flocker -o size=20GB my-named-volume 创建一个卷 docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash #挂载一个文件而非一个文件夹 docker save -o jump.tar jump # 导出jump 镜像 docker load -i jump.tar # 导入镜像 卷容器: docker create -v /dbdata --name dbstore training/postgres /bin/true #创建一个一卷容器 docker run -d --volumes-from dbstore --name db1 training/postgres #在另一个容器里挂载前面创建的卷容器,如果原镜像有/dbdata这个目录,则原目录会被隐藏。 可以使用多个--volumes-from来挂载多个 容器删除后,卷并不会删除,需要删除可用docker rm -v [卷名] docker volume ls -f dangling=true 容器数据迁移: docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata docker run -v /dbdata --name dbstore2 ubuntu /bin/bash docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1" docker run --rm -v /foo -v awesome:/bar busybox top #/foo为匿名卷,awesome:/bar为命名卷。当容器删除时,--rm -v /foo会删除/foo,但awesome:/bar不会被删除 制作镜像、上传、删除本地镜像等: mkdir mydockerbuild ;cd mydockerbuild vim Dockerfile FROM docker/whalesay:latest RUN apt-get -y update && apt-get install fortunes -y #centos也应该用apt-get CMD /usr/games/fortune -a | cowsay docker build -t docker-whale . 注册docker账号 ,比如注册的是xllc docker images docker tag 7d9495d03763 xllc/docker-whale:latest 划掉部分改成docker images命令查到的id docker login docker push xllc/docker-whale #上传镜像 $ docker rmi -f 7d9495d03763 #通过id删镜像 $ docker rmi -f docker-whale #通过镜像名删 docker run xllc/docker-whale Dockerfile的语法: 每天行都是这种格式INSTRUCTION statement ,其中INSTRUCTION 都大写 #开头为注释 FROM指定源镜像 MAINTAINER指定维护人 RUN 在镜像中执行命令 VOLUME 挂载数据卷,只能挂载容器卷,不能指定主机目录有任何疑问请点击留言: 留言板
本文发布于http://wiki.too2.net,转载请联系本人。