docker基础命令

常用命令可分为以下几种


1.容器生命周期管理 # docker [run|start|stop|restart|kill|rm|pause|unpause]

2.容器操作运维  # docker [ps|inspect|top|attach|events|logs|wait|export|port]

3.容器rootfs命令   # docker [commit|cp|diff]

4.镜像仓库         # docker [login|pull|push|search]

5.本地镜像管理     # docker [images|rmi|tag|build|history|save|import]

6.其它命令         # docker [info|version]

镜像相关操作命令:


//创建镜像的方法有三种

//基于已有镜像的容器创建

//基于本地模板导入

//基于Dockerfile文件创建

commit  基于已有镜像的容器再生成一个新的镜像

# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

-m,--message=""  提交信息,为镜像描述内容

-a,--author=""   作者信息

-p,--pause=true  提交时暂停容器运行

My_Container:1  是提交的镜像名称和版本

# docker commit -m "Centos7 x64 First Image" -a "Loren" 33d619155d03 My_centos7:1

import 基于本地模板导入容器快照,将一个容器快照文件导入本地

# cat centos.tar | docker import - test/centos:v1.0

build 根据Dockerfile文件创建一个新的镜像

# docker build [OPTIONS] PATH | URL | -

-t  设定镜像名称及其标示号

-f,--file=Dockerfile 指定Dockerfile文件路径

# docker build -t test:2 -f /opt/

search Image_name  在docker index中搜索image

--automated=false

-s N, --stars=0  指定评价为N星级以上的镜像

# docker search centos6

pull Image_name  从docker register server 中下拉image或者repository

# docker pull centos

# docker pull centos:centos6

# docker pull dl.dockerpool.com:5050/centos:6.8  指定网站下载

push  推送一个image或者repository到registry 

上传之前要把上传的image的tag修改为 hup用户名/镜像名字:tag 

如 # docker tag centos6.8:v1 644597521/centos6.8:v1

images  显示本地的所有镜像列表

rmi  删除指定id的镜像

tag  修改镜像名

# docker tag test:1 My_image:v2  修改test标记好为1的名称为My_image标记号为v2

save 保存镜像到本地文件

Usage: docker save [OPTIONS] IMAGE [IMAGE...]

-o, --output="" 

# docker save -o centos_6.4.tar centos6.4:v1  # 导出本地的centos6.4:v1镜像为centos_6.4.tar文件

load 将本地文件导入到本地镜像库

Usage:docker load [OPTIONS]

-i, --input=""

# docker load < centos_6.4.tar  # 将centos_6.4.tar文件导入到本地镜像列表

inspect  显示镜像或容器的信息。返回的是JSON格式信息,若只要其中一项内容,可以使用-f指定

容器常用操作命令:


run   运行一个新的container

# Usage:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

-a,--attack

-i,--interactive=false   以交互模式运行容器,通常和-t搭配

-t,--tty=false   分配一个伪输入终端

-d  后台运行

-P  允许外部访问容器所有开启的端口

-p  端口映射  -p 80:80

--name  指定启动后容器的名字

# docker run -i -t centos

# docker run -i -t -d centos /bin/bash

# docker run -i -t -d --name My_Container centos /bin/bash

# docker run -i -t -d -p 80:80 --name My_Container centos /bin/bash

-v,--volume=[] 创建数据卷

/mnt 在容器中创建一个数据卷

/webapp:/src/webapp     目录挂载。将本地的webapp目录挂载到容器的/src/webapp。容器和宿主机的挂载目录都会同时变化

/test.txt:/tmp/text.txt 文件挂载。将本地的/test.txt文件挂载到容器的/tmp/text.txt(注意,只能修改容器挂载内的文件,否则不同步)

# docker run -ti -v /da --name=dbdata centos 创建一个容器dbdata,并创建一个数据卷挂载容器dbdata的/da目录

--volume-from 共享挂载数据卷

# docker run -ti -v /mnt --name db centos    创建一个数据卷容器db,并创建一个数据卷挂载到容器db的/mnt目录下

# docker run -ti --volume-from=db --name db1 centos # db1容器挂载db 容器中的数据卷

# docker run -ti --volume-from=db --name db2 centos # db2容器挂载db 容器中的数据卷

此时三个容器db,db1,db2都可以分享目录/mnt

--link  连接其他容器

--link NAME:Alias  Name要建立连接的容器名,Alias连接的容器的别名

# docker run -ti -d -P --name web --link lamp:lamp centos6.4 /bin/bash 新建容器web和已经运行的容器lamp连接 

ps 显示容器的列表

-a  显示所有信息 

-q  只显示ID

# docker inspect 5d20c5528521  显示容器的详细信息

# docker ps -a -q ID

# docker inspect -f "` `.`State`.`Pid `" 5d20c5528521  显示运行容器的PID

stop|start|restart 停止|启动|重启容器

exec 进入容器(推荐使用)

# docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

# docker exec -t -i 216c623071b3 /bin/bash

attack CONTAINER_ID  进入容器

# docker attack 216c623071b3

使用 attach 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了

nsenter

# yum install util-linux 

# PID=$(docker inspect -f "` `.`State`.`Pid `" 5d20c5528521)

# nsenter --target $PID --mount --uts --ipc --net --pid

# nsenter --target 10981 --mount --uts --ipc --net --pid

-t, --target <pid>     要获取名字空间的目标进程

-m, --mount[=<file>]   enter mount namespace

-u, --uts[=<file>]     enter UTS namespace (hostname etc)

-i, --ipc[=<file>]     enter System V IPC namespace

-n, --net[=<file>]     enter network namespace

-p, --pid[=<file>]     enter pid namespace

rm   删除一个容器

-f, --force=true  强制删除

-l, --link=false  删除容器的连接,但保留容器

-v, --volumes=false  删除容器挂载的数据卷

export 导出容器,导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态

-o, --output="" 

# docker export 929bf12bc6ea > centos_6.4_php.tar

其它常用命令


docker -H 127.0.0.1:1234 -d &   修改服务端监听本地的TCP连接1234端口

volume 管理docker的文件

login  登录仓库https://hub.docker.com/,登录成功后信息保存文件在用户家目录/.docker/config.json

输入用户,密码,邮件。

下载 .bashrc_docker,并将内容放到 .bashrc 中

# wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;

# echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc

# source ~/.bashrc

这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;

而 docker-enter 可以进入容器或直接在容器内执行命令


http://liumissyou.blog.51cto.com/4828343/1792500



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章