1、常用命令
docker
search centos #搜索镜像
pull centos #下载镜像
save centos -o centos.tar centos #保存并导出镜像文件
load --input centos.tar #导入镜像文件
rmi IMAGEID #删除镜像
ps #查看正在运行的容器
ps -a -l #查看所有容器
images #列出镜像
run --name mydocker -h hostname -t -i -d centos /bin/bash #-t(启动一个伪终端) -i(打开标准输入) -d 后台运行
start mydocker #启动容器
stop mydocker #停止容器
attach #进入容器,但是退出后容器停止
esec mydocker ps #不进入容器执行命令
esec -it mydocker /bin/bash #类似nsenter命令
inspect -f "{{ .State.Pid }}" mydocker #获取容器的PID
inspect -f '{{.State.Pid}} {{.Id}}' $(docker ps -a -q) #获取所有容器的PID
nsenter -t PID -m -u -i -n -p #独立命令(前边不用加docker)进入容器,且退 出后不终止容器,需要yum util-linux
rm #删除容器
rm -f #删除正在运行的容器
logs ID #看日志
port ID #查看端口映射
2、网络映射
docker run -p
IP:hostPort:containerPort:udp
可以用-p -p指定多个端口映射
3、数据管理
数据卷
docker run -d --name mydocker -v /data nginx #在容器里挂载一个/data的目录
docker inspect -f {{.Mounts}} mydocker #查看挂载的目录在宿主机的位置
docker run -d --name mydocker -v /newdata:/data:ro(rw) nginx #指定目录或文件挂载和权限,
源:目标;只读、读写等
数据卷容器
docker run -it --name mydocker --volumes-from mydocker2 centos /bin/bash
#指定一个数据容器做源挂载到此容器,类似于网络共享硬盘
4、可用命令
docker kill/rm $(docker ps -a -q) #杀死/删除所有docker容器
systemctl daemon-reload #reload /etc/docker/daemon.json配置文件
进入容器脚本
#!/bin/sh if [ -e $(dirname "$0")/nsenter ]; then # with boot2docker, nsenter is not in the PATH but it is in the same folder NSENTER=$(dirname "$0")/nsenter else NSENTER=nsenter fi if [ -z "$1" ]; then echo "Usage: `basename "$0"` CONTAINER [COMMAND [ARG]...]" echo "" echo "Enters the Docker CONTAINER and executes the specified COMMAND." #进入容器并执行指定命令 echo "If COMMAND is not specified, runs an interactive shell in CONTAINER." #如未指定命令,则在容器中运行交互式shell else PID=$(docker inspect --format "{{.State.Pid}}" "$1") if [ -z "$PID" ]; then exit 1 fi shift OPTS="--target $PID --mount --uts --ipc --net --pid --" if [ -z "$1" ]; then # No command given. # Use su to clear all host environment variables except for TERM, # initialize the environment variables HOME, SHELL, USER, LOGNAME, PATH, # and start a login shell. #"$NSENTER" $OPTS su - root "$NSENTER" $OPTS /bin/su - root else # Use env to clear all host environment variables. "$NSENTER" $OPTS env --ignore-environment -- "$@" fi fi