Docker安装、常用命令以及常规软件安装

目录

一、Docker安装

二、阿里云镜像加速

三、Docker常用命令

1.启动类命令

2.镜像命令

 3.容器命令

4.Docker镜像commit操作、上传阿里云、私有库

四、Docker常规软件安装

1.安装tomcat

 2.安装mysql(5.7版本)

 3.安装redis

4.安装Nginx


一、Docker安装

        Docker 必须部署在Linux内核的系统上。

        docker官网:http://www.docker.com

        Docker Hub官网: https://hub.docker.com

前提条件:

        目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.5

 1.确定你是CentOS7及以上版本。

        查看内核:在Linux中使用命令查看内核版本号、硬件架构、主机名称和操作系统类型等。

cat /etc/redhat-release
uname -r

2.卸载旧版本。

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

 3.yum安装gcc相关。

        首先保证linux系统可以连接外网。

         然后安装gcc。

yum -y install gcc
yum -y install gcc-c++

 4.安装需要的软件包。

yum install -y yum-utils

 5.设置stable镜像仓库(使用中国大陆阿里云仓库)。

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 6.更新yum软件包索引。

yum makecache fast

7.安装DOCKER CE

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

 8.启动docker。

systemctl start docker

 9.测试。

docker version
docker run hello-world

 Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:53f1bbee2f52c39e41682ee1d388285290c5c8a76cc92b42687eecf38e0af3f0
Status: Downloaded newer image for hello-world:latest

        上面的意思是:本地没有hello-world镜像,需要从官网远程库拉取最新的hello-world镜像。

        此时,docker就安装成功了。

10.卸载。

systemctl stop docker 
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

二、阿里云镜像加速

        打开阿里云的镜像加速器,网址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

         进入目录

        粘贴脚本直接执行 

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://m515cyl3.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload
systemctl restart docker
docker run hello-world

三、Docker常用命令

1.启动类命令

        启动docker: systemctl start docker

        停止docker: systemctl stop docker

 使用停止docker命令时,可能会报如下错误:

Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

这是因为:除了docker.service单元文件,还有一个docker.socket单元文件…docker.socket这是用于套接字激活。
该警告意味着:如果你试图连接到docker socket,而docker服务没有运行,系统将自动启动docker。

解决办法(选一即可):

1.删除/lib/systemd/system/docker.socket文件夹

rm -rf /lib/systemd/system/docker.socket

2.关闭自动启动服务

sudo systemctl stop docker.socket

        重启docker: systemctl restart docker

        查看docker状态: systemctl status docker

        开机启动: systemctl enable docker

        查看docker概要信息: docker info

        查看docker总体帮助文档: docker --help

        查看docker命令帮助文档: docker 具体命令 --help

2.镜像命令

        列出本地主机上的镜像:docker images

 REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

 同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

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

        查找镜像:docker search 某个XXX镜像名字

        拉取镜像:docker pull 某个XXX镜像名字

         查看镜像/容器/数据卷所占的空间:docker system df 

         删除镜像:docker rmi 某个XXX镜像名字ID

        删除全部镜像:docker rmi -f $(docker images -qa)

 3.容器命令

前提条件:

        有镜像才能创建容器,这是根本前提(下载一个ubuntu镜像演示)

docker pull ubuntu

         

        新建+启动容器(前台交互式容器):docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

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

        在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的后台运行模式。 

        启动容器(启动守护式容器:docker run -d 容器名

        下面分别以redis 前后台启动演示为例:

         上图为redis的前台启动,只要关闭窗口redis就直接关闭了,我们在现实中更多使用的是后台守护式启动。

         进入正在运行的容器并以命令行交互:docker exec -it 容器ID bashShell

                                                                        docker attach 容器ID

attach 直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。

exec 是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。

         推荐大家使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。

        列出当前所有正在运行的容器:docker ps

OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。 

         

        退出容器: 1. run进去容器,exit退出,容器停止  2. run进去容器,ctrl+p+q退出,容器不停止

       启动已停止运行的容器:  docker start 容器ID或者容器名

        重启容器:docker restart 容器ID或者容器名

        停止容器:docker stop 容器ID或者容器名

        强制停止容器:docker kill 容器ID或容器名

        删除已停止的容器:docker rm 容器ID        

                删除多个已停止的容器:docker rm -f $(docker ps -a -q)         

                                                     docker ps -a -q | xargs docker rm

        查看容器日志:docker logs 容器ID

        查看容器内运行的进程:docker top 容器ID

        查看容器内部细节:docker inspect 容器ID

        从容器内拷贝文件到主机上:docker cp  容器ID:容器内路径 目的主机路径

4.Docker镜像commit操作、上传阿里云、私有库

        案例演示ubuntu安装vim

        1.原始的默认Ubuntu镜像是不带着vim命令的

         2.外网连通的情况下,安装vim

apt-get update
apt-get -y install vim

         3.安装完成后,commit我们自己的新镜像

        本地镜像构造完成,可以把本地构建的镜像发布到阿里云上面,也可以发布到私有库中,下面分别展开进行介绍。

        4.本地镜像发布到阿里云 。

       4.1 阿里云开发者平台:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

选择控制台,进入容器镜像服务->选择个人实例->命名空间->仓库名称->进入管理界面获得脚本

         命名空间设置好如下:

        4.2 设置镜像仓库。

         点击下一步后,选择本地仓库,点击创建仓库镜像,就会出下如下界面。

         4.3将镜像推送到阿里云registry(每个人的不一样,查看自己上图中方框中的命令)

$ docker login --username=朂後哋箹萣亮 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/atguiguxy/myubuntu:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/atguiguxy/myubuntu:[镜像版本号]

         4.4将阿里云上的镜像下载到本地

$ docker pull registry.cn-hangzhou.aliyuncs.com/atguiguxy/myubuntu:[镜像版本号]

        5.本地镜像发布到私有库。

        5.1下载镜像Docker Registry。

docker pull registry 

         5.2运行私有库Registry。

docker run -d -p 5000:5000  -v /zcluse/myregistry/:/tmp/registry --privileged=true registry

         5.3案例演示创建一个新镜像,ubuntu安装ifconfig命令

apt-get update
apt-get install net-tools

         安装完成后,commit我们自己的新镜像

docker commit -m="ifconfig cmd add" -a="zcl" 04fca349d9f8 zclubuntu:1.2

         5.4curl验证私服库上有什么镜像,将新镜像zzyyubuntu:1.2修改符合私服规范的Tag。

         5.5修改配置文件使之支持http,push推送到私服库。

vim /etc/docker/daemon.json

修改内容如下: 

         5.6curl验证私服库上有什么镜像,pull到本地并运行。

四、Docker常规软件安装

1.安装tomcat

1.1 docker hub上面查找tomcat镜像。

docker search tomcat

 1.2 从docker hub上拉取tomcat镜像到本地

docker pull tomcat

 1.3 使用tomcat镜像创建容器实例(也叫运行镜像)

docker run -d -p 8080:8080 --name t1 tomcat

 1.4 访问tomcat首页。

        会出现404错误。

         解决办法:把webapps.dist目录换成webapps

         重新访问网址:http://localhost:8080/

注:我们使用最新版tomcat需要修改配置,过于麻烦,并且在实际生产中用户到最新的版本,建议安装下面版本。

docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

         此时不需要修改任何配置文件,直接可以访问到官网。

 2.安装mysql(5.7版本)

简单版:(建议看实战版)

2.1 下载mysql5.7

docker pull mysql:5.7

2.2 使用mysql镜像

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1171127310 -d mysql:5.7

如果虚拟机之前装过mysql,这时docker命令就会报错,显示端口占用。

         此时我们只需要把虚拟机中的mysql进程关闭即可。

systemctl stop mysqld

         重新输入命令,就可以启动成功。

         使用navicat连接。

       

存在问题:插入中文会报错,插不进去。

 执行命令:

SHOW VARIABLES LIKE 'character%';

        并且数据库中数据没有备份,当容器删除后所有的数据都随之删除了,不符合我们实战的要求,容器数据卷可以解决这个问题,所以小编这里建议使用实战版安装mysql。 

 实战版:

        新建容器实例

docker run -d -p 3306:3306 --privileged=true -v /zcluse/mysql/log:/var/log/mysql -v /zcluse/mysql/data:/var/lib/mysql -v /zcluse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=1171127310  --name mysql mysql:5.7

 解决中文乱码问题。

         宿主机中存在备份文件,当删除mysql后,重新启动,仍然可以显示上次操作的数据。

 3.安装redis

简单版:

docker images redis
docker run -d -p 6379:6379 redis:6.2.6
docker exec -it 2a1da9accddb /bin/bash
redis-cli

实战版:

3.1 在CentOS宿主机下新建目录/app/redis

mkdir -p /app/redis

  将一个redis.conf文件模板拷贝进/app/redis目录下,并且修改如下内容:

 3.2 启动redis

docker run  -p 6379:6379 --name myr3 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.2.6 redis-server /etc/redis/redis.conf

docker exec -it myr3 /bin/bash
redis-cli

 3.3 证明docker启动使用了我们自己指定的配置文件 

4.安装Nginx

        这使用的是Docker轻量级可视化工具Portainer进行安装,参考如下博客。

Docker轻量级可视化工具Portainer_朂後 哋箹萣的博客-CSDN博客

### 常用 Docker 容器内命令 #### 查看容器内的进程 为了查看当前Docker容器中的活动进程,可以使用`top`命令。此命令会显示实时更新的活跃进程列表及其资源消耗情况。 ```bash top ``` 对于更详细的输出,可以选择带有额外参数的形式: ```bash ps aux ``` 这两种方法均能有效地监控容器内部运行的任务状况[^2]。 #### 文件系统操作 在容器环境中,文件系统的浏览与管理同常规Linux环境相似。例如,利用`cd`改变工作目录;通过`ls`列出指定路径下的文件和子目录信息。 ```bash cd /path/to/directory ls -la ``` 这些基础指令有助于理解并导航于容器的文件结构之中。 #### 网络配置查询 当涉及到网络设置时,`ifconfig`或较新的`ip addr show`可用于展示网卡详情及IP地址分配等重要资料。 ```bash ifconfig # 或者 ip addr show ``` 上述两条语句能够帮助诊断连接问题或是确认网络接口的状态。 #### 日志读取 针对应用程序的日志记录审查,通常采用`cat`、`less`或者`tail`工具来访问日志文件的内容。特别是后者支持持续跟踪最新的日志条目,非常适合调试目的。 ```bash tail -f /var/log/application.log ``` 这使得管理员可以在不影响服务正常运作的前提下监视错误消息或其他关键事件的发生过程。 #### 资源利用率分析 除了基本的操作之外,有时还需要评估CPU、内存等方面的占用水平。此时,像`free -m`用于检查可用RAM空间,而`df -h`则负责汇报磁盘剩余容量。 ```bash free -m df -h ``` 以上两个实用程序提供了关于硬件资源健康度的关键见解,便于及时发现潜在瓶颈所在之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值