工作中docker常用命令-方便回忆
背景
docker适配的时候命令总是记得很熟,当版本结束了docker命令忘的差不多,这次记录一下
docker 基本操作
获取镜像
docker pull ubuntu
列出镜像列表
docker images
删除镜像
docker rmi
运行ubuntu镜像
docker run ubuntu:15.10 /bin/echo "Hello world"
docker run -it ubuntu /bin/bash
- docker: Docker 的二进制执行文件。
- run: 与前面的 docker 组合来运行一个容器。
- ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
- /bin/echo "Hello world": 在启动的容器里执行的命令
提交容器副本
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
各个参数说明:
- -m: 提交的描述信息
- -a: 指定镜像作者
- e218edb10161:容器 ID
- runoob/ubuntu:v2: 指定要创建的目标镜像名
打包镜像
docker save -o mytest.tar mytest:v1
运行tar包
docker load --input mytest.tar
docker run -i -t -v -p
我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:
docker run -i -t ubuntu:15.10 /bin/bash
- -t: 在新容器内指定一个伪终端或终端。
- -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
- -v:给容器挂载存储卷,挂载到容器的某个目录 顺序:主机:容器
- -p:端口映射
- --privileged=true 指定容器是否为特权容器。比如systemctl命令
- --restart="no" 指定容器停止后的重启策略:
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
docker run -itd -v /home/hyzhou/docker(本地目录):/data(容器目录) ubuntu:14.04 /bin/bash
后台运行ubuntu
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
docker run -itd --name ubuntu-test ubuntu /bin/bash
docker logs
在宿主主机内使用 docker logs 命令,查看容器内的标准输出:
停止容器
docker stop 容器id
查看容器列表
docker ps -a
进入容器
docker exec -it nginx /bin/bash
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
- docker attach
- docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。
导出和导入容器
docker export 1e560fca3906 > ubuntu.tar
可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
docker import - new_ubuntu < ubuntu.tar
容器端口映射
docker run -d -P training/webapp python app.py
- -P:将容器内部使用的网络端口随机映射到我们使用的主机上。
我们也可以通过 -p 参数来设置不一样的端口:
docker run -d -p 5000:5000 training/webapp python app.py
docker拷贝
docker cp nginx:/www /tmp/
#将nginx容器的/www 拷贝到本地/tmp下
创建容器时忘了添加参数 --restart=always 当 Docker 重启时容器未能自动启动
docker container update --restart=always 容器名字
在容器外执行命令
docker exec -it $DOCKER_ID /bin/bash -c 'cd /packages/detectron && python tools/train.py'
获取所有的容器id(仅显示id)
docker container ls -q