Docker容器搭建及基本使用

news2025/2/23 13:30:07

一、安装环境

操作系统:CentOS 7(建议用7或以上,因为6版本有部分功能不兼容)

二、Docker安装

1、卸载旧版本

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

2、安装所需软件包

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

3、设置仓库

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

4、安装最新版本

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

如果不是安装最新版本可以使用以下步骤:
查看可用版本:

yum list docker-ce --showduplicates | sort -r

然后使用命令安装对应得版本:

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

如:yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io

5、安装完后启动

systemctl start docker

6、验证

docker run hello-world

三、Docker基本使用

1、容器的使用

直接输入docker命令可查看到docker命令的选项

启动容器
使用以下命令启动一个容器:

docker run -it ubuntu /bin/bash

参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

如果需要退出则直接输入exit命令即可

如果需要后台运行可加上-d参数

docker run -itd --name ubuntu-test ubuntu /bin/bash

其中,-name是指定容器的名字,名字可以自定义

查看所有容器

docker ps -a

启动、关闭、重启一个已存在的容器

# 启动  
docker start <容器ID>  
# 停止  
docker stop <容器ID>  
# 重启 
docker restart <容器ID>  

进入和退出在后台运行的容器

进入容器,当从终端退出来的时候,container是会被关闭的
docker attach <container-id>
进入容器,退出终端的时候不会关闭container的main process
docker exec -t <container-id> bash

导入和导出容器

导出
docker export <容器ID> > 导出路径 
如:docker export 1e560fca3906 > ubuntu.tar

导入  
cat 路径 | docker import - 镜像名:标签名 
如:cat docker/ubuntu.tar | docker import - test/ubuntu:v1

删除容器

docker rm -f <容器ID>

清空所有处于终止状态的容器:

docker container prune

使用容器运行一个web应用

载入镜像和启动容器

载入镜像
docker pull training/webapp  
运行容器(其中P参数将容器内部使用的网络端口映射到我们使用的主机上)
docker run -d -P training/webapp python app.py

查看容器状态:

docker ps  

在这里插入图片描述
此时发现多了端口的信息,docker开放了5000端口,映射到了主机的9001端口上。

可以通过 -p 参数来配置端口:

docker run -d -p 5000:5000 training/webapp python app.py

查看web应用程序的日志

其中-f让docker logs像tail -f一样输出
docker logs -f <容器ID或名字>

查看web应用程序容器的进程

docker top <容器ID或名字>

使用docker inspect来检查docker底层信息,它会返回一个json文件记录着容器的配置和状态信息

docker inspect <容器ID或名字>

停止、重启、移除web应用容器

停止 
docker stop <容器ID或名字>
重启
docker restart <容器ID或名字>
移除(移除前必须停止)
docker rm <容器ID或名字>

2、镜像的使用

列出所有本地主机上的镜像

docker images

REPOSITORY           TAG       IMAGE ID       CREATED         SIZE
prom/prometheus      latest    932c2dbe7d3e   3 weeks ago     231MB

列表各个列说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

说明:同一仓库可以有多个TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:

docker run -t -i ubuntu:15.10 /bin/bash 

如果不指定一个镜像的版本标签,例如只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

获取新镜像

docker pull REPOSITORY:TAG
如:docker pull ubuntu:13.10

查找镜像
第一种方法是在docker hub网站上找:https://hub.docker.com/
第二种方法是使用docker search命令来搜索

如我们需要一个httpd的镜像来作为web服务
docker search httpd

NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
httpd                                The Apache HTTP Server Project                  4294      [OK]       

列表各列说明:
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。

拖取镜像

拖取httpd镜像
docker pull httpd

拖取下来之后就可以使用这个镜像了

docker run httpd

删除镜像

删除httpd镜像
docker rmi httpd

构建镜像
构建镜像需要我们从零开始创建一个镜像,构建镜像分为手动构建和自动构建,这里我们采用Dockerfile自动构建的方式来构建镜像,因此,我们需要创建一个DockerFile文件,其中包含一组指令来告诉docker如何构建我们的镜像

创建docker使用的目录来规划存放dockerfile文件的目录(此步可忽略)
mkdir /home/docker
cd /home/docker
创建文件需要注意的是:D需要大写,当我们构建镜像的时候docker默认选取当前目录下的Dockerfile文件
[root@bogon ~]# vim DockerFile

然后在Dockerfile文件加入以下内容:

FROM    centos:6.7
MAINTAINER      Catke "catke@qq.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd catke
RUN     /bin/echo 'catke:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

Dockerfile文件参数说明:
FROM (指定基础镜像)
MAINTAINER (指定维护者信息)
RUN (在命令前面加上RUN)
ADD (COPY文件,会自动解压,无法复制tar压缩文件,从上下文目录中复制文件或者目录到容器里指定路径,同等需求下,官方推荐使用COPY来实现)
WORKDIR (设置当前工作目录,类似于cd)
VOLUME (设置卷,挂载主机目录)
EXPOSE (指定对外的端口)
CMD (指定容器启动后要干的事情)

然后我们使用Dockerfile文件,通过docker build命令来构建一个镜像

说明:-t参数后面跟着的是REPOSITORY:TAG的格式,最后的“.”不要漏了,当然你可以修改构建的位置,“.”代表的是当前目录,
[root@bogon docker]# docker build -t centos:6.7 .

可以使用docker images命令来查看当前的镜像
在这里插入图片描述
然后我们使用这个镜像来启动一个容器,并且验证我们刚刚文件里面写的创建catke用户,结果如下:
在这里插入图片描述
创建镜像
当docker镜像库中的镜像不能满足我们的需求时,我们可以通过两种方式对镜像进行修改:
1、从已经创建的容器中更新镜像,并提交这个镜像
2、使用dockerfile指令来创建一个新的镜像

设置镜像标签
以刚刚构建的镜像为例

将IMAGE ID为0fc552672063的镜像的tag设置为test(说明,一个镜像可以对应多个tag)
docker tag 0fc552672063 centos:test

在这里插入图片描述

3、容器连接

端口映射
端口映射可以使用-p或者-P参数来实现,其中,-P是容器内部端口随机映射到主机端口,-p是容器内部端口绑定到主机端口

创建一个python应用容器,并将容器内部端口随机映射到主机端口  
[root@bogon docker]# docker run -d -P training/webapp python app.py
查看容器情况
[root@bogon docker]# docker ps

在这里插入图片描述
可以看到当前容器端口9000绑定了5000端口

创建一个python应用容器,并将容器内部端口绑定映射到主机端口  
docker run -d -p 5000:5000 training/webapp python app.py
查看容器情况
docker ps

在这里插入图片描述
同样的,可以绑定ip

创建一个python应用容器,并将容器内部端口指定映射到主机端口,并绑定127.0.0.1IP  
docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py

如果要绑定udp端口,可以在端口后面加上/udp

docker run -d -p 127.00.1:5001:5000/udp training/webapp python app.py

docker容器互联

创建新的docker网络,其中-d参数指定docker网络类型,可以是bridge、overlay
docker network create -d bridge test-net
查看当前docker网络
[root@bogon docker]# docker network ls

在这里插入图片描述

运行一个容器,并使这个容器连接刚刚新建的网络  
docker run -it --name test1 --network test-net ubuntu /bin/bash

打开一个新的客户端,再运行一个容器,同样连接这个网络

再运行一个容器,并使这个容器连接刚刚新建的网络  
docker run -it --name test2 --network test-net ubuntu /bin/bash
分别在两个容器安装ping命令
apt-get update
apt install iputils-ping

在test1的容器上使用ping命令ping test2的容器
在这里插入图片描述
在test2的容器上使用ping命令ping test1的容器
在这里插入图片描述
配置DNS

docker run -it --rm host_ubuntu  --dns=114.114.114.114 --dns-search=test.com ubuntu

参数说明:
-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
--dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
--dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。

注意:如果在启动容器的时候没有指定dns信息,那么容器会默认使用主机上的/etc/resolv.conf的配置来配置DNS

4、仓库管理

docker仓库存放docker镜像的仓库,目前官方有一个公共的仓库:Docker Hub,大部分需求镜像都可以从这个镜像库上下载下来,地址是:https://hub.docker.com
基本操作:

-- 登录 
docker login   
-- 退出  
docker logout  
-- 查找镜像如sshd  
docker search sshd
-- 拉取镜像到本地  
docker pull sshd  
-- 推送镜像到Docker Hub  
docker push username/respositiry:tag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/156532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux修改密码报错‘Authentication token manipulation error‘

本次事故使用操作系统为centos7 1、报错起因&#xff1a; 利用chage设置root用户密码定期更换后&#xff0c;到期之后登录系统&#xff0c;输入密码之后&#xff0c;提示要改密码&#xff0c;输入新密码之后&#xff0c;报错 ‘Authentication token manipulation error’ &a…

【k8s系列】gvisor安装与containerd集成

文章目录安装与containerd集成下发runtimeclass资源修改containerd配置文件准备pod的yaml文件参考资料author: ningan123date: ‘2023-01-11 21:23’updated: ‘2023-01-11 21:31’安装 安装地址&#xff1a;Installation - gVisor ARCH$(uname -m)URLhttps://storage.googlea…

Gotify <2.2.3 存在反射型 XSS 漏洞(MPS-2023-0815)

漏洞描述 Gotify 是 Go 语言开发的开源组件&#xff0c;用作于发送和接收消息的服务器。 由于 2.2.3 之前版本的 Gotify 使用具有反射型 XSS 漏洞版本的 swagger-ui 生成文档&#xff0c;当用户访问 Gotify /docs 页面时存在反射型 XSS 漏洞。 攻击者可诱导 Gotify 用户点击…

【学习笔记】【Pytorch】四、torchvision中的数据集使用

【学习笔记】【Pytorch】四、torchvision中的数据集使用学习地址主要内容一、datasets模块介绍二、datasets.CIFAR10类的使用1.使用说明2.代码实现学习地址 PyTorch深度学习快速入门教程【小土堆】. 主要内容 一、datasets模块介绍 介绍&#xff1a;一些加载数据的函数及常用…

P6:DataLoader的使用

1、准备数据集&#xff08;测试集&#xff09; import torchvisiontest_data torchvision.datasets.CIFAR10(./dataset, trainFalse, transformtorchvision.transforms.ToTensor()) 注意数据集中的图片是PIL的格式&#xff0c;需要格式转换。 2、使用DataLoader from torch…

HBase数据库总结(一)

1、 HBase的特点是什么&#xff1f;HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统&#xff0c;HBase不同于一般的关系数据库&#xff0c;它是一个适合于非结构化数据存储的数据库。1&#xff09;大&#xff1a;一个表可以有数十亿行&#xff0c;上百万列2&…

测试开发基础|一文搞定计算机网络(一)

计算机网络知识对测试人员来说是非常重要的基础技能。无论是在平时测试工作中&#xff08;比如接口测试&#xff09;&#xff0c;还是测试技术面试时&#xff0c;都会经常涉猎。很多基础薄弱的同学靠临时抱佛脚突击搜索学习&#xff0c;对系统知识和重点难点的理解总是不够透彻…

认证授权-SpringSecurity

认证授权-SpringSecurity 1. 认证授权概述 1.1 认证授权概念 1.1.1 认证 在互联网中&#xff0c;我们每天都会使用到各种各样的 APP 和网站&#xff0c;在使用过程中通常还会遇到需要注册登录的情况&#xff0c;输入你的用户名和密码才能正常使用&#xff0c;也就是说成为这…

uniapp引入vantweapp踩坑笔记

vue-cli创建uniapp项目引入vantweapp踩坑笔记 uni-app中引入vantweappvue-cli创建uniapp项目引入vantweapp踩坑笔记一、环境准备二、项目搭建三、引入vant第一种方式第二种方式一、环境准备 我用的环境分别是 软件名称版本号下载命令\链接检查是否成功卸载命令Vue-clivue/cli…

JavaScript中的重要概念

JavaScript中的重要概念 1、标识符 标识符&#xff08;Identifier&#xff09;就是名字。JavaScript 中的标识符包括变量名、函数名、参数名、属性名、类名等。 合法的标识符应该注意以下强制规则&#xff1a; 第一个字符必须是字母、下划线&#xff08;_&#xff09;或美元…

发表计算机SCI论文,需要经历哪些阶段? - 易智编译EaseEditing

想在SCI期刊上发表一篇属于自己的论文一定是要经历四个阶段&#xff1a;论文选题、论文写作、期刊投稿和修稿反馈。 1.论文选题&#xff1a;前面已经说过在SCI期刊上发表论文是比较有难度的&#xff0c;是因为SCI期刊通常要求所接收稿件的选题具有较高的创新性和新颖性。 所以…

马蹄集 单位矩阵

单位矩阵 难度&#xff1a;白银 0时间限制&#xff1a;1秒 巴占用内存&#xff1a;64M 输入3X3的整型矩阵A,判断是否为单位矩阵&#xff0c;输出YES或者NO。 格式 输入格式&#xff1a;输入矩阵&#xff0c;空格分隔 输出格式&#xff1a;输出YES或者NO #include<bits/stdc.…

第09讲:Docker镜像制作

我们可以在容器去部署应用&#xff0c;然后把容器转为镜像给测试人员用&#xff0c;由于镜像是不能直接传输的&#xff0c;所以我们将新的镜像转成压缩文件&#xff0c;给测试人员。测试人员把我们的压缩文件还原成一个新的镜像。 一、Linux文件系统组成 Linux文件系统组成由…

mysql快速生成100W条测试数据(2)公司员工信息

首先这个就是我们需要生成的数据类型&#xff0c;这种只是我们用于测试以及学习时候使用&#xff0c;正常来讲公司架构会比这个要复杂的多 #mermaid-svg-fxDINAOpv25PiDLG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid…

数据库,计算机网络、操作系统刷题笔记31

数据库&#xff0c;计算机网络、操作系统刷题笔记31 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle…

SpringBoot中JPA的基本使用

1、Jpa 是什么 JPA顾名思义就是Java Persistence API的意思&#xff0c;是JDK 5.0注解或XML描述对象&#xff0d;关系表的映射关系&#xff0c;并将运行期的实体对象持久化到数据库中。 2、优势 2.1标准化 JPA 是 JCP 组织发布的 Java EE 标准之一&#xff0c;因此任何声称符…

美国空运专线 美国空运专线时效多久

美国空运专线是国内到美国的优势渠道&#xff0c;为跨境卖家专门研发的货物海关清关快递/卡车配送的专线运输服务&#xff0c;范畴覆盖全部美国地区&#xff0c;各路经安排发货次数更高一些&#xff0c;时效更有保障。一、美国空运专线是什么 美国空运专线是专门将货物运送到美…

开学季如何运营跑腿系统?

现在学生们都在放寒假中&#xff0c;再过一段时间就又到开学季了&#xff0c;开学季是运营好跑腿项目的关键时刻&#xff0c;刚开学的时候如何让同学继续使用呢&#xff1f;这时候我们可以采取一些优惠政策来吸引同学&#xff0c;我们可以在后台设置一些优惠券&#xff0c;满减…

nacos1.4.0与seata搭建实现分布式物

下载nacos https://github.com/alibaba/nacos/tagshttps://github.com/alibaba/nacos/releases/tag/1.4.0下载seata https://github.com/seata/seata/releases/tag/v1.4.0注意&#xff1a;最好使用相同版本&#xff0c;不然出问题会找很久的 创建seata数据库 1.创建数据库导…

Termius ssh ubuntu、kali、centos

目录Termius ssh ubuntu、centos、kali一、Ubuntu开启ssh服务及允许root登录1、Ubuntu默认没有安装ssh的server&#xff0c;需要安装2、允许远程使用root账号ssh连接本机修改/etc/ssh/sshd_config文件3、需要重启系统或者ssh服务&#xff0c;刚安装完ssh-sserver服务默认开启4、…