Docker部署,及docker基本使用
一、 docker概述
1.什么是docker
docker是一款全球流行的容器管理工具,可以暂时理解为一种将程序打包的一种技术。
在linux系统中,一切接文件,运行任何程序仅包含程序本身及其依赖库,docker可以实现将这程序和依赖库文件进行打包,便于快速部署服务,迁移等场景。
2.虚拟机和容器技术对比
- 启动速度,部署
虚拟机有开机启动流程,而容器没有此过程,因此速度快。
- 性能
虚拟机的CPU,内存,磁盘都是虚拟的,在程序运行时虚拟机的程序会将指令给到虚拟的CPU,而VVM程序需要将其翻译为宿主机能够识别的指令,因此此过程会造成一定的性能消耗。
容器技术并不会虚拟CPU,内存,而是直接使用宿主机的内核,因此性能更高。
- 资源消耗
虚拟机需要安装单独的VVM程序,而后基于VVM创建虚拟机,VVM本身会占用一定的资源消耗。
而容器技术并不需要过多资源消耗,更加轻量级,一套服务器如何能创建10台虚拟机,那么基本上容器技术实现可以创建100台+容器。
- 数据迁移
从数据迁移角度来说,虚拟机迁移时需要将现有的业务在新的环境中重新部署,比如将测试环境迁移到生产环境,可能此过程较长,可能需要几个小时,甚至几天?
而容器技术本身是一种"打包程序"的技术,因此迁移时并不需要部署服务,直接导入镜像启动容器即可。此过程秒级启动。
- 虚拟机本身的迁移
一个虚拟机本身是一个操作系统,需要安装特定服务软件(vim,yum,apt,...),因此体积较大,可能上GB+。
而容器技术本事只是针对性的对"程序文件"进行打包,因此较小,甚至能够小于1MB。
二、docker架构图
1.docker的官方文档(需要翻墙)
https://docs.docker.com/
2.docker架构图解
- client
客户端
- docker daemon
服务端
- image
镜像文件,有点类似于"模板机",只读的。
- container
容器,有点类似于"虚拟机",可读写的。
- registry
远程仓库,存储的是镜像。
也可以从第三方仓库拉取数据。
还可以自建本地仓库。
二、docker环境部署
1.创建/opt/software/download目录,并下载docker软件
[root@docker101 ~]# mkdir -pv /opt/software/download
[root@docker101 ~]# cd /opt/software/download
[root@docker101 download]#
[root@docker101 download]# #需要Linux翻墙下载,如不能翻墙则通过windows翻墙下载,再上传Linux服务器
[root@docker101 download]# wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.24.tgz
[root@docker101 download]# wget https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64
[root@docker101 download]#
[root@docker101 download]# mv docker-compose-linux-x86_64 docker-compose-v2.23.0
[root@docker101 download]#
[root@docker101 download]# cat daemon.json
{
"registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn/","https://hub-mirror.c.163.com/","https://reg-mirror.qiniu.com"]
}
[root@docker101 download]#
[root@docker101 download]#
[root@docker101 download]#cat docker.service
[Unit]
Description=oldboyedu linux Docke Engine
Documentation=https://docs.docker.com,https://www.oldboyedu.com
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
[Install]
WantedBy=multi-user.target
[root@docker101 download]#
[root@docker101 download]#cp docker.service /usr/lib/systemd/system/
2.解压程序包
[root@docker101 ~]# tar xf docker-20.10.24.tgz -C /opt/software
3.给docker-compose-v2.23.0添加执行权限
[root@docker101 ~]# chmod +x /opt/software/docker-compose-v2.23.0
[root@docker101 ~]# cp /opt/software/docker-compose-v2.23.0 /opt/software/docker
4.创建软连接
[root@docker101 ~]# ln -svf /opt/software/docker/* /usr/bin/
5.自动补全功能
[root@docker101 ~]# cp /opt/software/download/docker /usr/share/bash-completion/completions/docker
[root@docker101 ~]# source /usr/share/bash-completion/completions/docker
6.配置镜像加速
[root@docker101 ~]# install -d /etc/docker
[root@docker101 ~]# cp /opt/software/download/daemon.json /etc/docker/daemon.json
7.开机自启动脚本
[root@docker101 ~]# cp /opt/software/download/docker.service /usr/lib/systemd/system/docker.service
[root@docker101 ~]# systemctl daemon-reload
[root@docker101 ~]# systemctl enable --now docker
8.检查docker 和docker-compose版本
[root@docker101 ~]# docker version
[root@docker101 ~]# docker-compose version
8.检查能够自动补全
[root@docker101 ~]# docker # 连续按2次tab键
attach container events image kill manifest port restart search stats top volume
build context exec images load network ps rm secret stop trust wait
builder cp export import login node pull rmi service swarm unpause
commit create help info logout pause push run stack system update
config diff history inspect logs plugin rename save start tag version
[root@docker102 ~]# docker
[root@docker102 ~]#
[root@docker102 ~]# systemctl status docker
● docker.service - oldboyedu linux Docke Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-11-02 10:54:36 CST; 1min 10s ago
Docs: https://docs.docker.com,https://www.oldboyedu.com
Main PID: 2077 (dockerd)
Tasks: 19 (limit: 9345)
Memory: 25.2M
CPU: 718ms
CGroup: /system.slice/docker.service
├─2077 /usr/bin/dockerd
└─2088 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
Nov 02 10:54:36 docker102 dockerd[2077]: time="2024-11-02T10:54:36.018926622+08:00" level=info msg="scheme \"unix\" not registered, fa>
Nov 02 10:54:36 docker102 dockerd[2077]: time="2024-11-02T10:54:36.018944434+08:00" level=info msg="ccResolverWrapper: sending update >
Nov 02 10:54:36 docker102 dockerd[2077]: time="2024-11-02T10:54:36.018951026+08:00" level=info msg="ClientConn switching balancer to \>
Nov 02 10:54:36 docker102 dockerd[2077]: time="2024-11-02T10:54:36.156649228+08:00" level=info msg="Loading containers: start."
Nov 02 10:54:36 docker102 dockerd[2077]: time="2024-11-02T10:54:36.377325335+08:00" level=info msg="Default bridge (docker0) is assign>
Nov 02 10:54:36 docker102 dockerd[2077]: time="2024-11-02T10:54:36.442961856+08:00" level=info msg="Loading containers: done."
Nov 02 10:54:36 docker102 dockerd[2077]: time="2024-11-02T10:54:36.452588724+08:00" level=info msg="Docker daemon" commit=5d6db84 grap>
Nov 02 10:54:36 docker102 dockerd[2077]: time="2024-11-02T10:54:36.453010464+08:00" level=info msg="Daemon has completed initializatio>
Nov 02 10:54:36 docker102 systemd[1]: Started oldboyedu linux Docke Engine.
Nov 02 10:54:36 docker102 dockerd[2077]: time="2024-11-02T10:54:36.466783322+08:00" level=info msg="API listen on /var/run/docker.sock"
lines 1-22/22 (END)
三、获取docker镜像的常见方式
1.镜像名称的结构
镜像被分为三个部分,分别对应的是: [镜像服务器地址/仓库名称/]镜像的名称:[指定镜像的版本,若不指定,则默认为"latest"]
2.获取镜像的三种方式
2.1 默认官方的镜像无法拉取(需要翻墙)
[root@docker101 ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
2.2 docker科学上网配置
2.3 只需将windows属主机科学上网代理工具开启即可,就可以正常拉取镜像了。
二、docker基本使用
1. 查看容器服务
[root@docker101 ~]# docker ps #查看存活容器服务
[root@docker101 ~]# docker ps -l #查看最新的容器存活服务
[root@docker101 ~]# docker ps -a #查看全部容器服务
2. 管理镜像
[root@docker101 ~]# docker images #查看所有镜像
[root@docker101 ~]# docker image ls #查询所有镜像
[root@docker101 ~]# docker image ls alpine #按条件过滤镜像
[root@docker101 ~]# docker image ls alpine
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 91ef0af61f39 3 months ago 7.8MB
root@docker101 ~]# docker save -o alpine-latest.tar.gz #导出镜像
root@docker101 ~]# docker load -i alpine-latest.tar.gz #导入镜像
3. 管理容器
[root@docker101 ~]# docker run -id --name c3 alpine #运行容器并创建镜像(注意:本地没有镜像才会拉取,如果则只是运行容器)
[root@docker101 ~]# docker start container alpine #启动容器
[root@docker101 ~]# docker stop container alpine #停止容器
[root@docker101 ~]# docker restart container alpine #重启容器
[root@docker101 ~]# docker pause container alpine #暂停容器
[root@docker101 ~]# docker unpause container alpine #取消暂停容器
非特殊说明,本博所有文章均为博主原创。
共有 0 条评论