centos7使用docker记录,构建自己的基础镜像,镜像中安装redis,

公司服务器已经安装docker,

1,执行命令docker version报错

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

在这里插入图片描述
原因:
docker service未启动

执行命令

service docker start

在这里插入图片描述
选择对应的用户之后显示授权通过,执行docker ps命令依然报错

Got permission denied while trying to connect to the Docker daemon socket

切换到sudo执行命令 正常,
原因是docker进程使用 Unix Socket 而不是 TCP 端口。而默认情况下,Unix socket 属于 root 用户,因此需要 root权限 才能访问。

sudo docker ps
sudo docker version

在这里插入图片描述
至于里面的各个含义,可以参考这儿

2,要把自己的项目放进docker,需要构建自己项目的环境,相当于在一个单独隔离的空间中装一个centos系统+常用的各种命令+项目运行需要的包

手把手教你用 Docker 构建自己的 CentOS 基础镜像

2.1具体执行命令,编写Dockerfile

mkdir docker
cd docker
touch Dockerfile

然后pycharm,新建一个文件,命名Dockerfile。打开Dockerfile,编写

FROM    centos:centos7.1.1503
USER    root
#RUN  curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN yum swap -y fakesystemd systemd && yum clean all && \
    yum update -y  && yum clean all && \
    yum update -y && yum install telnet -y
RUN yum install -y curl wget tar bzip2 unzip vim-enhanced passwd sudo yum-utils hostname net-tools rsync man && \
    yum install -y gcc gcc-c++ git make automake cmake patch logrotate python-devel libpng-devel libjpeg-devel && \
    # -O 将下载的文件存放到指定的文件夹下,同时重命名下载的文件
    curl -o ~/miniconda.sh -O https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
    chmod +x ~/miniconda.sh && \
    ~/miniconda.sh -b -p /opt/conda && \
    rm -rf ~/miniconda.sh
ENV PATH /opt/conda/bin:$ PATH

报错/bin/sh xxxx returned a non-zero code: 1
这种错误检查一下dockerfile是不是写错了,我的是两条RUN命令中间多了一个 && \ (上面是最终执行正确的Dockerfile版本)

2.2编写完之后,构建镜像

在Dockerfile所在的目录下执行命令
sudo docker build -t cenmiconda/centos:7.1 .
解释:最后的cenmiconda/centos:7.1是镜像的标签,.表示当前目录,如果是执行其他目录下的Dockerfile,则切换为Dockerfile所在的目录。

执行完之后出现下面的内容,表示创建镜像成功

Successfully built 6b843a053081
Successfully tagged cenmiconda/centos:7.1

2.3根据镜像,创建容器

创建容器,未指定端口映射

sudo docker run -d --name nttcenbase cenmiconda/centos:7.1
sudo docker ps -a     
CONTAINER ID        IMAGE                   COMMAND                   CREATED             STATUS                           PORTS                                        NAMES
2de2a89864ae        cenmiconda/centos:7.1   "/bin/bash"               8 seconds ago       Exited (0) 6 seconds ago 

镜像创建容器后台运行成功以后,发现容器没有预期中的后台运行,而是直接挂掉了,docker ps -a发现容器已经运行结束了
后来发现原因是 Docker容器后台运行,就必须有一个前台进程!容器运行的命令如果不是那些一直挂起的命令(比如运行top,ping),就是会自动退出的。
最简单的方法就是 如:sudo docker run -d --name nttcenbase cenmiconda/centos:7.1 改成 sudo docker run -dit --name nttcenbase cenmiconda/centos:7.1就行了,或改成sudo docker -d --name nttcenbase cenmiconda/centos:7.1 tail -f /dev/null

https://blog.csdn.net/jamesdodo/article/details/106075462

然后删除容器,重新执行run

sudo docker rm -f nttcenbase
sudo docker -dit --name nttcenbase cenmiconda/centos:7.1

执行命令进入启动的容器
-it 代表交互式启动,nttcenbase为容器名称,/bin/bash为启动后交互命令的方式

sudo docker exec -it nttcenbase /bin/bash

进入容器后退出

exit

我们可以通过inspect查看一下容器的网络信息

sudo docker network inspect bridge

在这里插入图片描述
通过宿主机访问一下容器IP地址及端口,可以ping通

ping 172.17.0.2

3.容器内安装redisCentOS7系统安装配置Redis

参考这儿

4,解决容器启动时间错误的问题

在容器中执行下面命令,链接宿主机localtime

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jaffe—fly

古人学问无遗力,少壮工夫老始成

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值