Docker原理与基础操作
目录
Docker原理
使用场景:
Docker核心概念与安装方式
Docker与虚拟机区别
yum仓库安装docker
安装依赖包
设置阿里云镜像源
安装Docker-ce
启动docker
镜像加速
网络优化
查看docker版本
搜索在线镜像
下载镜像
查看已有镜像
删除镜像
添加镜像标签
存出镜像
载入镜像
容器操作
容器创建
查看容器
启动容器
另一种方法(创建和启动同步)
查看容器
进入容器
安装网络工具
删除容器
批量删除容器
容器导出
容器导入
Docker原理
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。从本质上,容器其实就是一种沙盒技术。就好像把应用隔离在一个盒子内,使其运行。因为有了盒子边界的存在,应用于应用之间不会相互干扰。并且像集装箱一样,拿来就走,随处运行。
原理图:
使用场景:
- 打包应用程序简化部署
- 可脱离底层硬件任意迁移
- 例:服务器从腾讯云迁移到阿里云
Docker核心概念与安装方式
Docker核心概念:
镜像——一个面向Docker容器弓|擎的只读模板
容器——从镜像创建的运行实例
仓库——集中保存镜像的地方
CentOS安装Docker的两种方式:
使用CURL获得Docker的安装脚本进行安装(不推荐)
使用YUM仓库来安装Docker
Docker与虚拟机区别
类型 |
Docker |
虚拟机 |
容量 |
占用小 |
占用大 |
启动时间 |
毫秒 |
1~3分钟 |
安全性 |
共享内核,不安全 |
安全 |
yum仓库安装docker
安装依赖包
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
配置详解:
- yum-utils提供了yum-config-manager
- device mapper存储驱动程序需要device-mapper-persistent-data和lvm2
- Device Mapper是Linux2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
设置阿里云镜像源
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[root@localhost ~]# ll /etc/yum.repos.d/
总用量 8
drwxr-xr-x. 2 root root 187 9月 19 10:16 backup
-rw-r--r--. 1 root root 2640 3月 16 2020 docker-ce.repo ##添加的镜像源
-rw-r--r--. 1 root root 226 9月 19 10:19 local.repo
安装Docker-ce
[root@localhost ~]# yum -y install docker-ce
注:错误:软件包:containerd.io-1.3.7-3.1.el7.x86_64 (docker-ce-stable)
需要:container-selinux >= 2:2.74
错误:软件包:3:docker-ce-19.03.13-3.el7.x86_64 (docker-ce-stable)
需要:container-selinux >= 2:2.74
您可以尝试添加 --skip-broken 选项来解决该问题
您可以尝试执行:rpm -Va --nofiles --nodigest
安装时需要将backup里面的yum源移出
启动docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)Active: active (running) since 三 2020-11-25 14:13:56 CST; 7s agoDocs: https://docs.docker.comMain PID: 16119 (dockerd)Memory: 33.4MCGroup: /system.slice/docker.service└─16119 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
[root@localhost ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255ether 02:42:3d:9e:a1:54 txqueuelen 0 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
镜像加速
[root@localhost ~]# cd /etc/docker/
[root@localhost docker]# ll
总用量 4
-rw-------. 1 root root 244 11月 25 14:13 key.json
[root@localhost docker]# tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://wy3fhvf9.mirror.aliyuncs.com"]
> }
> EOF
{"registry-mirrors": ["https://wy3fhvf9.mirror.aliyuncs.com"]
}
[root@localhost docker]# ls
daemon.json key.json[root@localhost docker]# systemctl daemon-reload ##重载系统参数
[root@localhost docker]# systemctl restart docker ##重启docker服务
网络优化
[root@localhost docker]# vi /etc/sysctl.conf net.ipv4.ip_forward=1 开启路由功能
[root@localhost docker]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost docker]# systemctl restart network
[root@localhost docker]# systemctl restart docker
查看docker版本
[root@localhost docker]# docker version
Client: Docker Engine - CommunityVersion: 19.03.13API version: 1.40Go version: go1.13.15Git commit: 4484c46d9dBuilt: Wed Sep 16 17:03:45 2020OS/Arch: linux/amd64Experimental: false
搜索在线镜像
[root@localhost docker]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 14063 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1912 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 795 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 131
jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 115
tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… 105 [OK]
下载镜像
[root@localhost docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
852e50cd189d: Pull complete
571d7e852307: Pull complete
addb10abd9cb: Pull complete
d20aa7ccdb77: Pull complete
8b03f1e11359: Pull complete
Digest: sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
查看已有镜像
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 6 hours ago 133MB
删除镜像
[root@localhost docker]# docker images ##查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 6 hours ago 133MB
tomcat latest e0bd8b34b4ea 6 days ago 649MB可以选取镜像id或名称删除[root@localhost docker]# docker rmi tomcat:latest
Untagged: tomcat:latest
添加镜像标签
[root@localhost docker]# docker tag nginx:latest nginx:moon ##添加标签
[root@localhost docker]# docker images ##查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 6 hours ago 133MB
nginx moon bc9a0695f571 6 hours ago 133MB
注:删除该镜像时由于镜像id一致,只能选择名称+标签删除,否则会报以下错误
存出镜像
[root@localhost docker]# docker save -o /opt/nginx nginx:latest ##存出镜像命名为nginx存在当前目录下
[root@localhost docker]# ls /opt
containerd nginx rh
载入镜像
[root@localhost docker]# docker images ##查询镜像时无镜像文件REPOSITORY TAG IMAGE ID CREATED SIZE导入系统存入的镜像
[root@localhost docker]# docker load < /opt/nginx
f5600c6330da: Loading layer 72.52MB/72.52MB
7ccabd267c9f: Loading layer 64.54MB/64.54MB
850c2400ea4d: Loading layer 3.072kB/3.072kB
f790aed835ee: Loading layer 4.096kB/4.096kB
7e914612e366: Loading layer 3.584kB/3.584kB
Loaded image: nginx:latest
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 7 hours ago 133MB
容器操作
参数详解
Options | Mean |
---|---|
-i | 以交互模式运行容器,通常与 -t 同时使用; |
-t | 为容器重新分配一个伪输入终端,通常与 -i 同时使用; |
-d | 后台运行容器,并返回容器ID; |
容器创建
[root@localhost docker]# docker create -it nginx:latest /bin/bash
fc2dbc351d97066bec82a231f553aa6ad4acc1d129efb874da258b4ceda392cd
查看容器
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc2dbc351d97 nginx:latest "/docker-entrypoint.…" 27 seconds ago Created mystifying_margulis
启动容器
[root@localhost docker]# docker start fc2dbc351d97
fc2dbc351d97
[root@localhost docker]# docker ps -a ##查看状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc2dbc351d97 nginx:latest "/docker-entrypoint.…" About a minute ago Up 14 seconds 80/tcp mystifying_margulis
另一种方法(创建和启动同步)
[root@localhost docker]# docker run -itd tomcat /bin/bash
3de84dc1289a72a61f615dd437d36875d1434b3c5301deee4d748d09f7474ea2
[root@localhost docker]#
查看容器
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45e832dc52f5 centos:7 "/bin/bash" About a minute ago Up About a minute reverent_diffie
3de84dc1289a tomcat "/bin/bash" 41 minutes ago Up 41 minutes 8080/tcp musing_villani
fc2dbc351d97 nginx:latest "/docker-entrypoint.…" 50 minutes ago Up 49 minutes 80/tcp mystifying_margulis
进入容器
[root@localhost docker]# docker exec -it 45e832dc52f5 /bin/bash
[root@45e832dc52f5 /]#
[root@45e832dc52f5 /]# exit 退出容器
安装网络工具
[root@45e832dc52f5 /]# yum -y install net-tools
删除容器
先停止服务
[root@localhost docker]# docker stop 45e832dc52f5
45e832dc52f5
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45e832dc52f5 centos:7 "/bin/bash" 13 minutes ago Exited (137) 35 seconds ago reverent_diffie
3de84dc1289a tomcat "/bin/bash" 54 minutes ago Up 54 minutes 8080/tcp musing_villani
fc2dbc351d97 nginx:latest "/docker-entrypoint.…" About an hour ago Up About an hour 80/tcp mystifying_margulis
再删除服务
[root@localhost docker]# docker rm 45e832dc52f5
45e832dc52f5
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3de84dc1289a tomcat "/bin/bash" 55 minutes ago Up 55 minutes 8080/tcp musing_villani
fc2dbc351d97 nginx:latest "/docker-entrypoint.…" About an hour ago Up About an hour 80/tcp mystifying_margulis
[root@localhost docker]#
批量删除容器
[root@localhost opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ea2266cab039 nginx:moon "/bin/bash" 2 seconds ago Up 2 seconds tender_curie
7342ef3e8fc4 nginx:moon "/bin/bash" About a minute ago Up About a minute romantic_mayer
2869c196ba41 nginx:moon "/bin/bash" 4 minutes ago Exited (0) 5 seconds ago mystifying_poincare
63cf5adb7b84 nginx:moon "/bin/bash" 5 minutes ago Exited (0) 4 minutes ago sleepy_cerf
3de84dc1289a tomcat "/bin/bash" 2 hours ago Exited (0) 29 minutes ago musing_villani
[root@localhost opt]# docker ps -a | awk '{print "docker rm "$1}' | bash ##未停止的容器删除不了
Error: No such container: CONTAINER
Error response from daemon: You cannot remove a running container ea2266cab0398cd9706a800c21889bc999eb781bf66c6405ae05f59799111780. Stop the container before attempting removal or force remove
Error response from daemon: You cannot remove a running container 7342ef3e8fc430c61b3b455c0f439471bd4a5b9972fa3d07ba493ed2f7fe8cbc. Stop the container before attempting removal or force remove
2869c196ba41
63cf5adb7b84
3de84dc1289a
[root@localhost opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ea2266cab039 nginx:moon "/bin/bash" 3 minutes ago Up 3 minutes tender_curie
7342ef3e8fc4 nginx:moon "/bin/bash" 5 minutes ago Up 5 minutes romantic_mayer
注:删除容器的镜像时需要先删除容器
容器导出
[root@localhost docker]# docker export fc2dbc351d97 > /opt/nginx-c
[root@localhost docker]# ll /opt
总用量 266056
drwx--x--x. 4 root root 28 11月 25 14:13 containerd
-rw-------. 1 root root 137096704 11月 25 15:00 nginx
-rw-r--r--. 1 root root 135344128 11月 25 16:19 nginx-c
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
容器导入
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest e0bd8b34b4ea 6 days ago 649MB
centos 7 8652b9f0cb4c 11 days ago 204MB
[root@localhost docker]# cd /opt/
[root@localhost opt]# cat nginx-c | docker import - nginx:moon ##会生成镜像,不会创建容器
sha256:3a23aa75b84b76cd8d03961e69833580d101eceeebceb6ba62ed241b74f39f03
[root@localhost opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx moon 3a23aa75b84b 14 seconds ago 131MB
tomcat latest e0bd8b34b4ea 6 days ago 649MB
centos 7 8652b9f0cb4c 11 days ago 204MB
Docker原理与基础操作相关推荐
- docker介绍+下载+基础操作---ubuntu/centos
0. 扫盲 1. 各种软件用什么语言写的 - zabbix(监控软件):php - ansible(批量管理主机,执行命令,无angent):python - openstack(云计算,管理虚拟机) ...
- docker 鱼龙混杂之基础操作篇
查询docker版本: docker version 本地所有镜像: docker images 拉去镜像: docker pull tomcat:版本 重新加载配置:sudo systemctl d ...
- Docker基础操作,原来这才是正确打开Docker的新方式!
文章目录 前言 一.Docker操作镜像 1.拉取镜像 2.查看镜像 3.删除镜像 4.保存镜像 5.读取镜像 5.镜像帮助命令 二.Docker容器基础操作 1.创建并运行容器 2.查看容器运行状态 ...
- 超实用,一口气学会 Centos/Docker/Nginx/Node/Jenkins 等基础操作
作者:ask_the_sky https://juejin.cn/post/6951684431597797389 服务器作为开发的一环,并且现在非常多的商业公司部署在生产环境上的服务器都是CentO ...
- Docker 之 Docker基础操作
第1章 Docker基础操作 1.1 常用的命令 0) 安装Docker 环境 yum -y install docker 1) 指定 IP,DNS 网络位启动Docker容器 a) docke ...
- docker镜像管理基础和操作
#docker镜像管理基础 镜像的概念 镜像可以理解为应用程序的集装箱,而docker用来装卸集装箱. docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器. docker ...
- 啃Docker之必备基础管理操作
啃Docker之必备基础管理操作 前言 一:环境准备 二:镜像的常规操作 三:容器的常规操作 前言 对于理论可以看我之前的博客 链接: https://blog.csdn.net/m0_4721994 ...
- 【docker】基础操作
目录 1.在根目录下创建文件:Dockerfile 2.创建docker镜像 3.容器测试运行 4.修改容器中的代码 5.创建基础镜像 6.基于基础镜像创建新的镜像 7.删除镜像 1.在根目录下创建文 ...
- 面试官留步!听我跟你侃会儿Docker原理
1 Docker 简介 1.1 Docker 由来 Docker 是基于 Go 语言开发的一个容器引擎,Docker是应用程序与系统之间的隔离层.通常应用程序对安装的系统环境会有各种严格要求,当服务器 ...
最新文章
- chrome js 读取文件夹_使用JavaScript遍历本地文件夹的文件
- PLSQL 执行 for update 语句被锁定的解决办法
- 微型计算机技术及应用 习题答案,微型计算机技术及应用习题答案.doc
- .NET Core 必备安全措施
- 3个开源TTS(五)eSpeak1.06的源码调试分析
- 基于原生javascript的淡入淡出函数封装(兼容IE)
- 浏览器 pad android,安卓平板专享 推荐五款Pad版应用浏览器
- 进入AI领域做产品 —— 我的自学之路
- 计算机学科评估b是水平,学科评估B什么水平?
- 学了这么多年精益思想,居然不知道还有第八种浪费 | IDCF
- 八类网线和七类网线的区别_Cat8 八类网线是什么?与Cat5、Cat6、Cat7网线的区别?...
- 医学图像分割常用的评价指标
- 挖个冰块就能修自己,科学家用「冰」做了辆科考机器车,南极火星都能跑
- 银行外汇资金业务学习笔记(3)spot rate (即期汇率)和 forward rate(远期汇率)
- 阿里云SMS短信服务的使用
- RCP Editor 常见错误处理方法
- 防疫新装备友倍康血氧仪
- 我们是如何将一个项目做烂的
- ZigBee的发展也有“碎片化”zigbee模块
- Skynet中环境变量的 skynet.getenv 和 skynet.setenv 的实现