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

现在,随便找个用户试试吧。

二、容器启动、改名:

image.png
这里的—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命令可以查看容器的日志。很多时候你可以会发现容器莫名其妙的挂了,查看下日志去吧!
命令格式:

  1. $ docker logs [OPTIONS] CONTAINER
  2. Options:
  3. --details 显示更多的信息
  4. -f, --follow 跟踪实时日志
  5. --since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
  6. --tail string 从日志末尾显示多少行日志, 默认是all
  7. -t, --timestamps 显示时间戳
  8. --until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

例子:
查看指定时间后的日志,只显示最后100行:

  1. $ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID

查看最近30分钟的日志:

  1. $ docker logs --since 30m CONTAINER_ID

查看某时间之后的日志:

  1. $ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID

查看某时间段日志:

  1. $ 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同级目录

image.png
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:查看是否正确开启,然后进浏览器去请求数据

image.png

&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的加速仓库。
image.png
解决办法:把这个仓库改回正确的仓库源,可以让docker去访问。
我在思考一个问题,假如没有网的时候,我的docker又重新启动,那么会不会也会因为这个仓库源报错。