[daily] docker
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的更多相关文章
- gitlab之gitlab-ci和gitlab-runner<二>
1.使用 该版未接入k8s,下一篇会写接入k8s. 配置项目使用gitlab-ci和gitlab-runner,在项目的根目录中添加.gitlab-ci.yml文件,用于触发pipeline. .ho ...
- 在 Azure 上使用 Docker运行 Mono
Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个火热的技术,并且提供简单的方 ...
- 构建Docker+Jenkins持续集成环境
docker和Jenkins不是什么新东西了,两者结合也不是什么稀奇的事情,也已经有很多Jenkins和docker相结合的文章,此文仅为自己的一点心得实践,如有不对的地方,欢迎大家纠正. 先贴上大致 ...
- docker下部署gitlab
docker用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全. ...
- Azure支持docker简介以及使用指南
Docker 是一个开源的项目,主要的特点是能将应用程序包装在一个 LXC (Linux Container) 容器中,当这些应用被包装进容器后,部署.迁移都变得更为简单.与传统的虚拟化技术相比,虚拟 ...
- docker 镜像管理
docker:/root# docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official bui ...
- docker 创建镜像
docker:/root# docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official bui ...
- Docker运行 Mono
Docker运行 Mono Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个 ...
- CentOS 7 x64 docker 使用点滴
CentOS 7 安装 docker yum search docker 查看是否 有docker包 yum info docker 版本为1.3.2 yum -y install docker ...
随机推荐
- Nginx-rtmp 直播媒体实时流实现
0. 前言 这段时间在搭建一个IPCamera项目服务器.视频点对点通话,客户端会查看设备端的音视频实时流.为了省流量,是通过P2P进行穿透.但是由于NAT设备的原因和IPV4的枯竭.有些设备是无法进 ...
- (转载)完成端口(Completion Port, I/OCP)详解
http://www.cnblogs.com/lancidie/archive/2011/12/19/2293773.html 手把手叫你玩转网络编程系列之三 完成端口(Completion P ...
- EasyUI datagrid columns 中 field 区分大小写
columns: [ [ {field: 'id', title: 'ID'}, {field: 'name', title: 'NAME'}, {field: 'DT_CRT_TM', title: ...
- Ruby学习小记
ruby安装 方法一:使用apt-get安装 可以直接使用两个命令完成Ruby的安装. # sudo apt-get update # sudo apt-get install ruby 或者 # s ...
- C++ 智能指针六
/* 智能指针unique_ptr */ #include <iostream> #include <string> #include <memory> #incl ...
- 缓存Memcached 与 Redis 相同点差异点分析
memcach简介 Memcache时一个内存对象缓存系统,用于加速动态web应用程序,减轻数据库负载.它可以应对任意多个连接,使用非阻塞的网络I/O,工作机制:在内存中开辟一块空间,然后建立一个ha ...
- 稍稍解读下JDK8的HashMap
首先,源码中上来就有一大段注释,但最重要的就是第一句. 大意如下: 本map经常用作一个 binned (bucketed) hash table (下面有解释),但是,当bins很大的时候,它们会被 ...
- WebSphere集群环境修改IHS端口号的方法 分类: WebSphere 2015-08-06 13:41 14人阅读 评论(0) 收藏
参考资料:http://wenku.baidu.com/link?url=E9BkuEjJ16i9lg7l91L0-xhKCYkHV0mAnlwAeSlDCFM4TjZyk4ZVxmUu64BGd4F ...
- 超简单Windows安装Scrapy (仅需一步)
网上很多关于windows安装Scrapy的教程都非常的繁琐,请看我给大家分享的教程,非常简单 一步完成. 超简单的安装方法: 下载地址: https://www.continuum.io/downl ...
- svn eclipse链接
先下载site-1.8.22.zip 安装包 然后 在D:\software\eclipse\dropins 目录下新建 svn文件夹 把下载的文件解压到该文件夹下 ,*.xml 删除 不需要 只要 ...