https://www.yuque.com/u8076305/rd1a52/rdhggs#b59ce77e
用的是别人的!
一、让普通用户可以执行docker命令:
以前写过一篇博客介绍过怎样允许非root用户来访问Docker,当时的方法是将用户加入的docker组里,这样做安全是安全了,但是实在是太麻烦了,对于我这种安全要求不太高的情况,实在是不合适。于是想能不能有啥办法一劳永逸的解决这个问题。你还别说,还真有办法,你们说神奇不。呵呵,就是这么神奇。
解决办法就是修改 /var/run/docker.sock 文件的权限,让普通用户也可以访问。
先查看一下默认这个文件的权限是啥
$ sudo ls -al /var/run/docker.sock srw-rw—— 1 root root 0 Feb 13 02:14 /var/run/docker.sock
修改文件权限
sudo chmod 666 /var/run/docker.sock
修改后,再查看一下这个文件的权限
$ sudo ls -al /var/run/docker.sock srw-rw-rw- 1 root root 0 Feb 13 02:14 /var/run/docker.sock
二、容器启动、改名:
这里的—name 指定容器的名字,后面如果是系统重新等情况,使用docker container start <内容名字>重启启动容器。
docker container start mysql5.6
修改下容器的名字:
docker container rename <容器id>
docker container rename 04e3f7eb69b4 myredis
查看容器对外暴露的端口:
docker container port <容器名字>
docker container port mymysql
3306/tcp -> 0.0.0.0:1234 容器mysql对外暴露的端口是1234端口
三、查看docker日志
通过docker logs命令可以查看容器的日志。很多时候你可以会发现容器莫名其妙的挂了,查看下日志去吧!
命令格式:
$ docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
例子:
查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
查看最近30分钟的日志:
$ docker logs --since 30m CONTAINER_ID
查看某时间之后的日志:
$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
查看某时间段日志:
$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
参考:
https://segmentfault.com/a/1190000010086763
四、将tornado项目打包成docker
0:将项目放到和Dockerfile同级目录
vim Dockerfile
FROM python:3.8 WORKDIR /dky COPY /dky_yangyazi /dky ENV NAME World RUN pip install -r requirements.txt
CMD [“python”,”application.py”]
1:bulid成镜像文件
flask@ubuntu:~/project$ docker build -t dky2.0 . Sending build context to Docker daemon 18.94MB
Step 1/6 : FROM python:3.8
—-> b0358f6298cd
Step 2/6 : WORKDIR /dky
—-> Running in bb64f5fe427d
Removing intermediate container bb64f5fe427d
—-> 3fd2cc7cb1e0
2:创建容器
docker run -d —name dky3 -p 8184:8183 dky1
注意这里的8184:8183 8183是tornado对外是哪个端口就写哪个,
比如flask默认是5000 那么这里就应该是 8184:5000
注意点:
如果是创建内容出错我们可以进入到容易,然后手动去调试看看是哪里出错
docker run -it dky2.0 /bin/bash ##创建容器然后进入到内容
docker attach 52995d8a3ccb ##进入一个正在运行的容器
3:查看是否正确开启,然后进浏览器去请求数据
&docker错误&
&1:安装方式和前面的一样都是官网上的,然后虚拟器重启之后发现起不来了!
systemctl start docker
flask@ubuntu:~/Desktop$ sudo systemctl start docker Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.
journalctl -xe
— The job identifier is 6949 and the job result is done. Mar 10 18:33:02 ubuntu systemd[1]: docker.service: Start request repeated too quickly. Mar 10 18:33:02 ubuntu systemd[1]: docker.service: Failed with result ‘exit-code’.
— Subject: Unit failed
— Defined-By: systemd
— Support: http://www.ubuntu.com/support
—
— The unit docker.service has entered the ‘failed’ state with result ‘exit-code’.
Mar 10 18:33:02 ubuntu systemd[1]: Failed to start Docker Application Container Engine.
— Subject: A start job for unit docker.service has failed
— Defined-By: systemd
— Support: http://www.ubuntu.com/support
—
— A start job for unit docker.service has finished with a failure.
—
— The job identifier is 6949 and the job result is failed.
Mar 10 18:33:02 ubuntu systemd[1]: docker.socket: Failed with result ‘service-start-limit-hit’.
— Subject: Unit failed
— Defined-By: systemd
— Support: http://www.ubuntu.com/support
—
— The unit docker.socket has entered the ‘failed’ state with result ‘service-start-limit-hit’
一直找问题,后面发现我改过了docker的加速仓库。
解决办法:把这个仓库改回正确的仓库源,可以让docker去访问。
我在思考一个问题,假如没有网的时候,我的docker又重新启动,那么会不会也会因为这个仓库源报错。