
- 安装必备软件
$ yum -y install iptables iptables-services net-tools vim wget
$ wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;
$ echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc
运行如上命令可使用docker-enter命令进入容器
下载的脚本代码如下:# Some useful commands to use docker.
# Author: yeasy@github
# Created:2014-09-25 alias docker-pid="sudo docker inspect --format '{{.State.Pid}}'"
alias docker-ip="sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}'" #the implementation refs from https://github.com/jpetazzo/nsenter/blob/master/docker-enter
function docker-enter() {
#if [ -e $(dirname "$0")/nsenter ]; then
#Change for centos bash running
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
# if nsenter has already been installed with path notified, here will be clarified
NSENTER=$(which nsenter)
#NSENTER=nsenter
fi
[ -z "$NSENTER" ] && echo "WARN Cannot find nsenter" && return 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."
else
PID=$(sudo docker inspect --format "{{.State.Pid}}" "$1")
if [ -z "$PID" ]; then
echo "WARN Cannot find the given container"
return
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.
#sudo $NSENTER "$OPTS" su - root
sudo $NSENTER --target $PID --mount --uts --ipc --net --pid su - root
else
# Use env to clear all host environment variables.
sudo $NSENTER --target $PID --mount --uts --ipc --net --pid env -i $@
fi
fi
}docker-enter
安装后可以使用如下命令
docker-pid <container> 获取容器的pid
docker-ip <container> 获取容器的ip
docker-enter <container> 进入容器
docker exec -it 92f5506946e7 /bin/bash
docker-enter <container> ls 在容器中执行命令
备用地址:wget -p ~ https://github.com/mycheryhr/mycheryhr.github.io/blob/master/.bashrc_docker - 安装Docker
yum -y install docker - 下载centos镜像
docker pull centos - 查看centos 镜像
docker images centos - 运行一个Docker容器
docker run -itd centos /bin/bash
-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
-i 则让容器的标准输入保持打开
-d 让 Docker 容器在后台以守护态(Daemonized)形式运行
-p 创建端口映射,指定宿主机端口和容器端口,添加映射关系
-v 挂载一个本地主机目录到容器中 (一次可挂载多个) - 搜索Ubuntu镜像
docker search Ubuntu - 显示正在运行的容器(需要先创建容器)
docker ps
docker ps –a 显示所有的容器(包括关闭或已经退出的容器) - 停止后台运行的容器
docker stop "容器ID" - 删除容器
docker rm "容器ID" - 强制删除一个镜像
docker rmi -f "镜像ID" 导出和导入容器
将容器快照导出到本地文件:
将容器快照导入到镜像:
cat centos.tar | docker import - Test/centos:v1.1
备注:Test/centos 为Repository仓库 centos:v1.1为Tag
也可以指定URL导入
docker import http://example.com/exampleimage.tgz example/imagerepo- Docker升级
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine yum remove docker-ce yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce systemctl start docker