一、安装:
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)