ubuntu16.04 安装docker

1.采用在线方式安装

Ubuntu 安装 Docker CE:
         apt-get update
         apt-get install linux-image-extra-$(uname -r)
         apt-get install linux-image-extra-virtual
     2.使用 APT 安装
             apt-get update
             apt-get install apt-transport-https
             apt-get install ca-certificates
             apt-get install curl
             apt-get install software-properties-common
     3.简易安装
         apt-get update
         sudo apt-get install -y docker.io
添加国内源 
     添加软件源的 GPG 密钥
          curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
     添加docker软件源
          add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
     更新 apt 软件包缓存,安装 docker-ce
          apt-get update
          apt-get install docker-ce
 启动 Docker CE
     systemctl enable docker 设置开机自启
     systemctl start docker    开机
     systemctl restart docker 重启
     systemctl stop docker 关闭
 建立 docker 组 
     groupadd docker
将当前用户加入 docker 组 
     usermod -aG docker $USER
测试 Docker 是否安装正确 
     docker run hello-world

docker命令
镜像操作
列出镜像(image):
docker images 或 docker image ls
拉取镜像
docker pull xxxx
eg:创建centos镜像,
docker pull centos
默认拉取最新的centos镜像,指定版本则是centos:7
查找镜像
sudo docker search xxxx
构建镜像: 详情链接(https://baijiahao.baidu.com/s?id=1593010515480468898&wfr=spider&for=pc)
构建镜像的方式有以下两种:
1、使用docker commit构建
2、使用docker build和Dockerfile文件来构建
删除images,通过image的id来指定删除谁
docker rmi
删除全部image
docker rmi $(docker images -q)
按照条件删除镜像

eg: 如果想要删除没有打tag的none镜像:
      Docker rmi $(docker images -a|grep none|awk '{print $3}') // none为关键字
      也可以写成:
      docker ps -a |grep none }awk '{print $1}'|xargs docker rmi
     拓展:
        有些什么情况会产生none的镜像? 
         1)在镜像创建过程中创建失败,会产生无效的none镜像 
         2)pull镜像。镜像的垂直父子关系 
         3)使用dockerfile文件创建镜像,重新生成,新的镜像名赋给后者,前面的镜像名字为none
 导出镜像:
     docker save -o <保存路径> <镜像名称:标签>
     eg:如把A机 ubuntu:18.04 导出到当前文件夹,则在A机上运行:
     docker save -o ./ubuntu18.tar ubuntu:18.04
 导入镜像:
     docker load --input <镜像路径和名称>
     把A机当前文件夹下的ubuntu18.tar拷贝到另一台安装过docker的B机上,在B机上导入镜像:
     docker load --input ./ubuntu18.tar

容器操作
列出容器
命令1:docker ps
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
–format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
–no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
命令2:
# docker container ls 列出当前正在运行的container
# docker container ls -a 列出所有状态的container
# docker container prune 清理不再使用的container ( --filter “until=24h” 过滤清除)
创建一个容器并运行
命令:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS:
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用 -i:以交互模式运行容器,通常与 -t 同时使用 -d:后台运行容器,并返回容器ID --name:为容器指定一个名称 -p:端口映射,格式为:主机(宿主)端口:容器端口 -v:挂载宿主机文件夹,格式为: 宿主机文件夹:容器文件夹 --link: 添加链接到另一个容器 -m:设置容器使用内存最大值;
eg1:使用docker镜像tomcat:latest以后台模式启动一个容器,并将容器命名为mytomcat
docker run -tid --name mytomcat tomcat:latest
eg2:使用镜像tomcat:latest以后台模式启动一个容器,并将容器的8080端口映射到宿主机的8080端口
docker run -tid --name mytomcat -p 8080:8080 tomcat:latest
eg3:使用镜像tomcat:latest以后台模式启动一个容器,并将容器的8080端口映射到宿主机的8080端口,主机的目录 /home 映射到容器的 /home
docker run -tid --name mytomcat -p 8080:8080 -v /home:/home tomcat:latest
eg4:使用镜像tomcat:latest启动一个容器,在容器内执行/bin/bash命令。
docker run -it tomcat:latest /bin/bash
eg5:建立一个CENTOS的容器
sudo docker run --privileged --cap-add SYS_ADMIN -e container=docker -it --name my_centos -p 80:8080 -d --restart=always centos:7 /usr/sbin/init
进入容器:
命令:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

OPTIONS说明:
     -d :分离模式: 在后台运
     -i :即使没有附加也保持STDIN 打开
     -t :分配一个伪终端
     eg:进入已经创建好的my_centos的容器中
          docker exec -it my_centos /bin/bash

容器开关:

docker start 容器名称或容器ID:启动一个或多个已经被停止的容器
 docker stop 容器名称或容器ID:停止一个运行中的容器,附加 -t=60参数关闭容器的限时
 docker restart 容器名称或容器ID:重启容器
 docker kill 容器名称或容器ID:强制直接关闭容器
 备注:stop和kill的主要区别:stop给与一定的关闭时间交由容器自己保存状态,kill直接关闭容器
设置容器开机自启:docker update --restart=always 容器id
 停止所有的container:
     docker stop $(docker ps -a -q)
 删除某一个container:
     docker rm -f 容器id
 删除所有container:
     docker rm $(docker ps -a -q)    
 eg1:启动已被停止的容器myrunoob

     docker start myrunoob
 eg2:停止运行中的容器myrunoob
     docker stop myrunoob
 eg3:重启容器myrunoob
     docker restart myrunoob

退出容器:exit
docker容器的导入与导出
导出某个容器:语法:docker export <容器名或容器id> > <保存路径>
eg:导出容器ubuntu18到当前路径下命名为ubuntu18.tar:
docker export ubuntu18 > ./ubuntu18.tar
导入某个容器:语法:docker import <文件路径> <容器名>
eg:把A机当前文件夹下的ubuntu18.tar文件拷贝到B机上,在B机上运行
docker import ./ubuntu18.tar ubuntu18
docker中启动关闭删除所有的容器以及镜像命令
docker中 启动所有的容器命令
docker start $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

docker中 关闭所有的容器命令
     docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

 docker中 删除所有的容器命令   
     docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

 docker中 删除所有的镜像
     docker rmi $(docker images | awk '{print $3}' |tail -n +2)
 提示:
     tail -n +2 表示从第二行开始读取**加粗样式**