what docker is? https://www.docker.com/what-docker

一: archlinux 安装docker:

我之前装了一个, 然后好久没用, 今天发现不能用了, 启动不了. 于是重装:

1. pacman -Rsun docker

2. rm -rf /var/lib/docker

/var/lib/docker 目录下面是所以的image和containner.  是他们的原因导致了不能启动.  深层原因不知道, 反正删掉了.

3.  pacman -S docker

二:  配置

1.  建立一个用户组docker, 把tong用户加入docker组.

2.  systemctl start docker.service

3.  systemctl enable docker.service

三:  安装image

1.  docker pull debian

2.  docker pull centos:7

 所有可以用这个命令的image都在这个地方 https://hub.docker.com/explore/

四: 运行

/home/tong [tong@T7] [:]
> docker run hello-world
/home/tong [tong@T7] [:]
> docker run -it centos
/home/tong [tong@T7] [:]
> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a467c1d4756 centos "/bin/bash" seconds ago Exited () seconds ago reverent_wescoff
b8fd51d75418 hello-world "/hello" About a minute ago Exited () About a minute ago boring_sammet

--------------------------------------------  我是不太会分割线  ------------------------------------------

五:  剩下的就不太会了, 看文档:

https://docs.docker.com/get-started/

六: 亲手做一个app

https://docs.docker.com/get-started/part2/#apppy

/home/tong/docker/test [tong@T7] [:]
> ls
app.py Dockerfile requirements.txt
/home/tong/docker/test [tong@T7] [:]
> docker build -t friendlyhello .
/home/tong/docker/test [tong@T7] [:]
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
friendlyhello latest 57de680506f7 seconds ago 194MB
/home/tong/docker/test [tong@T7] [:]
> docker run -p : friendlyhello
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
/home/tong/docker/test [tong@T7] [:]
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf3a6159a05f friendlyhello "python app.py" minutes ago Up minutes 0.0.0.0:->/tcp elegant_shaw /home/tong/docker/test [tong@T7] [:]
> docker stop bf
bf
/home/tong/docker/test [tong@T7] [:]
> cat app.py
from flask import Flask
from redis import Redis, RedisError import os
import socket redis = Redis(host="redis", db=, socket_connect_timeout=, socket_timeout=) app = Flask(__name__) @app.route("/")
def hello():
try:
visits = redis.incr("counter")
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>" html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", "world"),
hostname=socket.gethostname(), visits=visits) if __name__ == "__main__":
app.run(host='0.0.0.0', port=)

app.py

/home/tong/docker/test [tong@T7] [:]
> cat Dockerfile
FROM python:2.7-slim
WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
EXPOSE
ENV NAME World
CMD ["python", "app.py"]

Dockerfile

/home/tong/docker/test [tong@T7] [:]
> cat requirements.txt
Flask
Redis

requirements.txt

七, 把六定制成一个服务

1.  安装 docker-compose

2.  写一个yaml

/home/tong/docker/test [tong@T7] [:]
> cat test.yml
version: ""
services:
web:
image: friendlyhello:latest
deploy:
replicas:
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- webnet
networks:
webnet:

test.yaml

3.  docker swarm init

4.  deploy

/home/tong/docker/test [tong@T7] [:]
> docker stack deploy -c test.yml testapp
Creating network testapp_webnet
Creating service testapp_web

5.  ps

/home/tong/docker/test [tong@T7] [:]
> docker stack ps testapp

6.  take down

/home/tong/docker/test [tong@T7] [:]
> docker stack rm testapp
Removing service testapp_web
Removing network testapp_webnet

7.  swarm leave

/home/tong/docker/test [tong@T7] [:]
> docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
b22in8aax0kpy3x07n0comw1x * T7 Ready Active Leader /home/tong/docker/test [tong@T7] [:]
> docker swarm leave --force
Node left the swarm.

八, docker与host共享存储

https://docs.docker.com/engine/admin/volumes/

九, 作为一个chroot, 我是这样用的

1. 创建

/home/tong/docker/test [tong@T7] [:]
> docker run -d -it --mount type=bind,source=/home/tong/Src,target=/root/Src/ centos
778a7be01a7dc40ce58b1d701dd318785404a0b97086333ea1f0ebb3aa571939

另一种也好用的写法:

/home/tong/docker/test [tong@T7] [:]
> docker run -d -it -v /home/tong/Src/:/root/src --name centos7-dev centos

2.  登进去

/home/tong/docker/test [tong@T7] [:]
> docker exec -it /bin/bash
[root@778a7be01a7d /]# cd /root/

十:  定制一个image

https://docs.docker.com/engine/reference/builder/#format

/home/tong/docker/centos7-dev [tong@T7] [:]
> cat Dockerfile
FROM centos:latest
RUN yum install -y gcc man vim gcc-c++
ENTRYPOINT ["/usr/bin/bash"]
/home/tong/docker/centos7-dev [tong@T7] [:]
> docker build -t centos7-custom-dev .
/home/tong/docker/centos7-dev [tong@T7] [:]
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7-custom-dev latest e7297082992b seconds ago 427MB

十一, 在docker里使用gdb

1.  添加如下行到 docker-compose.yml

cap_add:
- SYS_PTRACE

2. 添加如下参数到run命令

--cap-add=SYS_PTRACE

https://stackoverflow.com/questions/42029834/gdb-in-docker-container-returns-ptrace-operation-not-permitted

[daily] docker的更多相关文章

  1. gitlab之gitlab-ci和gitlab-runner<二>

    1.使用 该版未接入k8s,下一篇会写接入k8s. 配置项目使用gitlab-ci和gitlab-runner,在项目的根目录中添加.gitlab-ci.yml文件,用于触发pipeline. .ho ...

  2. 在 Azure 上使用 Docker运行 Mono

    Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个火热的技术,并且提供简单的方 ...

  3. 构建Docker+Jenkins持续集成环境

    docker和Jenkins不是什么新东西了,两者结合也不是什么稀奇的事情,也已经有很多Jenkins和docker相结合的文章,此文仅为自己的一点心得实践,如有不对的地方,欢迎大家纠正. 先贴上大致 ...

  4. docker下部署gitlab

    docker用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全. ...

  5. Azure支持docker简介以及使用指南

    Docker 是一个开源的项目,主要的特点是能将应用程序包装在一个 LXC (Linux Container) 容器中,当这些应用被包装进容器后,部署.迁移都变得更为简单.与传统的虚拟化技术相比,虚拟 ...

  6. docker 镜像管理

    docker:/root# docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official bui ...

  7. docker 创建镜像

    docker:/root# docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official bui ...

  8. Docker运行 Mono

    Docker运行 Mono Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个 ...

  9. CentOS 7 x64 docker 使用点滴

    CentOS 7 安装 docker yum search docker  查看是否 有docker包 yum info docker  版本为1.3.2 yum -y install docker ...

随机推荐

  1. 物联网架构成长之路(10)-Nginx负载均衡

    0. 前言 关于Nginx负载均衡的简单配置,我以前博客配置过基于HTTP的负载均衡.这次的负载均衡有点不一样,就是基于TCP的负载均衡.基于HTTP负载均衡是默认的Nginx版本支持的,配置也很简单 ...

  2. 多进程vs多线程

    多进程模式最大的优点就是稳定性高,因为一个子进程崩溃了,不会影响主进程和其他子进程.(当然主进程挂了所有进程就全挂了,但是Master进程只负责分配任务,挂掉的概率低)著名的Apache最早就是采用多 ...

  3. spring aop 之annotation

    1.CutPointInterface public interface CutPointInterface { void method(); } 2.CutPointClass @Component ...

  4. compass Errno::EACCES on line ["897"] of C: Permission denied

    具体原因不清楚,应该是与新版的sass有关. 目前的处理方法就是安装原来的版本 gem uninstall compass gem uninstall sass gem install sass –v ...

  5. Angularjs的那些事 – 视图的生命周期

    Angularjs的最主要的一个应用场景就是单页面应用(SinglePageApplication),但是SPA中会有一个明显的问题,在视图切换的时候,它只会用新视图去替换视图容器内的HTML,但如果 ...

  6. segMatch:基于3D点云分割的回环检测

    该论文的地址是:https://arxiv.org/pdf/1609.07720.pdf segmatch是一个提供车辆的回环检测的技术,使用提取和匹配分割的三维激光点云技术.分割的例子可以在下面的图 ...

  7. LeetCode_832. Flipping an Image_Solution

    原题链接 原题中文链接 一.题目描述 二.解题思路 题目所描述的意思是对每个数组先进行取反,并且对数组中的每个元素进行取反转换,所以一共要执行两个操作. 使用reverse函数解决水平翻转的操作: 由 ...

  8. Mybatis(一)走进Mybatis与FisrtExample

    前言 一直在使用,从未系统的总结起来.所以这里给大家带来的是mybatis的总结,系统大家能够对这个框架有一定的系统的学习与认识. mybatis和Hibernate应该是现在主流的ORM框架了. m ...

  9. [Object Tracking] MeanShift

    使用Opencv中均值漂移meanShift跟踪移动目标 Opencv均值漂移pyrMeanShiftFiltering彩色图像分割流程剖析 Opencv目标跟踪—CamShift算法 MeanShi ...

  10. [GPU] DIY for Deep Learning Workstation

    Link: jcjohnson/cnn-benchmarks Ref: Build a super fast deep learning machine for under $1,000 Graphi ...