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. Nginx-rtmp 直播媒体实时流实现

    0. 前言 这段时间在搭建一个IPCamera项目服务器.视频点对点通话,客户端会查看设备端的音视频实时流.为了省流量,是通过P2P进行穿透.但是由于NAT设备的原因和IPV4的枯竭.有些设备是无法进 ...

  2. (转载)完成端口(Completion Port, I/OCP)详解

    http://www.cnblogs.com/lancidie/archive/2011/12/19/2293773.html 手把手叫你玩转网络编程系列之三    完成端口(Completion P ...

  3. EasyUI datagrid columns 中 field 区分大小写

    columns: [ [ {field: 'id', title: 'ID'}, {field: 'name', title: 'NAME'}, {field: 'DT_CRT_TM', title: ...

  4. Ruby学习小记

    ruby安装 方法一:使用apt-get安装 可以直接使用两个命令完成Ruby的安装. # sudo apt-get update # sudo apt-get install ruby 或者 # s ...

  5. C++ 智能指针六

    /* 智能指针unique_ptr */ #include <iostream> #include <string> #include <memory> #incl ...

  6. 缓存Memcached 与 Redis 相同点差异点分析

    memcach简介 Memcache时一个内存对象缓存系统,用于加速动态web应用程序,减轻数据库负载.它可以应对任意多个连接,使用非阻塞的网络I/O,工作机制:在内存中开辟一块空间,然后建立一个ha ...

  7. 稍稍解读下JDK8的HashMap

    首先,源码中上来就有一大段注释,但最重要的就是第一句. 大意如下: 本map经常用作一个 binned (bucketed) hash table (下面有解释),但是,当bins很大的时候,它们会被 ...

  8. WebSphere集群环境修改IHS端口号的方法 分类: WebSphere 2015-08-06 13:41 14人阅读 评论(0) 收藏

    参考资料:http://wenku.baidu.com/link?url=E9BkuEjJ16i9lg7l91L0-xhKCYkHV0mAnlwAeSlDCFM4TjZyk4ZVxmUu64BGd4F ...

  9. 超简单Windows安装Scrapy (仅需一步)

    网上很多关于windows安装Scrapy的教程都非常的繁琐,请看我给大家分享的教程,非常简单 一步完成. 超简单的安装方法: 下载地址: https://www.continuum.io/downl ...

  10. svn eclipse链接

    先下载site-1.8.22.zip 安装包 然后 在D:\software\eclipse\dropins 目录下新建 svn文件夹 把下载的文件解压到该文件夹下 ,*.xml 删除 不需要 只要 ...