Fork me on GitHub

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
posted @ 2023-03-30 23:31  秋夜雨巷  阅读(69)  评论(0编辑  收藏  举报