Docker常用命令

Docker常用命令

子命令分类 子命令
Docker 环境命令 info、version
容器生命周期管理 create、exec、kill、pause、restart、rm、run、start、stop、unpause
镜像仓库命令 login、logout、pull、push、search
镜像管理 build、images、import、load、rmi、save、tag、commit
容器运维操作 attach、export、inspect、port、ps、rename、stats、top、wait、cp、diff、update
容器资源管理 volume、network
系统日志信息 events、history、logs

##################################################################

docker images 查看所有镜像
docker rmi 镜像名称 删除镜像
docker ps -a 查看所有容器(不管运行的,还是停止…)
docker rm 容器ID 删除容器(容器必须停止)
docker run -it 镜像名称 bash 运行镜像创建容器 (不推荐 it指交互界面;bash指bash程序,可以不写,因为默认为bash)
docker run -it -p 宿主机端口:容器端口 镜像名称 bash 端口映射(运行镜像,创建容器,并端口映射)
宿主机端口 :随便取;容器端口,mariadb 的 端口
docker start -i 容器ID 启动容器
docker stop 容器ID 关闭容器(),或者可以在容器内部(it 交互界面)使用 exit 指令


docker save 镜像名称 > 镜像路径 导出镜像文件
docker load < 镜像路径  导入镜像(如果docker有相同镜像,把之前的删除再导入)
---------------------------------------------------------------
docker Import 容器路径 镜像名称 导入容器(同时导入镜像)
docker export 容器ID > 镜像路径 导出容器
----------------------------------------------------------------
docker commit 容器ID 镜像名称 把容器保存成镜像

##################################################################
查看docker版本信息
#docker version
#docker -v
#docker info
##################################################################
镜像
1.获取镜像
docker pull dl.dockerpool.com:5000/ubuntu:14.04(dl.dockerpool.com为注册服务器,5000为端口号,ubuntu为仓库名称,14.04是镜像也是版本号)

2.查看镜像信息
docker images(列出本地主机已有的所有镜像)
docker images -a (显示当前系统所有镜像,包括过渡层镜像 )
docker images ubuntu (显示当前系统 docker ubuntu 库中的所有镜像)
更改变迁信息
docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:latest
docker inspect 000(000为镜像ID,显示这个镜像的详细信息)

3.搜寻镜像
docker search mysql (输出信息包括镜像名字、描述、星级、是否为官方创建、是否自动创建)

4.删除镜像
docker rmi dl.dockerpool.com:5000/ubuntu:latest
注:当有该镜像创建的容器存在时,镜像文件默认是无法删除的,所以删除镜像前最好是删除所有依赖该镜像的容器,请不要用强制删除。

5.创建镜像
有三种方法:
a. 基于已有镜像的容器创建
docker commit -m “add new image”-a “” 000(容器ID) test(新建image name)
b. 基于本地模板导入
cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
c. 基于dockerfile创建

6.存出镜像
docker save -o ubuntu_14.04.tar ubuntu:14.04

7.载入镜像
docker load --input ubuntu_14.04.tar 或者
docker load < ubuntu_14.04.tar

8.上传镜像
docker push user/test:latest(user用户需要在dockerHub网站注册)

image镜像操作命令
#docker search image_name //检索image
#docker pull image_name //下载镜像
#docker images //列出本地镜像,查看所有镜像 -a, --all=false Show all images; --no-trunc=false Don’t truncate output; -q, --quiet=false Only show numeric IDs
//删除一个或者多个镜像; -f, --force=false Force; --no-prune=false Do not delete untagged parents
#docker rmi image_name
//显示一个镜像的历史; --no-trunc=false Don’t truncate output; -q, --quiet=false Only show numeric IDs
#docker history image_name

##################################################################
容器
容器是镜像的一个运行实例,但它带有额外的可写层
1.创建容器
docker create -it ubuntu:12.04
2.创建并启动容器
docker run -it ubuntu:12.04 /bin/bash
3.守护态运行
docker run -d ubuntu:12.04
4.查看容器信息
docker ps [-a -q 查看终止状态]
5.获取容器的输出信息
docker logs cet(cet是容器ID前三个字符)
6.终止容器
docker stop cet
7.启动容器
docker start cet
8.重启容器
docker restart cet

9.进入容器

  1. attach命令
    docker attach nostalgic(nostalgic是docker的name)
    缺点:所有窗口同步显示
  2. exec命令
    docker exec -it 243… /bin/bash (243…为docker ID)
  3. nsenter命令
    a)找PID
    PID=$(docker-pid 243…)
    b)通过PID链接容器
    nsenter --target $PID --mount --uts --ipc --net --pid

10.删除容器
docker rm [-f -l -v] cet
-f 强行终止并删除
-l 删除容器的链接,保留容器
-v 删除挂载的数据卷
(可以使用 docker rm 92 命令快速删除容器 920c0f3c240a,但是无法使用 docker rm 3f 命令进行快速删除某个容器,因为有两个以 3f 开头的容器,你必须用 docker rm 3f2 或者 docker rm 3f8 指定删除其中一个。)

11.导出容器
docker export cet >test.tar

12.导入容器(将容器快照导入到本地镜像库)
cat test.tar | docker import - test/ubuntu:v1.0(重新指定标签为ubuntu的镜像名称,v1.0的版本号
docker load 也可以导入镜像存储文件到本地镜像库,他比import方式的好处是:import导入镜像快照文件将丢失所有的历史记录和元数据信息。
**注:**通过导出容器和导入容器可以实现容器迁移(拷贝文件)

容器操作

在容器中运行"echo"命令,输出"hello word"

$docker run image_name echo “hello word”

交互式进入容器中

$docker run -i -t image_name /bin/bash (exit后容器还存在但非已停止)

后台启动镜像 并更改镜像名字

$docker run -d --name myImage centos

在容器中安装新的程序

$docker run image_name yum install -y app_name

列出当前所有正在运行的container

$docker ps

列出所有的container

$docker ps -a

列出最近一次启动的container

$docker ps -l

保存对容器的修改; -a, --author="" Author; -m, --message="" Commit message

$docker commit ID new_image_name

删除所有容器

$docker rm docker ps -a -q

删除单个容器; -f, --force=false; -l, --link=false Remove the specified link and not the underlying container; -v, --volumes=false Remove the volumes associated to the container

$docker rm Name/ID

停止、启动、杀死一个容器

$docker stop Name/ID
$docker start Name/ID
$docker kill Name/ID

从一个容器中取日志; -f, --follow=false Follow log output; -t, --timestamps=false Show timestamps

$docker logs Name/ID

列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的

$docker diff Name/ID

显示一个运行的容器里面的进程信息

$docker top Name/ID

从容器里面拷贝文件/目录到本地一个路径

$docker cp Name:/container_path to_path
$docker cp ID:/container_path to_path

从本地一个路径拷贝文件/目录到容器里面

docker cp /haiou/sw 2822fc4e37d2:/ # 将sw目录拷贝到容器的根目录下

1、宿主机文件到容器:docker cp 当前宿主机的文件 容器ID或者容器name:容器目录:
docker cp jdk-8u144-linux-x64.tar.gz testUbuntu:/home/kanpiaoxue/develop/jdk/
2、文件从容器到宿主机: docker cp 容器ID或者容器name:容器目录 当前宿主机的文件

重启一个正在运行的容器; -t, --time=10 Number of seconds to try to stop for before killing the container, Default=10

$docker restart Name/ID

附加到一个运行的容器上面; --no-stdin=false Do not attach stdin; --sig-proxy=true Proxify all received signal to the process

$docker attach ID

#访问另一个容器的命名空间 进入另一个容器
#安装Linux工具包
$ yum install -y util-linux
#获取容器的Pid
$docker inspect --format “{{.State.Pid}}” containerName
#进入容器
$ nsenter --target Pid --mount --uts --ipc --net --pid

#容器网络配置
#随机生成container到host端口映射
$docker run -d -P --name myNginx nginx
#指定特定端口 将container 80到host91端口的映射
$docker run -d -p 91:80 --name myNginx imageName

-p ip: hostPort:containerPosrt

$docker ps –l

##################################################################
仓库
仓库是集中存放镜像的地方,一个注册服务器上有很多仓库,一个仓库中有很多镜像。

  1. 登录
    docker login

  2. 基本操作
    查找、上传、下载

  3. 自动创建

  4. 查看镜像
    http://www.dockerpool.com/downloads

  5. 更新镜像标签
    docker tag dl.dockerpool.com:5000/ubuntu:12.04 ubuntu:12.04(将前面的镜像更改为ubuntu:12.04)

  6. 创建私有仓库
    docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry(自动下载并启动registry容器,创建本地的私有仓库服务,默认仓库船舰的容器在/tmp/registry,可以通过-v参数来存放到指定路径上)

7.管理私有仓库镜像
假设私有仓库地址为10.0.2.2,端口为5000,
docker tag ubuntu:14.04 10.0.2.2:5000/test(更改标签名)
docker push 10.0.2.2:5000/test(push镜像,会自动push到10.0.2.2地址的机器上)
curl http://10.0.2.2:5000/v1/search(查看仓库10.0.2.2:5000中是否含有test镜像)
docker pull 10.0.2.2:5000/test(在任何一台能访问到10.0.2.2地址的机器上下载镜像)

##################################################################
docker数据管理

-v 绑定挂载一个数据卷 -h 给容器指定一个主机名

$docker run -it --name volume-test1 -h nginx -v /data/ imageName

#或着手动设置映射
$docker run -it --name volume-test1 -h nginx -v /opt:/opt imageName

#挂载另一容器, 另一容器volume-test2(即使容器已经停掉)来做volume-test1的专门的存储
$docker run -it --name volume-test1 -h nginx --volumes-from volume-test2 imageName

#显示数据卷到host主机的映射关系
$docker inspect -f {{.Volumes}} volume-test1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络飞鸥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值