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 表示从第二行开始读取**加粗样式**