一、基础
概念
Docker是一个开源的容器引擎,它基于LXC容器技术,使用Go语言开发。
源代码托管在Github上,并遵从Apache2.0协议。
Docker采用C/S架构,其可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
简单来说:Docker就是一种快速解决生产问题的一种技术手段。
Docker 官网:http://www.docker.com
Github Docker 源码:https://github.com/docker/docker
优缺点
优点:
多: 适用场景多
快: 环境部署快、更新快
好: 好多人在用,东西好
省: 省钱省力省人工(123原则)
缺点:
太腻歪人: 依赖操作系统
不善于沟通:依赖网络
不善理财: 银行U盾等场景不能用
国内软件源配置 https://blog.csdn.net/weixin_32820767/article/details/83820505
cd /etc/apt/ mv sources.list sources.list.bak vim sources.list # sohu shangdong deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse # 163 guangdong deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse # tsinghua.edu deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse # aliyun deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse partner deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse # neu.edu deb http://mirror.neu.edu.cn/ubuntu/ xenial main restricted universe multiverse partner deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted universe multiverse 安装依赖软件 apt-get update apt-get install apt-transport-https ca-certificates curl software-properties-common -y 使用官方推荐源 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 使用阿里云的源{推荐1} curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" 使用清华的源{推荐2} curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" 检查 apt-get update
docker软件安装
apt-cache madison docker-ce # 查看支持的docker版本
apt-get install docker-ce -y # 安装docker
apt-get install docker-ce=<VERSION> -y # 可指定版本安装docker : apt-get install docker=5:18.09.0~3-0~ubuntu-xenial -y
启动docker
systemctl start docker
systemctl status docker
注意:ubuntu安装完毕后,默认就开启服务了
docker version # 测试docker
网卡区别:
安装前:只有ens33和lo网卡
安装后:docker启动后,多出来了docker0网卡,网卡地址172.17.0.1
docker服务命令格式:
systemctl [参数] docker # 参数详解:start 开启服务 stop 关闭 restart 重启 status 状态
删除docker命令:
apt-get autoremove remove docker-ce # 自动删除
# 单个手动删除
rm -rf /var/lib/docker/
rm -rf /etc/docker
基本目录
/etc/docker/ docker的认证目录
/var/lib/docker/ docker的应用目录
docker加速器
加速器简介 在国内使用docker的官方镜像源,会因为网络的原因,造成无法下载,或者一直处于超时。所以我们使用 daocloud 的方法进行加速配置。
访问 daocloud.io 网站,登录 daocloud 账户
终端执行命令 & 修改配置项
二、镜像管理
搜索镜像
命令格式:
docker search [image_name]
命令演示:
docker search ubuntu
获取镜像
命令格式:
docker pull [image_name] 或者 docker image pull [image_name]
命令演示:
docker pull Ubuntu 或者 docker image pull nginx
获取的镜像在 /var/lib/docker 目录下,具体详见docker仓库知识
查看镜像
命令格式:
docker images <image_name> 或者 docker image ls <image_name>
命令演示:
docker images
docker images -a 列出所有的本地的images(包括已删除的镜像记录)
镜像的ID唯一标识了镜像,如果ID相同,说明是同一镜像。TAG信息来区分不同发行版本,如果不指定具体标记,默认使用latest标记信息
查看镜像历史
命令格式:
docker history [image_name]
我们获取到一个镜像,想知道他默认启动了哪些命令或者都封装了哪些系统层,那么我们可以使用docker history这条命令来获取我们想要的信息
镜像重命名
命令格式:
docker tag [old_image]:[old_version] [new_image]:[new_version]
命令演示:
docker tag nginx:latest sswang-nginx:v1.0
删除镜像
命令格式:
docker rmi [image_id/image_name:image_version] 或者 docker image rm [image_id/image_name:image_version]
命令演示:
docker rmi 3fa822599e10
注意:如果一个image_id存在多个名称,那么应该使用 name:tag 的格式删除镜像
docker image prune # 清除状态为dangling的镜像
docker image prune -a # 移除所有未被使用的镜像
docker image prune -a --filter "until=24h" # 删除在24h之前安装的镜像
导出镜像 : 将已经下载好的镜像,导出到本地,以备后用。
命令格式:
docker save -o [包文件] [镜像]
docker save [镜像1] ... [镜像n] > [包文件]
或者
docker image save –o [包文件] [镜像1] ... [镜像n]
docker image save [镜像1] ... [镜像n] > [包文件]
注意:docker save 会保存镜像的所有历史记录和元数据信息
导出镜像
docker save -o nginx.tar sswang-nginx
导入镜像
命令格式:
docker load < [image.tar_name]
docker load --input [image.tar_name]
注意: docker load 不能指定镜像的名称
导入镜像文件
docker load < nginx.tar
三、容器管理
查看容器
命令格式:docker ps 或者 docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES # docker ps
注意:
管理docker容器可以通过名称,也可以通过ID
ps是显示正在运行的容器, -a是显示所有运行过的容器,包括已经不运行的容器
启动容器
守护进程方式启动容器
命令格式:docker run <参数,可选> [docker_image] [执行的命令] 或者 docker container run <参数,可选> [docker_image] [执行的命令]
docker run -d nginx # 让Docker容器在后台以守护形式运行。此时可以通过添加-d参数来实现
启动已终止的容器 : 在生产过程中,常常会出现运行和不运行的容器,我们使用 start 命令开起一个已关闭的容器
命令格式:docker start [container_id] 或者 docker container start [container_id]
关闭容器 : 在生产中,我们会以为临时情况,要关闭某些容器,我们使用 stop 命令来关闭某个容器
命令格式:docker stop [container_id] 或者 docker container stop [container_id]
关闭容器id docker stop 8005c40a1d16
删除容器
删除容器有两种方法:
正常删除 -- 删除已关闭的
强制删除 -- 删除正在运行的
正常删除容器
命令格式: docker rm [container_id] 或 docker container rm [container_id]
删除所有已停止的容器: docker container prune
删除已关闭的容器,命令演示
docker rm 1a5f6a0c9443
强制删除运行容器
命令格式:docker rm -f [container_id]
删除正在运行的容器
docker rm -f 8005c40a1d16
删除部分容器
docker container prune --filter "until=24h"
批量关闭容器
命令格式: docker rm -f $(docker ps -a -q)
创建并进入容器
命令格式:docker run --name [container_name] -it [docker_image] /bin/bash
或 docker container run --name [container_name] -it [docker_image] /bin/bash
命令演示: docker run -it --name sswang-nginx nginx /bin/bash
root@7c5a24a68f96:/# echo "hello world" # 在docker中的Ubuntu终端输出信息
hello world
root@7c5a24a68f96:/# exit # 退出docker中的Ubuntu终端
exit
docker 容器启动命令参数详解:
--name:给容器定义一个名称
-i:则让容器的标准输入保持打开。
-t:让docker分配一个伪终端,并绑定到容器的标准输入上
/bin/bash:终端即是一个程序,执行一个命令
退出容器:
方法一:exit
方法二:Ctrl + D
手工方式进入容器
命令格式:
docker exec -it 容器id /bin/bash
或者
docker container exec -it 容器id /bin/bash
效果演示:
docker exec -it d74fff341687 /bin/bash
原文:https://www.cnblogs.com/hsmwlyl/p/10581903.html