【docker】啥啥不会就开工的心酸历程

提示:就是记录下过程,以下内容都是基操,有问题的确认下版本,目录等因素。


前言

因为甲方要求使用容器化部署,没有互联网环境又没有私有容器云环境,所以只能弄一台linux主机最小成本实现容器化部署。故事就要开始了。


提示:以下是本篇文章正文内容,下面案例可供参考

一、怎样无网络安装docker和docker-compose(离线安装)?

1.Linux主机准备(Centos7.6)

内核版本3.1
内核查看命令: uname -a

2.下载安装包

docker下载地址:https://download.docker.com/linux/static/stable/x86_64/
我用的是20.10.9
dockers-compose下载地址:https://github.com/docker/compose/releases
我用的是2.2.3 docker-compose-linux-x86_64

3.上传到Linux主机

使用xshell或者finalshell,在这里推荐下finalshell,国产免费:https://www.hostbuf.com/?from=about。

4.先解压docker压缩包

tar -xvf docker-20.10.9.tgz

5.拷贝到usr/bin目录

# cp docker/* /usr/bin/

6.将docker注册服务

编辑注册服务文件

# vi /usr/lib/systemd/system/docker.service

内容如下,注意ExecStart目录

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

7.重新载入并启动docker服务

# systemctl daemon-reload
# systemctl start docker 

8.安装docker-compose

# sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
# sudo chmod +x /usr/local/bin/docker-compose
# docker-compose -v

二、docker简单应用

balabalabala等后期整理ing

为了搭建一个基本符合应用场景的实例环境,我需要用到MSSQL、redis、tomcat,如前言所说都需要在容器内运行。在下载镜像时我使用了一台可以接入互联网的主机,并且安装了docker,当然也可以使用之前装的docker环境去接入互联网并下载。

1.下载镜像

pull命令拉取镜像,通过 https://hub.docker.com/ 页面中的Search框,可以快速找到我要的docker容器;
在这里插入图片描述
在检索时还可以选择左侧官方镜像、运行操作系统、架构等选项筛选结果。
在这里插入图片描述
进入想要的程序详细页面后可以通过点击TAG标签来选择程序的版本;
在这里插入图片描述
诶,这就是下载命令了,在你接入互联网并且安装了docker的主机上运行这个命令就可以下载镜像了
在这里插入图片描述
在这里我分别下载了如下几个镜像。
下载MSSQL2019镜像

# docker pull mcr.microsoft.com/mssql/server:2019-latest

下载redis6.2.6镜像

# docker pull redis:6.2.6

下载tomcat9-jdk8镜像

# docker pull tomcat:9.0.60-jdk8

2.转移镜像到没有互联网的docker主机

在这里通过docker save 将下载好的容器打包tar,然后通过shell工具或者U盘拷贝到无互联网环境的主机即可。

# docker save -o sqlsever2019.tar mcr.microsoft.com/mssql/server:2019-latest

# docker save -o redis6.2.6.tar redis:6.2.6

# docker save -o tomcat9.0.60-jdk8.tar tomcat:9.0.60-jdk8

备份到无互联网的docker主机后,使用docker load 来将打包的tar再加载到docker主机镜像中,这里就不逐个写了。

# docker load < *********.tar

load完的镜像通过docker images就可以查看了

# docker  images

3.运行容器(看看能运行起来不)

因为啥啥都不会,还是先将容器运行起来,看看服务正常与否;
参照了微软官网文档:https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash

运行MSSQL

这里docker使用了如下几个参数:
-e 设置环境变量,后面那环境变量是MSSQL官方文档要加的,应该是接受许可和设置初始化sa密码;
-p 映射端口,前面是docker主机的后面是容器内的;
-d 使用镜像;
-v 挂载docker主机本地路径到容器(为了实现数据持久化);
–privileged=true 说是给容器内的root拥有真正的root权限,应该可以不加。

# docker run --name testmssql \
-e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD= balabalabala \
-p 1433:1433 \
--privileged=true \
-v /home/root/docker-volumes/mssql/data:/var/opt/mssql/data \
-v /home/root/docker-volumes/mssql/log:/var/opt/mssql/log \
-v /home/root/docker-volumes/mssql/secrets:/var/opt/mssql/secrets \
-d mcr.microsoft.com/mssql/server:2019-latest

运行redis

这里运行的redis容器时其实我没有配置文件,在后面的步骤里我们使用dockerfile打包镜像将配置文件塞到容器里,即便没有配置文件,redis也可以使用默认配置正常运行(6379端口,无密码)。
在这 插入一个小插曲,你可以通过docker logs 容器ID 来查看容器的日志,可以看到redis没有找到配置文件并且使用了默认配置的警告日志。

# docker run --name redis \
-p 6379:6379 \
-d redis:6.2.6 redis-server /etc/redis.conf

运行tomcat

在这里运行tocmat容器时我在docker主机 /home/root/docker-volumes/web目录下放了一个小应用,因为使用了挂载的原因,这样tomcat启动后我的小应用就可以被访问了,注意这里我改变了端口,也就是访问tocmat应用时要使用docker主机“http://IPaddress:8805\应用名” 来访问。

# docker run --name tomcat \
-v /home/root/docker-volumes/web:/usr/local/tomcat/webapps \
-p 8805:8080 \
-d tomcat:9.0.60-jdk8

4.DockerFile初体验

在运行上一小节运行redis那部分提到了DockerFile,而上面我的各个容器也可以正常运行,并且各项服务均可以正常访问了。所以开始下一部分的内容重新打包镜像,也就是将官网的镜像加入一些改动,再想使用有自己配置的容器时,运行新的镜像就可以了。

以redis为例构建一个新的镜像

首先在docker主机任意目录创建个DockerFile文件,然后再从官网redis包里抽出一个redis.conf文件。
github用法和dockerhub差不多,就检索呗,然后找到对应的releases版本,总之我下载到了一个满满登登配置的redis.conf,并且简单修改了下requirepass等配置并且并且注释了bind行,为了加密码验证和不绑定IP运行。
建立dockerfile文件

# touch DockerFile

然后将redis.conf放到和dockerfile文件相同目录

# mv redis.conf /root/redis/redis.conf 

重点来了,编辑dockerfile文件

# vi DockerFile

FROM 后面的是我redis镜像的ID;
MAINTAINER 就是标注下创建文件人的信息;
COPY 将docker主机当前目录的内容,复制到容器指定目录下;
CMD 执行 redis-server程序时使用指定配置文件。
内容如下:

FROM 0e403e3816e8
MAINTAINER muros<muros@foxmail.com>
COPY redis.conf /etc/redis/redis.conf
CMD [ "redis-server", "/etc/redis/redis.conf" ]

构建完的镜像通过docker images就可以查看了

# docker  images

总结

1、在load tar时出现报错问题,提示了找不到****路径,很有可能是tar包不完整导致,重新上传文件尝试解决。
2、在dockerfile构建脚本中 FROM 也可以是镜像名称。

初次编辑于2022年3月30日
2022年3月31日加入简单的docker应用部分。
下次计划增加简单的docker compose应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值