Docker基础命令

2017/01/17 微服务与容器

一、安装:

Centos7:

yum -y install docker

启动:

systemctl start docker

一、镜像管理:

搜索镜像:docker search

获取镜像:docker pull

查看镜像:docker images

[root@docker docker]# docker images
REPOSITORY  		TAG 		IMAGE ID		CREATED 				SIZE
docker.io/centos	latest  	67591570dd29	4 weeks ago 			191.8 MB
  • REPOSITORY :镜像属于哪个仓库
  • TAG:标签
  • IMAGE ID:ID唯一
  • CREATED :创建时间
  • 大小:SIZE

删除镜像:docker rmi

     -f :删除一个正在运行的容器

下载镜像:

[root@docker ~]# docker pull centos

导出一个镜像:

[root@docker ~]# docker save centos >/opt/centos.tar.gz

导入:

[root@docker ~]# docker load</opt/centos.tar.gz

二、容器管理:

启动容器:docker run –name -h hostname

停止容器:docker stop CONTAINER ID

查看容器:docker ps -a -l

    -a:会显示所有容器(运行/未运行的都)
进入容器:docker exec docker attach nsenter
     attach:进入容器内,如果有2个终端是同步的,如果执行exit,容器会停止

删除容器:docker rm

查看参数:

[root@docker ~]# docker run –help

-a stdin 指定标准输入输出内容类型,可选 STDIN/
STDOUT / STDERR 三项;
-d 后台运行容器,并返回容器ID;
-i 以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb" 为容器指定一个名称;
--dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com 指定容器DNS搜索域名,默认和宿主一致;
-h "mars" 指定容器的hostname;
-e username="ritchie" 设置环境变量;
--env-file=[] 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2"
绑定容器到指定CPU运行; 
-c 待完成
-m 待完成
--net="bridge" 指定容器的网络连接类型,支持 bridge /
host / none
container:<name|id> 四种类型;
--link=[] 待完成
--expose=[] 待完成
-a stdin 指定标准输入输出内容类型,可选 STDIN/
STDOUT / STDERR 三项;
-d 后台运行容器,并返回容器ID;
-i 以交互模式运行容器,通常与 -t 同时使用,让容器保持打开的状态
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb" 为容器指定一个名称;
--dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com 指定容器DNS搜索域名,默认和宿主一致;
-h "mars" 指定容器的hostname;
-e username="ritchie" 设置环境变量;
--env-file=[] 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2"
绑定容器到指定CPU运行; 
-c 待完成
-m 待完成
--net="bridge" 指定容器的网络连接类型,支持 bridge /
host / none
container:<name|id> 四种类型;
--link=[] 待完成
--expose=[] 待完成

创建并启动容器:

[root@docker ~]# docker run centos echo "hello world"
[root@docker~ ]# docker run --name mydocker -t -i centos /bin/bash

/bin/bash:执行一个/bin/bash命令

查看容器(容器的ID就是容器的名字):

[root@docker docker]# docker ps -a
CONTAINER ID		IMAGE    COMMAND				CREATED 		STATUS  	PORTS   		NAMES
d59a655c282d		centos  "echo 'hello world'"   46 seconds ago  Exited (0) 45 seconds ago   jolly_lichterman

二、使用nsenter进入容器

安装命令(命令没有的情况下):

yum -y install util-linux 

nsenter命令:可以访问另一个进程的名称空间

-m:挂载

-u:用户空间

-n:网络的名称空间

-p:pid的名称空间

获取容器进程的pid

[root@docker ~]# docker inspect --format "" 00a626101f8f
52908

进入容器:

[root@docker ~]# nsenter -t 52908 -u -i -n -p

利用脚本:

[root@docker ~]# cat docker-inster.sh 
#!/bin/bash
PID=$(docker inspect --format "" $1)
nsenter -t $PID -u -i -n -p

创建一个容器并且在退出是自动删除(做实验很有用):

[root@docker ~]# docker run --rm -t -i centos /bin/bash

杀死所有正在运行的容器:

docker kill $(docker ps -a -q)

Search

    Table of Contents