Docker 使用手册(1)

Docker 使用手册

学前准备

1、Linux基础

Docker学习

  • Docker概述
  • Docker安装
  • Docker命令
    • 镜像命令
    • 容器命令
    • 操作命令
    • ……
  • Docker镜像!
  • Docker数据卷
  • DockerFile
  • Docker网络原理
  • IDEA 整合Docker
  • Docker Compose
  • Docker Swarm
  • CI/CD jenkins

一、Docker 概述


1、Docker 为什么会出现?

一款产品 开发-上线 两套环境。应用环境,应用配置

开发出来的东西交给运维,需要部署环境、配置,会十分麻烦!

我们能不能用一套东西(环境+项目)一起打包,避免不必要的麻烦?

Docker

Docker 给以上问题提出了解决方案!

Docker思想来自于集装箱

JRE --> 多个应用(端口冲突)--> 东西都是交叉的

隔离:Docker核心思想!打包装箱,每个箱子都是隔离的

2、Docker 的历史

2010年,几个搞IT的年轻人 做一些LXC有关的容器化技术,他们将自己的技术成为容器化技术,命名:Docker

刚刚诞生之时,没有人注意,公司活不下去,就选择开源

2013年,Docker开源

Docker火了之后,每个月都会更新一个版本

2014年4月9日,Docker1.0正式发布

Docker为什么会火呢?

十分的轻巧

3、Docker 能干嘛?

比较Docker与虚拟机的不同

Docker VS 虚拟机

  • 传统虚拟机会虚拟出硬件,运行一个完整的操作系统,然后在系统之上安装运行软件
  • 容器内应用直接运行在宿主机内核中,容器没有内核,没有虚拟硬件,所以就比较轻便
  • 每个容器有属于自己的文件系统,互相隔离,互不影响。

Docker 开发、运维

应用更快速的交付和部署

传统:一堆帮助文档、安装程序

Docker:打包镜像、发布测试,一键运行!

更便捷的升级或扩缩容

使用了Docker之后,升级环境像搭积木一样!

例如:项目打包为一个应用,服务器A出现问题,性能出现瓶颈,我要做水平扩展,做负载均衡,我们可直接在服务器上直接一键运行,服务器B就被扩展起来啦

更简单的系统运维

开发、测试、线上环境高度一致

更高效的系统利用

Docker是内核级别的虚拟化,可以在一个物理机上运行多个容器实例,将物理机性能压榨到极致

二、Docker安装

1、Docker的基本组成

组成

镜像(image)

Docker镜像相当于一个模板,通过一个镜像可以创建多个容器,最终项目的运行是在容器中的。类似于:类与实例的关系

容器(container)

Docker利用容器技术,独立运行一个或者一组应用,这些容器都是用镜像来创建的

基本命令:启动、停止、重启、删除

目前可以把这个容器理解为一个简易的操作系统

仓库(Repository)

存放镜像的地方

仓库分为:公有仓库、私有仓库

公有仓库(Docker Hub),默认国外

阿里云都有容器服务器,(配置镜像加速)

2、Docker 安装

环境准备

  • 需要会一点Linux命令

  • Centos7

  • 使用命令行工具(Xshell,或者Termius),我这里是Termius

    环境查看

安装

Docker 安装教程帮助文档

# 1、卸载旧版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 2、需要的安装包
sudo yum install -y yum-utils

# 3、设置镜像库 (这里记得替换为国内的阿里云镜像安装)
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    # 建议安装这个
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 4、更新yum软件包索引
yum makecache dast

# 5、安装docker有关内容, ce-社区版本
sudo yum install docker-ce docker-ce-cli containerd.io

# 6、启动docker服务
systemctl start docker

# 7、docker -version
查看是否安装成功!

测试是否安装成功

# 8、hello-world
docker run hello-world
# 9、查看镜像
docker images

卸载Docker

卸载依赖,删除docker运行环境

sudo yum remove docker-ce docker-ce-cli containerd.io

sudo rm -rf /var/lib/docker # 默认工作路径
sudo rm -rf /var/lib/containerd

配置使用

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ix1b7gpx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

3、回顾hello-world流程

组成

4、Docker 是怎么工作的?

Docker是一个C/S服务,Docker守护进程运行在主机上,通过Socket从客户端访问,

Docker-Server 接收到Docker-Client指令,就会执行这个命令

三、Docker的常用基本命令

1、帮助命令

runoob@runoob:~$ docker -version 		# 显示docker的版本信息
runoob@runoob:~$ docker info    		  # 显示docker的更加详细信息
runoob@runoob:~$ docker [命令] --help # 所有|指定命令的帮助文档

2、镜像命令

runoob@runoob:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B

# 解释
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

# 可选项
-a 显示所有镜像
-q 显示所有ImageId

# 可组合命令 
-- 批量删除镜像
runoob@runoob:~$ docker rmi $(docker images -aq)

搜索镜像

runoob@runoob:~$ docker search mysql

# 可选项
--filter 过滤搜索

下载镜像

# 默认下载最新版镜像
runoob@runoob:~$ docker pull mysql
Using default tag: latest
8b87079b7a06: Pulling fs layer 
a3ed95caeb02: Download complete # 分层下载
0d62ec9c6a76: Download complete 
a329d50397b9: Download complete 
# 默认下载指定版本镜像
runoob@runoob:~$ docker pull mysql:5.7

删除镜像

# 指定删除
runoob@runoob:~$ docker rmi -f 容器id
# 删除多个
runoob@runoob:~$ docker rmi -f 容器id 容器id 容器id 容器id 
# 批量删除
runoob@runoob:~$ docker rmi -f $(docker images -aq)

3、容器命令

说明:我们需要有一个镜像才可以运行容器,linux,这里我们使用centos

runoob@runoob:~$ docker pull centos

新建并启动容器

runoob@runoob:~$ docker run [可选参数] centos

# 可选参数
-i:交互式
-t:打开终端
-d:后台启动
--name:指定容器名称
-it:交互式打开
-p:指定端口
		-p 主机ip:port:容器port
		-p port:容器port
		-p 容器port
-P:随机指定端口

# 测试 启动并进入容器
runoob@runoob:~$ docker run -it centos /bin/bash
root@d3274819:/# 

# 退出容器
root@d3274819:/# exit

列出所有运行的容器

# 列出正在运行的容器
docker ps 
# 列出曾经|正在运行的容器
docker ps -a
# 显示所有运行容器的编号
docker ps -aq
# 显示最近的容器
docker ps -n=?
# 批量删除容器
docker rm -f $(docker ps -aq)

列出所有运行的容器

# 退出容器(停止容器)
root@d3274819: exit 
ctrl + p + q # 容器不停止退出

操作容器

docker start 容器id
docker kill 容器id
docker stop 容器id
docker restart 容器id

4、其他常用命令

后台启动容器

# 后台启动
docker run -d centos
# 启动之后,docker ps发现容器停止了,原因是容器要使用后台运行,就必须要有一个前台进程,docker发现没有前台进程,就停止了
# nginx,容器启动后会发现没有服务了,就立刻停止,就是停止服务了

查看日志

docker logs -tf --tail 10 容器id

# 可选参数
-f:
-t:加上时间
--tail number:尾部n条

# 执行shell脚本
docker run -d centos -c "while true;do echo hello;sleep 1;done"

查看容器的进程

docker top 容器id

查看镜像元数据

docker inspect 容器id

进入当前正在运行的容器

# 方式一,打开一个新的终端
docker exec -it 容器id /bin/bash
# 方式二,进入正在运行的命令行,不会启动新的进程!
docker attach 容器id

从容器内拷贝文件到主机

docker cp 容器id:容器路径 本地主机路径

小结

可视化

  • portainer(先用这个)

    docker run -d -p 8088:9000 \
    --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
    
    • Rancher 持续集成时(CI/CD时再用)

     什么是portainer?

    Docker图形化管理工具,提供给我们操作!

    访问测试:http://ip:8088/

posted @   码出新生活!  阅读(129)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示