- 安装必备软件
$ 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-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