首页 > 其他 > 详细

Docker

时间:2019-03-22 23:25:24      阅读:237      评论:0      收藏:0      [点我收藏+]

一、基础

概念

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://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#upgrade-docker-after-using-the-convenience-script

国内软件源配置 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    # 可指定版本安装dockerapt-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

 

Docker

原文:https://www.cnblogs.com/hsmwlyl/p/10581903.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!