codecamp

docker从0开始

1. 安装Docker

    当前环境为Debian8

    在Ubuntu 14.04及以上版本安装Docker

1.1 方法一:简化版安装docker

  wget -qO- https://get.docker.com/ | sh

1.2 方法二:从​Docker官方源安装最新版本

  $ sudo apt-get install apt-transport-https
  $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
  $ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
  $ sudo apt-get update
  $ sudo apt-get install -y lxc-docker
  $ sudo apt-get update -y lxc-docker​​

1.3 方法三:docker.io

  $ sudo apt-get update
  $ sudo apt-get install -y docker.io
  $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
  $ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io

   使用​Ubuntu14.04系统默认自带docker.io安装包安装Docker,这样安装的Docker版本相对较旧,并不推荐使用。

2. 镜像

2.1 获取镜像

  $ sudo docker pull NAME[:TAG]

如  ​'$ sudo docker pull ubuntu',该命令实际下载的是 ubuntu:lastest 镜像

此命令相当于 '$ sudo docker pull registry.hub.docker.com/ubuntu:latest' 命令

即从默认的注册服务器​ registry.hub.docker.com 中的 ubuntu 仓库来下载标记为 latest 的镜像

2.2 查看镜像信息

  $ sudo docker images          可以列出本地主机上已有的镜像
  $ sudo docker inspect IMAGEID 可以获取镜像的详细信息

2.3 搜寻镜像

  $ sudo docker search OpenWAF

    默认搜索 Docker Hub官方仓库中的镜像

    支持的参数:

         --autometad=false 仅显示自动创建的镜像

         --no-trunc=false    ​输出信息不截断显示

3. docker-enter

    docker run -d 跑起一个容器后,使用 docker-enter 方便进入管理,代码如下:

#!/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."
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
    else
         # Use env to clear all host environment variables.
         "$NSENTER" $OPTS env --ignore-environment -- "$@"
    fi
fi 
  将 docker-enter 放入 /bin/ 目录下
  chmod +x docker-enter
  cp -P docker-enter /bin/

    若执行 docker-enter 命令时提示:nsenter:not found

    此时只需 find /var/lib/docker/aufs/ -name "nsenter" ,找到 nsenter 文件, 然后将此文件 copy 到 /bin/ 目录下即可。

4. docker 常用命令

4.1 docker build

    自己经常写 Dockerfile ,常用到 docker build 命令

创建 openwaf 仓库下的 debian8 镜像    
docker build -t openwaf:debian8 .
有时Dockerfile内容无变化,想要重新生成镜像,却不想用 docker 的cache 
docker build --no-cache -t openwaf:debian8 .

4.2 docker rm

删除未运行的容器
docker rm container_id1 container_id2
强制删除容器
docker rm -f container_id1 container_id2
删除所有未运行容器

docker rm $(docker container ls -a -q)

强制删除所有容器

docker rm -f $(docker container ls -a -q) 删除镜像 docker rmi image_id1 image_id2

4.3 docker images

用于查看 docker 镜像

4.4 docker ps

查看运行中容器
docker ps
查看所有容器
docker ps -a

4.5 docker 


本地连接 网络状态 详细信息为空
clear: command not found 命令无法找到
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }