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

一.docker的介绍

1Docker 是什么?

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

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

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

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

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

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

Docker 的优缺点

1)优点

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

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

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

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

署。

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

性等问题。

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

2)缺点

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

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

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

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

容器的存储。

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

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

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

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

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

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

可能变得难以维护。

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

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

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

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

等。

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

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

Kubernetes 等运⾏ Docker 容器的⼯具。

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

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

的时间和精⼒。

Docker 核⼼概念

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

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

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

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

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

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

4. 仓库注册服务器(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值