详解如何干净的卸载docker的方法
author:一佰互联 2019-04-22   click:389

先上服务器环境信息:

卸载的原因:

宿主机过段时间就磁盘100%了,导致continart异常退出,后来找了很多解决方案,才发现是安装docker的时候有个配置文件错误(正常的应该是|Storage Driver: overlay2)。

上干货:

①卸载

yum remove docker          docker-client          docker-client-latest          docker-common          docker-latest          docker-latest-logrotate          docker-logrotate          docker-selinux          docker-engine-selinux          docker-enginerm -rf /etc/systemd/system/docker.service.drm -rf /var/lib/dockerrm -rf /var/run/docker

②安装

#!/bin/shset -e# This script is meant for quick & easy install via:#  $ curl -fsSL get.docker.com -o get-docker.sh#  $ sh get-docker.sh## For test builds (ie. release candidates):#  $ curl -fsSL test.docker.com -o test-docker.sh#  $ sh test-docker.sh## NOTE: Make sure to verify the contents of the script#    you downloaded matches the contents of install.sh#    located at https://github.com/docker/docker-install#    before executing.## Git commit from https://github.com/docker/docker-install when# the script was uploaded (Should only be modified by upload job):SCRIPT_COMMIT_SHA=36b78b2# This value will automatically get changed for:#  * edge#  * test#  * experimentalDEFAULT_CHANNEL_VALUE="edge"if [ -z "$CHANNEL" ]; then  CHANNEL=$DEFAULT_CHANNEL_VALUEfiDEFAULT_DOWNLOAD_URL="https://download.docker.com"if [ -z "$DOWNLOAD_URL" ]; then  DOWNLOAD_URL=$DEFAULT_DOWNLOAD_URLfiDEFAULT_REPO_FILE="docker-ce.repo"if [ -z "$REPO_FILE" ]; then  REPO_FILE="$DEFAULT_REPO_FILE"fiSUPPORT_MAP="x86_64-centos-7x86_64-fedora-26x86_64-fedora-27x86_64-fedora-28x86_64-debian-wheezyx86_64-debian-jessiex86_64-debian-stretchx86_64-debian-busterx86_64-ubuntu-trustyx86_64-ubuntu-xenialx86_64-ubuntu-bionicx86_64-ubuntu-artfuls390x-ubuntu-xenials390x-ubuntu-bionics390x-ubuntu-artfulppc64le-ubuntu-xenialppc64le-ubuntu-bionicppc64le-ubuntu-artfulaarch64-ubuntu-xenialaarch64-ubuntu-bionicaarch64-debian-jessieaarch64-debian-stretchaarch64-debian-busteraarch64-fedora-26aarch64-fedora-27aarch64-fedora-28aarch64-centos-7armv6l-raspbian-jessiearmv7l-raspbian-jessiearmv6l-raspbian-stretcharmv7l-raspbian-stretcharmv7l-debian-jessiearmv7l-debian-stretcharmv7l-debian-busterarmv7l-ubuntu-trustyarmv7l-ubuntu-xenialarmv7l-ubuntu-bionicarmv7l-ubuntu-artful"mirror=""DRY_RUN=${DRY_RUN:-}while [ $# -gt 0 ]; do  case "$1" in    --mirror)      mirror="$2"      shift      ;;    --dry-run)      DRY_RUN=1      ;;    --*)      echo "Illegal option $1"      ;;  esac  shift $(( $# > 0 ? 1 : 0 ))donecase "$mirror" in  Aliyun)    DOWNLOAD_URL="https://mirrors.aliyun.com/docker-ce"    ;;  AzureChinaCloud)    DOWNLOAD_URL="https://mirror.azure.cn/docker-ce"    ;;esaccommand_exists() {  command -v "$@" > /dev/null 2>&1}is_dry_run() {  if [ -z "$DRY_RUN" ]; then    return 1  else    return 0  fi}deprecation_notice() {  distro=$1  date=$2  echo  echo "DEPRECATION WARNING:"  echo "  The distribution, $distro, will no longer be supported in this script as of $date."  echo "  If you feel this is a mistake please submit an issue at https://github.com/docker/docker-install/issues/new"  echo  sleep 10}get_distribution() {  lsb_dist=""  # Every system that we officially support has /etc/os-release  if [ -r /etc/os-release ]; then    lsb_dist="$(. /etc/os-release && echo "$ID")"  fi  # Returning an empty string here should be alright since the  # case statements don"t act unless you provide an actual value  echo "$lsb_dist"}add_debian_backport_repo() {  debian_version="$1"  backports="deb http://ftp.debian.org/debian $debian_version-backports main"  if ! grep -Fxq "$backports" /etc/apt/sources.list; then    (set -x; $sh_c "echo "$backports" >> /etc/apt/sources.list")  fi}echo_docker_as_nonroot() {  if is_dry_run; then    return  fi  if command_exists docker && [ -e /var/run/docker.sock ]; then    (      set -x      $sh_c "docker version"    ) || true  fi  your_user=your-user  [ "$user" != "root" ] && your_user="$user"  # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-EOF", spaces are kept in the output  echo "If you would like to use Docker as a non-root user, you should now consider"  echo "adding your user to the "docker" group with something like:"  echo  echo " sudo usermod -aG docker $your_user"  echo  echo "Remember that you will have to log out and back in for this to take effect!"  echo  echo "WARNING: Adding a user to the "docker" group will grant the ability to run"  echo "     containers which can be used to obtain root privileges on the"  echo "     docker host."  echo "     Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface"  echo "     for more information."}# Check if this is a forked Linux distrocheck_forked() {  # Check for lsb_release command existence, it usually exists in forked distros  if command_exists lsb_release; then    # Check if the `-u` option is supported    set +e    lsb_release -a -u > /dev/null 2>&1    lsb_release_exit_code=$?    set -e    # Check if the command has exited successfully, it means we"re in a forked distro    if [ "$lsb_release_exit_code" = "0" ]; then      # Print info about current distro      cat <<-EOF      You"re using "$lsb_dist" version "$dist_version".      EOF      # Get the upstream release info      lsb_dist=$(lsb_release -a -u 2>&1 | tr "[:upper:]" "[:lower:]" | grep -E "id" | cut -d ":" -f 2 | tr -d "[:space:]")      dist_version=$(lsb_release -a -u 2>&1 | tr "[:upper:]" "[:lower:]" | grep -E "codename" | cut -d ":" -f 2 | tr -d "[:space:]")      # Print info about upstream distro      cat <<-EOF      Upstream release is "$lsb_dist" version "$dist_version".      EOF    else      if [ -r /etc/debian_version ] && [ "$lsb_dist" != "ubuntu" ] && [ "$lsb_dist" != "raspbian" ]; then        if [ "$lsb_dist" = "osmc" ]; then          # OSMC runs Raspbian          lsb_dist=raspbian        else          # We"re Debian and don"t even know it!          lsb_dist=debian        fi        dist_version="$(sed "s//.*//" /etc/debian_version | sed "s/..*//")"        case "$dist_version" in          9)            dist_version="stretch"          ;;          8|"Kali Linux 2")            dist_version="jessie"          ;;          7)            dist_version="wheezy"          ;;        esac      fi    fi  fi}semverParse() {  major="${1%%.*}"  minor="${1#$major.}"  minor="${minor%%.*}"  patch="${1#$major.$minor.}"  patch="${patch%%[-.]*}"}ee_notice() {  echo  echo  echo " WARNING: $1 is now only supported by Docker EE"  echo "      Check https://store.docker.com for information on Docker EE"  echo  echo}do_install() {  echo "# Executing docker install script, commit: $SCRIPT_COMMIT_SHA"  if command_exists docker; then    docker_version="$(docker -v | cut -d " " -f3 | cut -d "," -f1)"    MAJOR_W=1    MINOR_W=10    semverParse "$docker_version"    shouldWarn=0    if [ "$major" -lt "$MAJOR_W" ]; then      shouldWarn=1    fi    if [ "$major" -le "$MAJOR_W" ] && [ "$minor" -lt "$MINOR_W" ]; then      shouldWarn=1    fi    cat >&2 <<-"EOF"      Warning: the "docker" command appears to already exist on this system.      If you already have Docker installed, this script can cause trouble, which is      why we"re displaying this warning and provide the opportunity to cancel the      installation.      If you installed the current Docker package using this script and are using it    EOF    if [ $shouldWarn -eq 1 ]; then      cat >&2 <<-"EOF"      again to update Docker, we urge you to migrate your image store before upgrading      to v1.10+.      You can find instructions for this here:      https://github.com/docker/docker/wiki/Engine-v1.10.0-content-addressability-migration      EOF    else      cat >&2 <<-"EOF"      again to update Docker, you can safely ignore this message.      EOF    fi    cat >&2 <<-"EOF"      You may press Ctrl+C now to abort this script.    EOF    ( set -x; sleep 20 )  fi  user="$(id -un 2>/dev/null || true)"  sh_c="sh -c"  if [ "$user" != "root" ]; then    if command_exists sudo; then      sh_c="sudo -E sh -c"    elif command_exists su; then      sh_c="su -c"    else      cat >&2 <<-"EOF"      Error: this installer needs the ability to run commands as root.      We are unable to find either "sudo" or "su" available to make this happen.      EOF      exit 1    fi  fi  if is_dry_run; then    sh_c="echo"  fi  # perform some very rudimentary platform detection  lsb_dist=$( get_distribution )  lsb_dist="$(echo "$lsb_dist" | tr "[:upper:]" "[:lower:]")"  case "$lsb_dist" in    ubuntu)      if command_exists lsb_release; then        dist_version="$(lsb_release --codename | cut -f2)"      fi      if [ -z "$dist_version" ] && [ -r /etc/lsb-release ]; then        dist_version="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")"      fi    ;;    debian|raspbian)      dist_version="$(sed "s//.*//" /etc/debian_version | sed "s/..*//")"      case "$dist_version" in        9)          dist_version="stretch"        ;;        8)          dist_version="jessie"        ;;        7)          dist_version="wheezy"        ;;      esac    ;;    centos)      if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then        dist_version="$(. /etc/os-release && echo "$VERSION_ID")"      fi    ;;    rhel|ol|sles)      ee_notice "$lsb_dist"      exit 1      ;;    *)      if command_exists lsb_release; then        dist_version="$(lsb_release --release | cut -f2)"      fi      if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then        dist_version="$(. /etc/os-release && echo "$VERSION_ID")"      fi    ;;  esac  # Check if this is a forked Linux distro  check_forked  # Check if we actually support this configuration  if ! echo "$SUPPORT_MAP" | grep "$(uname -m)-$lsb_dist-$dist_version" >/dev/null; then    cat >&2 <<-"EOF"    Either your platform is not easily detectable or is not supported by this    installer script.    Please visit the following URL for more detailed installation instructions:    https://docs.docker.com/engine/installation/    EOF    exit 1  fi  # Run setup for each distro accordingly  case "$lsb_dist" in    ubuntu|debian|raspbian)      pre_reqs="apt-transport-https ca-certificates curl"      if [ "$lsb_dist" = "debian" ]; then        if [ "$dist_version" = "wheezy" ]; then          add_debian_backport_repo "$dist_version"        fi        # libseccomp2 does not exist for debian jessie main repos for aarch64        if [ "$(uname -m)" = "aarch64" ] && [ "$dist_version" = "jessie" ]; then          add_debian_backport_repo "$dist_version"        fi      fi      # TODO: August 31, 2018 delete from here,      if [ "$lsb_dist" = "ubuntu" ] && [ "$dist_version" = "artful" ]; then        deprecation_notice "$lsb_dist $dist_version" "August 31, 2018"      fi      # TODO: August 31, 2018 delete to here,      if ! command -v gpg > /dev/null; then        pre_reqs="$pre_reqs gnupg"      fi      apt_repo="deb [arch=$(dpkg --print-architecture)] $DOWNLOAD_URL/linux/$lsb_dist $dist_version $CHANNEL"      (        if ! is_dry_run; then          set -x        fi        $sh_c "apt-get update -qq >/dev/null"        $sh_c "apt-get install -y -qq $pre_reqs >/dev/null"        $sh_c "curl -fsSL "$DOWNLOAD_URL/linux/$lsb_dist/gpg" | apt-key add -qq - >/dev/null"        $sh_c "echo "$apt_repo" > /etc/apt/sources.list.d/docker.list"        if [ "$lsb_dist" = "debian" ] && [ "$dist_version" = "wheezy" ]; then          $sh_c "sed -i "/deb-src.*download.docker/d" /etc/apt/sources.list.d/docker.list"        fi        $sh_c "apt-get update -qq >/dev/null"      )      pkg_version=""      if [ ! -z "$VERSION" ]; then        if is_dry_run; then          echo "# WARNING: VERSION pinning is not supported in DRY_RUN"        else          # Will work for incomplete versions IE (17.12), but may not actually grab the "latest" if in the test channel          pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/~ce~.*/g" | sed "s/-/.*/g").*-0~$lsb_dist"          search_command="apt-cache madison "docker-ce" | grep "$pkg_pattern" | head -1 | cut -d" " -f 4"          pkg_version="$($sh_c "$search_command")"          echo "INFO: Searching repository for VERSION "$VERSION""          echo "INFO: $search_command"          if [ -z "$pkg_version" ]; then            echo            echo "ERROR: "$VERSION" not found amongst apt-cache madison results"            echo            exit 1          fi          pkg_version="=$pkg_version"        fi      fi      (        if ! is_dry_run; then          set -x        fi        $sh_c "apt-get install -y -qq --no-install-recommends docker-ce$pkg_version >/dev/null"      )      echo_docker_as_nonroot      exit 0      ;;    centos|fedora)      yum_repo="$DOWNLOAD_URL/linux/$lsb_dist/$REPO_FILE"      if ! curl -Ifs "$yum_repo" > /dev/null; then        echo "Error: Unable to curl repository file $yum_repo, is it valid?"        exit 1      fi      if [ "$lsb_dist" = "fedora" ]; then        if [ "$dist_version" -lt "26" ]; then          echo "Error: Only Fedora >=26 are supported"          exit 1        fi        pkg_manager="dnf"        config_manager="dnf config-manager"        enable_channel_flag="--set-enabled"        pre_reqs="dnf-plugins-core"        pkg_suffix="fc$dist_version"      else        pkg_manager="yum"        config_manager="yum-config-manager"        enable_channel_flag="--enable"        pre_reqs="yum-utils"        pkg_suffix="el"      fi      (        if ! is_dry_run; then          set -x        fi        $sh_c "$pkg_manager install -y -q $pre_reqs"        $sh_c "$config_manager --add-repo $yum_repo"        if [ "$CHANNEL" != "stable" ]; then          $sh_c "$config_manager $enable_channel_flag docker-ce-$CHANNEL"        fi        $sh_c "$pkg_manager makecache"      )      pkg_version=""      if [ ! -z "$VERSION" ]; then        if is_dry_run; then          echo "# WARNING: VERSION pinning is not supported in DRY_RUN"        else          pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/\\.ce.*/g" | sed "s/-/.*/g").*$pkg_suffix"          search_command="$pkg_manager list --showduplicates "docker-ce" | grep "$pkg_pattern" | tail -1 | awk "{print $2}""          pkg_version="$($sh_c "$search_command")"          echo "INFO: Searching repository for VERSION "$VERSION""          echo "INFO: $search_command"          if [ -z "$pkg_version" ]; then            echo            echo "ERROR: "$VERSION" not found amongst $pkg_manager list results"            echo            exit 1          fi          # Cut out the epoch and prefix with a "-"          pkg_version="-$(echo "$pkg_version" | cut -d":" -f 2)"        fi      fi      (        if ! is_dry_run; then          set -x        fi        $sh_c "$pkg_manager install -y -q docker-ce$pkg_version"      )      echo_docker_as_nonroot      exit 0      ;;  esac  exit 1}# wrapped up in a function so that we have some protection against only getting# half the file during "curl | sh"do_install
chmod +x getdocker.sh ./getdocker.sh -s docker --mirror Aliyun

getdocker.sh 文件内容在上个代码区域

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持网页设计。