Docker 是一个开源项目最初是 DotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。Docker是一个轻量级、便携式与外界隔离的容器,也是一个可以在容器中很方便地构建、传输、运行应用的引擎。这里简单记录下一些Docker常用命令的使用。
Docker镜像加速器
Linux
1
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
[root@docker ~]# docker --helpUsage:docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ --help | -v | --version ]Aself-sufficient runtime for containers.Options: --config=~/.docker Location of client config files #客户端配置文件的位置 -D, --debug=false Enable debug mode #启用Debug调试模式 -H, --host=[] Daemon socket(s) to connect to #守护进程的套接字(Socket)连接 -h, --help=false Print usage #打印使用 -l, --log-level=info Set the logging level #设置日志级别 --tls=false Use TLS; implied by--tlsverify # --tlscacert=~/.docker/ca.pem Trust certs signed only by this CA #信任证书签名CA --tlscert=~/.docker/cert.pem Path to TLS certificate file #TLS证书文件路径 --tlskey=~/.docker/key.pem Path to TLS key file #TLS密钥文件路径 --tlsverify=false Use TLS and verify the remote #使用TLS验证远程 -v, --version=false Print version information and quit #打印版本信息并退出Commands: attach Attach to a running container #当前shell下attach连接指定运行镜像 build Build an image from a Dockerfile #通过Dockerfile定制镜像 commit Create a new image from a container's changes #提交当前容器为新的镜像 cp Copy files/folders from a container to a HOSTDIR or to STDOUT #从容器中拷贝指定文件或者目录到宿主机中 create Create a new container #创建一个新的容器,同run 但不启动容器 diff Inspect changes on a container's filesystem #查看docker容器变化 events Get real time events from the server#从docker服务获取容器实时事件 exec Run a command in a running container#在已存在的容器上运行命令 export Export a container's filesystem as a tar archive #导出容器的内容流作为一个tar归档文件(对应import) history Show the history of an image #展示一个镜像形成历史 images List images #列出系统当前镜像 import Import the contents from a tarball to create a filesystem image #从tar包中的内容创建一个新的文件系统映像(对应export) info Display system-wide information #显示系统相关信息 inspect Return low-level information on a container or image #查看容器详细信息 kill Kill a running container #kill指定docker容器 load Load an image from a tar archive or STDIN #从一个tar包中加载一个镜像(对应save) login Register or log in to a Docker registry#注册或者登陆一个docker源服务器 logout Log out from a Docker registry #从当前Docker registry退出 logs Fetch the logs of a container #输出当前容器日志信息 pause Pause all processes within a container#暂停容器 port List port mappings or a specific mapping for the CONTAINER #查看映射端口对应的容器内部源端口 ps List containers #列出容器列表 pull Pull an image or a repository from a registry #从docker镜像源服务器拉取指定镜像或者库镜像 push Push an image or a repository to a registry #推送指定镜像或者库镜像至docker源服务器 rename Rename a container #重命名容器 restart Restart a running container #重启运行的容器 rm Remove one or more containers #移除一个或者多个容器 rmi Remove one or more images #移除一个或多个镜像(无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或者-f强制删除) run Run a command in a new container #创建一个新的容器并运行一个命令 save Save an image(s) to a tar archive#保存一个镜像为一个tar包(对应load) search Search the Docker Hub for images #在dockerhub中搜索镜像 start Start one or more stopped containers#启动容器 stats Display a live stream of container(s) resource usage statistics #统计容器使用资源 stop Stop a running container #停止容器 tag Tag an image into a repository #给源中镜像打标签 top Display the running processes of a container #查看容器中运行的进程信息 unpause Unpause all processes within a container #取消暂停容器 version Show the Docker version information#查看容器版本号 wait Block until a container stops, then print its exit code #截取容器停止时的退出状态值Run 'docker COMMAND --help' for more information on a command. #运行docker命令在帮助可以获取更多信息
显示已有镜像
12345678
docker imagesordocker image ls显示:REPOSITORY TAG IMAGE ID CREATED SIZEubuntu latest a2a15febcdf3 3 weeks ago 64.2MBhello-world latest fce289e99eb9 8 months ago 1.84kB
# 交互式运行centos镜像docker run -it centos# 安装vimyum install vim -y# 退出centos镜像exit# 查看docker镜像运行记录root@Tony-PC:/home/tony# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd684e9735d15 centos "/bin/bash" 7 minutes ago Exited (0) 35 seconds ago loving_villani# 提交运行容器镜像为新的自定义镜像docker commit d68 centos-vim# 查看docker镜像root@Tony-PC:/home/tony# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcontos-vim latest e90556adf335 16 seconds ago 369MB# 运行镜像root@Tony-PC:/home/tony# docker run -it e90# 测试vim[root@743b1e0c3e11 /]# vim
外部访问容器
期望:一个外部能访问的flask程序
进入centos镜像
1
docker run -it centos
安装python工具包
1
yum install python-setuptools
安装flask
1
[root@47830fd38e99 /]# easy_install flask
创建flask文件
1234
[root@47830fd38e99 /]# cd /home[root@47830fd38e99 home]# ls[root@47830fd38e99 home]# touch flask-web.py[root@47830fd38e99 home]# vim flask-web.py
写入代码
12345678
from flask import Flaskapp = Flask(__name__)@app.route('/')def index(): return '<h1>Im flask, im from Centos Docker</h1>'if __name__=='__main__': app.run(host='0.0.0.0', port=9000)
退出镜像
1
[root@47830fd38e99 home]# exit
查看镜像运行记录
1234
root@Tony-PC:/home/tony# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES47830fd38e99 centos "/bin/bash" 22 minutes ago Exited (0) 3 seconds ago jolly_proskuriakova
root@Tony-PC:/home/tony# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEflask-contos latest 9d07a47feca8 8 seconds ago 374MB
运行镜像
123
root@Tony-PC:/home/tony# docker run -d -p 7000:9000 9d0 python /home/flask-web.pyf53e673da36d942becdc8bf9199dcbe608569511f102904e084d5b92c4d5aaab
查看当前正在运行的镜像和端口映射
123456
root@Tony-PC:/home/tony# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESf53e673da36d 9d0 "python /home/flask-…" 6 seconds ago Up 5 seconds 0.0.0.0:7000->9000/tcp gracious_euclidroot@Tony-PC:/home/tony# docker port f539000/tcp -> 0.0.0.0:7000
root@Tony-PC:/home/tony# docker loginLogin with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.Username: 646547989Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
修改镜像名
1234
# 提交格式docker push 注册用户名/镜像名 # 修改提交镜像格式root@Tony-PC:/home/tony# docker tag flask-contos 646547989/flask-centos
查看修改后的镜像
12345
root@Tony-PC:/home/tony# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE646547989/flask-centos latest 9d07a47feca8 3 days ago 374MBflask-contos latest 9d07a47feca8 3 days ago 374MB
推送镜像
123456
root@Tony-PC:/home/tony# docker push 646547989/flask-centosThe push refers to repository [docker.io/646547989/flask-centos]630f3a7bfad7: Pushed 877b494a9f30: Mounted from library/centos latest: digest: sha256:c81d9d2d6d595c912c5ed6215e1c2e7da14518a141ae19f226eaaa146bd68d94 size: 741
查看推送的镜像
常见问题
某些镜像无法删除
有些镜像删除的时候会提示类似:“image has dependent child images”,大概意思是镜像有依赖,即有其他 image FROM 了这个 image,可以使用下面的命令列出所有在指定 image 之后创建的 image 的父 image