最近有些地方需要Docker的使用,为了总结近期经验并且重拾Docker相关技术以及GDG Docker第一次活动记录,对一些操作进行重新总结。
Docker常用操作
所有命令均省略
sudo
查看所有镜像:
docker images
查看所有容器:
docker ps -a
查看守护容器日志:
docker logs 容器名或容器id
杀死所有正在运行的容器:
docker kill $(docker ps -a -q)
删除所有已经停止的容器:
docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像:
docker rmi $(docker images -q -f dangling=true)
删除所有镜像:
docker rmi $(docker images -q)
查找你需要的Docker镜像列表:
docker search mysql
下载镜像:
docker pull [REGISTRYHOST/][USERNAME/]NAME[:TAG]
容器转成镜像:
sudo docker commit <CONTAINER ID> imagename01
容器转成文件:
sudo docker export <CONTAINER ID> > /home/export.tar
镜像转成文件:
sudo docker save imagename01 > /home/save.tar
注:一般情况下,save.tar比export.tar大一点点而已,export比较小,因为它丢失了历史和数据元metadata。
文件转成镜像:
cat /home/export.tar | sudo docker import - imagename02:latest
save.tar文件转成镜像:
docker load < /home/save.tar
查看转成的镜像:
sudo docker images
GDG Docker第一次活动记录
查看Docker 版本
当Docker 安装完成后,可以用下面的命令来查看
docker -–version #版本信息
docker info #配置信息
docker -–help #帮助信息
运行你的第一个docker 镜像
docker run hello-world
Docker 命令行工具介绍
Docker CLI 指令分为两类,一类是 Management Commands,一类是镜像与容器Commands。
你可以通过docker –help 进行查看。
Docker 的命令格式为:
docker [OPTIONS] COMMAND
这里我们选取常用的几个命令进行示例:
docker pull
: 从镜像仓库中拉取镜像
docker pull Ubuntu
docker run :
docker run –it ubuntu:latest
- -i : interactive mode
- -t: 分配tty
Docker-CLI 与Linux 语法具有相似性,例如:
docker image ls
docker container ls
docker container ps
如果你有Linux 基础,那么相信对于Docker-CLI 上手还是比较容易的。
有了上面的基础,那么让我们来进入一个实战吧。
实战-1:2048 Web
docker run -d -P daocloud.io/daocloud/dao-2048
Tip: -d 表示容器启动后在后台运行
用docker ps
查看容器运行状态如图:
看到端口映射关系 0.0.0.0:32768->80
。指宿主机的 32768
端口映射到容器的 80
端口,用浏览器打开localhost:32768
Dockerfile 简介
Docker 可以从Dockerfile 文件中构建镜像,Dockerfile 语法请参考:
https://docs.docker.com/engine/reference/builder/
只需要几个基本的语法就能构建出我们需要的容器。
FROM
: 这会从 Docker Hub 中拉取镜像,目的镜像基于所拉取的镜像进行搭建
WORKDIR
: RUN
, CMD
, ENTRYPOINT
, COPY
, ADD
以此为工作路径
COPY
:拷贝文件或文件夹到指定路径
RUN
:镜像的最上层执行命令,执行后的结果会被提交,作为后续操作基于的镜像。
EXPOSE
:暴露端口号
ENV
:设置环境变量
CMD["executable","param1","param2"]
:一个Dockerfile 应该只有一处 CMD 命令,如果有多处,则最后一处有效。
实战 -2:搭建Python Web
首先准备一个Dockerfile 文件与一个app.py 文件
分别执行:
docker build --tag=friendlyhello . #build
docker run -p 4000:80 friendlyhello #run
curl http://localhost:4000 #test
docker container stop XXX #stop
中间输出结果:
Docker 生成container时会生成一个唯一的container-id,在上图中stop 命令用到了container-id。当然,你可以使用docker tag 命令对container 进行重命名。
Tip:
-p 4000:80
: 指的是从宿主机端口4000 映射到容器端口80
现在打开浏览器访问localhost:4000
: