docker的安装+docker镜像的基本操作

一.docker的介绍

1、Docker 是什么?

Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采⽤"沙

盒"机制,容器之间不会存在任何接⼝。

Docker 通过 Linux Container(容器)技术将任意类型的应⽤进⾏包

装,变成⼀种轻量级、标准化、可移植、⾃管理的组件。在包装应

⽤的同时,可连带该应⽤的依赖和环境⼀并进⾏打包,所以可以将

这种"包"移植到任意环境去运⾏,省去兼容性的问题。

Docker 的优缺点

(1)优点

  1. 体积⼩:减⼩系统的开销值,⼀台主机可以运⾏上千个容器。

  2. 启动迅捷:更快速的交付和部署,docker容器 ,⽐传统虚拟机

要快很多,docker核⼼解决的问题就是利⽤容器实现VM类似的

功能。3. 操作⽅便:通过配置 dockerfile 便⽀持灵活的⾃动化创建和部

署。

  1. 更轻松的扩展:可以实现更简单的、更可靠的迁移,避免了兼容

性等问题。

  1. 更强的可扩展性和可移植性。

(2)缺点

  1. 安全问题:如果没有正确配置,⼀个容器中的恶意代码可能会影

响到主机上的其他容器以及主机本身的安全。

  1. 存储问题:当使⽤⼤量容器时,存储和管理容器映像可以变得⾮

常困难。这可能需要使⽤分布式存储或其他解决⽅案来管理⼤量

容器的存储。

  1. 性能问题:在某些情况下,容器和虚拟机相⽐会导致性能损失。

这些性能问题越来越少,但是仍然需要考虑。

  1. ⽹络问题:Docker 可能会在⽹络配置上存在⼀些问题,这可能

需要更多的时间来诊断和解决。

  1. 复杂性:Docker 是⼀个⾮常灵活的系统,但这同时也让它更加

复杂。⻓时间使⽤ Docker 会产⽣⼤量的脚本和配置⽂件,这些

可能变得难以维护。

  1. 资源消耗:使⽤ Docker 必须占⽤⼀些资源,包括 CPU、内

存、磁盘等等。如果运⾏容器的主机资源不⾜,可能会导致性能

问题。7. 学习曲线:Docker 是⼀个相对新的技术,相⽐传统环境需要⼀

定的学习曲线。需要了解Docker 基本概念、命令和配置⽂件

等。

  1. 需要花费时间配置和管理:使⽤ Docker 需要花时间配置和管理

容器集群和应⽤程序。需要配置每个容器,管理 Jenkins、

Kubernetes 等运⾏ Docker 容器的⼯具。

  1. 映像构建复杂:构建Docker映像需要按照特定格式编写

Dockerfile 脚本,需要遵循⼀定的规范和流程,这可能需要更多

的时间和精⼒。

Docker 核⼼概念

  1. 镜像(images):⼀个⾯向 docker 容器引擎的只读模板,也

是容器的基础,类似于 iso 镜像⽂件。

  1. 容器(container):基于镜像所创建的虚拟实例,相当于⼀个

简易的 Linux 环境,可启停,且多个容器之间互相隔离。

  1. 仓库(Repository):集中存放 docker 镜像的位置,可使⽤

docker pull 或 push 命令下载或上传到私有或公有仓库。

  1. 仓库注册服务器(registry):存放仓库的地⽅,如果没有私有

仓库,则使⽤公共仓库 docker hub。

二.安装docker

1.配置环境:

[root@docker0 ~]# cat << EOF | tee /etc/modules-load.d/k8s.conf

> overlay

> br_netfilter

> EOF

overlay

br_netfilter

[root@docker0 ~]# modprobe overlay

[root@docker0 ~]# modprobe br_netfilter

[root@docker0 ~]# cat << EOF | tee /etc/sysctl.d/k8s.conf

> net.bridge.bridge-nf-call-iptables = 1

> net.bridge.bridge-nf-call-ip6tables = 1

> net.ipv4.ip_forward = 1

> EOF

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-ip6tables = 1

net.ipv4.ip_forward = 1

[root@docker0 ~]# sysctl --system

2.安装:

[root@docker0 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

3.添加仓库:

[root@docker0 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@docker0 ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

4.启动服务:

[root@docker0 ~]# systemctl start docker.service

5.查看现有的镜像:

[root@docker0 ~]# docker images

6.搜索镜像:

[root@docker0 ~]# docker search tomcat

三.Docker的基本操作

  1. 镜像操作

(1)配置docker镜像站:

[root@docker0 ~]# vim /etc/docker/daemon.json

{

"registry-mirrors": [

"https://do.nark.eu.org",

"https://dc.j8.work",

"https://docker.m.daocloud.io",

"https://dockerproxy.com",

"https://docker.mirrors.ustc.edu.cn",

"https://docker.nju.edu.cn"

]

}

[root@docker0 ~]# systemctl restart docker.service

(2)下载centos镜像:

[root@docker0 ~]# docker pull centos

[root@docker0 ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos latest 5d0da3dc9764 2 years ago 231MB

(3)运行并创建容器:

[root@docker0 ~]# docker run -i -t --name=c0 centos:latest /bin/bash

docker是软件 -i是交互 -t是允许在终端运行,取名为c0,latest是版本

现在是已经进入了一个新系统

(4)配置阿里云的yum仓库:

[root@c28bcbe962be ~]# rm -rf /etc/yum.repos.d/*

[root@c28bcbe962be ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.21

ls /etc/yum.repos.d/

yum clean all && yum makecache

yum -y install iproute

yum -y install httpd

yum -y install net-tools

cat /etc/redhat-release

echo "docker_httpd_server" > /var/www/html/index.html

(5)启动服务:

httpd -k start

(6)访问

访问自身:

curl http://localhost:80

在宿主机上访问:

[root@docker0 ~]# curl 172.17.0.2

docker_httpd_server

无法在物理机上访问,也无法ping到这个主机

如果没有指令正在执行,容器就会停止

[root@c28bcbe962be ~]# exit

(7)重启容器:

[root@docker0 ~]# docker start c0

c0

[root@docker0 ~]# docker attach c0 //将c0的终端挂载到当前的宿主机上面来

[root@c28bcbe962be /]#

[root@c28bcbe962be /]# netstat -lnput|grep 80

[root@c28bcbe962be /]# httpd -k start

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message

[root@c28bcbe962be /]# curl localhost

docker_httpd_server

以上是退出之后就没进程了,需要从新启动

期望退出想继续运行:ctrl+p+q(按住ctrl不松手,先按p再按q)

四.docker远程管理

管理步骤:

  1. 停用docker服务

[root@c28bcbe962be /]# exit

exit

[root@docker0 ~]# systemctl stop docker

2.进入配置文件修改

[root@docker0 ~]# vim /etc/docker/daemon.json

{

"registry-mirrors": [

"https://do.nark.eu.org",

"https://dc.j8.work",

"https://docker.m.daocloud.io",

"https://dockerproxy.com",

"https://docker.mirrors.ustc.edu.cn",

"https://docker.nju.edu.cn"

]

,

"hosts": [

"tcp://0.0.0.0:2375",

"unix:///var/run/docker.sock"

]

}

[root@docker0 ~]# systemctl start docker

[root@docker0 ~]# vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd //这行剩下的删了

[root@docker0 ~]# systemctl stop docker.service

[root@docker0 ~]# systemctl start docker.service

3.加载daemon.json

[root@docker0 ~]# systemctl daemon-reload

4.启动服务

[root@docker0 ~]# systemctl start docker.service

5.查看状态

[root@docker0 ~]# netstat -lnput|grep 2375 //确保端口打开

tcp6 0 0 :::2375 :::* LISTEN 40705/dockerd

[root@docker0 ~]# ls -lh /var/run/ //确保docker.sock文件在

srw-rw----. 1 root docker 0 8月 22 16:10 docker.sock //出现这个就行

根据以上允许远程连接,需要2375端口打开,查看有docker.sock文件则就可以远程连接

  1. 远程管理

[root@docker0 ~]# docker -H 192.168.2.13 images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos latest 5d0da3dc9764 2 years ago 231MB

相关推荐
CoolTiger、3 分钟前
【Vmware16安装教程】
linux·虚拟机·vmware16
学习3人组1 小时前
CentOS 中配置 OpenJDK以及多版本管理
linux·运维·centos
厨 神1 小时前
vmware中的ubuntu系统扩容分区
linux·运维·ubuntu
Karoku0662 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
geek_Chen012 小时前
虚拟机共享文件夹开启后mnt/hgfs/下无sharefiles? --已解决
linux·运维·服务器
(⊙o⊙)~哦2 小时前
linux 解压缩
linux·运维·服务器
牧小七3 小时前
Linux命令---查看端口是否被占用
linux
鸡鸭扣4 小时前
虚拟机:3、(待更)WSL2安装Ubuntu系统+实现GPU直通
linux·运维·ubuntu
友友马5 小时前
『 Linux 』HTTP(一)
linux·运维·服务器·网络·c++·tcp/ip·http
记得开心一点嘛6 小时前
在Linux系统上使用Docker部署javaweb项目
linux·运维·docker