首页 > IT知识 > docker >

docker安装部署

作者: 初见博客 分类: docker 发布时间: 2021-06-17 15:14

1、docker安装部署
Docker 要求 CentOS 系统的内核版本高于 3.10,
查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker
uname -r (命令查看你当前的内核版本)

如果安装过请先卸载

yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

安装依赖设置yum仓库
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

设置仓库:
yum-config-manager \
–add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

安装docker
yum install docker-ce docker-ce-cli containerd.io

启动docker并加入开机启动
systemctl start docker
systemctl enable docker

验证是否安装成功
docker version
docker run hello-world

显示如下即安装成功!
[root@iZ2ze68ge5c1uwlkmnb9ixZ zcapp]# docker run hello-world
Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:0e11c388b664df8a27a901dce21eb89f11d8292f7fca1b3e3c4321bf7897bffe
Status: Downloaded newer image for hello-world:latest

Hello from Docker!

2、docker基本用法
docker远程仓库拉取镜像到本地
docker pull [options] NAME[:TAG]
name是拉取镜像的名称,:TAG表示是可选的,如果不选表明时latest,如果选择表明是指定版本的.
当不加请求地址的时候回去docker的官网拉取镜像.

docker 查看本地镜像
docker images [options] [REPOSITORY[:TAG]]
options是选项,后面是指定镜像的名称.这个用的不多,可能当本地镜像非常多的时候要指定查看某一个镜像.
IMAGE ID 其实是一个64位的字符串,它可以唯一标识我们的镜像,这里只显示了16位,后面的被截掉了

docker运行镜像
docker run [options] IMAGE[:TAG] [COMMAND] [ARG..]
IMAGE是镜像的名字
COMMAND是运行起来的时候要执行什么命令.
ARG表示这条命令运行需要的参数.

3、docker运行镜像流程
docker pull:首先docker pull向docker daemon发送了一条命令pull,告诉docker daemon要拉取某一个镜像,
docker daemon会在本机检查镜像是否存在,如果存在且版本就是我们想要拉取的版本,它就不会做任何的操作.
如果不存在下一步它会到docker的仓库中找我们要拉取的镜像名字,
如果找到了就会有docker仓库传送到我们的本地,把我们要的镜像传送到我们的本地来.
docker run:首先把命令发送到我们的docker daemon,docker daemon会先检查镜像在本机是否存在,
如果不存在相当于执行了一个docker pull的过程,下载回来之后会以一定方式把镜像运行起来变成docker容器.

设定镜像仓库地址
vi /etc/docker/daemon.json
把地址改成
http://hub-mirror.c.163.com

然后下载镜像
docker pull hub.c.163.com/public/centos:7.2.1511

4、docker用法实例:
下载镜像nginx
docker pull hub.c.163.com/public/nginx:1.2.1

查看镜像
docker images

前台运行镜像 输入后容器就会运行,按ctrl+c可以终止容器的运行.
docker run 2dc68ff797db (IMAGE ID方式运行)
docker run 1.2.1 (TAG)
docker run hub.c.163.com/public/nginx (镜像名称方式)

在后台运行容器
docker run -d hub.c.163.com/public/nginx

查看运行的容器
docker ps

查看没有运行 docker ps没有,说明container已经炸了,加-a可以看到。
docker ps -a

停止运行的容器
docker stop containerId

查看容器运行日志
docker logs 容器id

删除容器
docker rm 容器名 (需要先停止)

删除docker的镜像(需要先删除依赖这个镜像的容器,docker对于运行过的image都保留一个状态(container)则可以使用docker ps -a来查看)
docker rmi 镜像名

查看Docker的底层信息
docker inspect 容器名

docker的5种常用网络模式
docker run创建Docker容器时,可以用–net选项指定容器的网络模式,Docker有以下5种网络模式:
bridge模式:使用–net =bridge指定,默认设置;
host模式:使用–net =host指定;
none模式:使用–net =none指定;
container模式:使用–net =container:指定容器名;
overlay模式:使用–net=overlay

默认:Bridge模式–类似于创建了一个内部网络,所有容器都在这个内部网络中
端口映射,docker可以指定你想把容器内的某一个端口可以在容器所在主机上的某一个端口它俩之间做一个映射,
当你在访问主机上的端口时,其实就是访问容器里面的端口.
docker run -d -P –net=bridge nginx:1.9.1

在后台运行,开放主机8080端口映射到容器的80端口上.-p(小写)是开放一个容器的端口到主机上
docker run -d -p 8080:80 hub.c.163.com/library/nginx
查看主机8080端口是否开启,是开启的那么访问 主机ip:8080 即可访问到nginx.
netstat -na |grep 8080

-P(大写)是开放容器所有的端口到主机上一个随机的端口.
docker run -d -P hub.c.163.com/library/nginx
docker ps 查看分配的端口 然后用 ip:端口 去访问即可访问到nginx.

Host模式—-类似直接把容器和主机端口映射
和主机共同使用一个,这个时候容器将不会虚拟出自己的网卡,配置出自己的ip.而是使用宿主机上的ip和端口.
也就是说在docker上使用网络和在主机上使用网络是一样的.
docker run -d –net=host ubuntu:14.04 tail -f /dev/null
当使用host模式网络时,容器实际上继承了宿主机的IP地址。
该模式比bridge模式更快(因为没有路由开销),但是它将容器直接暴露在公共网络中,是有安全隐患的。

None模式
也就是没有网络,这种情况docker将不会和外界的任何东西进行通讯.

container模式
在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,
而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。
同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

Overlay模式:实际上是目前最主流的容器跨节点数据传输和路由方案。
容器在两个跨主机进行通信的时候,是使用overlay network这个网络模式进行通信;如果使用host也可以实现跨主机进行通信,直接使用这个物理的ip地址就可以进行通信。overlay它会虚拟出一个网络比如10.0.2.3这个ip地址。在这个overlay网络模式里面,有一个类似于服务网关的地址,然后把这个包转发到物理服务器这个地址,最终通过路由和交换,到达另一个服务器的ip地址。

平时运行的时候需要调试容器内部的设置、查看一下日志等等.
我们可以通过如下命令进入容器内部:
docker exec -it 02963d2002b bash
-i保证我们的输入有效,即使在没有detach的情况下也能运行.
-t表示将分配给我们一个伪终端.我们将在伪终端输入我们的内容.
后面跟着的是容器的id,即我们上面用ps查询出来的id,这个id可以少写几位,它会自动识别.
可输入如下命令了解更多:docker exec –help

提示 no such container:2dc68ff797db —没有这样的容器do

输入命令后发现我们前面的标识也变了,相当于进入了一个新的电脑.
可以查询一下nginx在什么位置
which nginx

输入 exit即可退出返回原来的系统.

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注