Docker常用命令
Docker
用制定环境运行命令
docker run ubuntu:15.10 /bin/echo "Hello world"
#docker: Docker 的二进制执行文件。
#run: 与前面的 docker 组合来运行一个容器。
#ubuntu:15.10: 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
#/bin/echo "Hello world": 在启动的容器里执行的命令。
交互式运行容器
# 进入ubuntu:15.10环境
docker run -i -t ubuntu:15.10 /bin/bash
#-t: 在新容器内指定一个伪终端或终端。
#-i: 允许你对容器内的标准输入 (STDIN) 进行交互。
#退出
exit
后台运行容器
# 后台运行 -d参数代表后台运行detach
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
detach
# 查看Docker容器进程
docker ps
# 查看Docker日志
docker logs CONTAINER_ID
# 关闭Docker容器
docker stop CONTAINER_ID
# 查看所有容器(包括未启动的)
docker ps -a
# 启动关闭的Docker容器
docker restart CONTAINER_ID
Docker信息
查看Docker版本
#只显示Docker版本
docker -v
#显示Docker详细版本信息
docker version
查看Docker信息
显示Docker系统信息,包括镜像数和容器数。
#查看docker信息
docker info
Docker操作
镜像操作
docker search image_name //查找镜像文件
docker pull image_name //下载镜像文件,REPOSITORY:TAG拉取不同版本的镜像
docker images //查看已下载镜像文件
docker rmi image_ID //根据镜像文件id删除某个镜像文件
docker run --name container_name -d img_name //根据img_name创建并运行一个名为container_name的容器
创建镜像
1、从已经创建的容器中更新镜像,并且提交这个镜像.
#创建容器副本 -m: 描述信息 -a: 镜像作者
docker commit -m="描述信息" -a="作者" CONTAINER_ID autumn/ubuntu:v2
#查看新建的镜像,显示REPOSITORY: autumn/ubuntu,TAG: v2
docker images
#为镜像添加一个新的标签
docker tag CONTAINER_ID autumn/centos:dev
#运行自定义的镜像
docker run -t -i autumn/ubuntu:v2 /bin/bash
2、使用 Dockerfile 指令来创建一个新的镜像.
cat Dockerfile
#FROM,指定使用哪个镜像源
#RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
#然后通过 docker build 命令来使用Dockerfile文件,构建一个镜像。
#使用Dockerfile文件新建镜像
docker build -t 镜像名:TAG DockerFile_PATH
容器操作
创建容器
#拉取ubuntu 镜像
docker pull ubuntu
#使用 ubuntu 镜像启动一个容器
#-i: 交互式操作。
#-t: 终端。
#-P :是容器内部端口随机映射到主机的端口。
#-p : 是容器内部端口绑定到指定的主机端口。
#--rm:容器退出时自动清理容器内部的文件系统。
#-h HOSTNAME:设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
#--dns=IP_ADDRESS: 添加DNS服务器到容器的/etc/resolv.conf中
#--dns-search=DOMAIN: 设定容器的搜索域
#ubuntu: ubuntu 镜像。
#/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
docker run -it ubuntu /bin/bash
#后台运行容器-d
docker run -itd --name ubuntu-test ubuntu /bin/bash
#加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec
#查看容器内部运行的进程
docker top CONTAINER_ID
#查看端口
docker port CONTAINER_ID
#-f让docker logs像使用tail -f一样来输出容器内部的标准输出
docker logs -f CONTAINER_ID
#查看 Docker 的底层信息
docker inspect CONTAINER_ID
#删除容器
docker rm -f <容器 ID>
容器网络
#新建网络
#-d:参数指定 Docker 网络类型,有 bridge、overlay
docker network create -d bridge NET_NAME
#让多个容器使用指定网络连接,这时容器彼此相通
docker run -itd --name CONTAINER_NAME1 --network NET_NAME ubuntu /bin/bash
docker run -itd --name CONTAINER_NAME2 --network NET_NAME ubuntu /bin/bash
启动关闭容器
docker start <容器 ID>
docker restart <容器 ID>
docker stop <容器 ID>
进入容器
docker attach <容器 ID>
docker exec -it <容器 ID> /bin/bash
#推荐使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。
导出导入容器
#导出容器
docker export CONTAINER_ID ubuntu.tar
#导入容器
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
#通过指定URL或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo
Docker仓库管理
Docker公共仓库: https://hub.docker.com
#登录账号
docker login
#登出账号
docker logout
#查找Docker Hub上的Oracle11.2.0.4
docker search oracle11.2.0.4
#查找本地镜像
docker image ls
#给镜像起别名
docker tag oracle:11.2.0.4 username/oracle11g:11.2.0.4
#docker push将自己的镜像推送到Docker Hub(不推荐这么做,做镜像建议使用Dockerfile)
docker push username/oracle11g:11.2.0.4
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~
