[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 ...
随机推荐
- [docker]docker自带的overlay网络实战
overlay网络实战 n3启动consul docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -b ...
- python开发-与其他语言的比较
1.关于函数 1)不需要指定返回类型,不需要指定是否有返回值,每个函数都有返回值,没有的话,就返回None 2)参数也可以不指定类型,可以有默认参数,但是必须放到最后,调用的时候指定参数的值,和顺序无 ...
- vue与自定义元素的关系
你可能已经注意到 Vue.js 组件非常类似于自定义元素--它是 Web 组件规范的一部分.实际上 Vue.js 的组件语法参考了该规范.例如 Vue 组件实现了 Slot API 与 is 特性.但 ...
- Pwnium CTF2014 – MatterOfCombination writeup
这道题是虽然只有75分,但是做出来的队伍却很少,我们队伍也没有做出来,这次是看到了0xAWES0ME 的解题思路后才有了这篇文章.原文地址可以点击看这里,英文的. 题目就是一张图片: 在网上可以找到这 ...
- 转载:CSS垂直居中总结
原文地址:http://www.cnblogs.com/dojo-lzz/p/4419596.html 工作中遇到垂直居中问题,特此总结了一下几种方式与大家分享.本文讨论的垂直居中仅支持IE8+ 1. ...
- maven一键部署tomcat war包
1.环境如下 eclipse.apache-maven-3.0.5.apache-tomcat-7.0.39 2.配置如下 apache-tomcat-7.0.39配置C:\Program Files ...
- 第三百九十九节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装mysql5.6
第三百九十九节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装mysql5.6 1.检测系统是否已经安装过mysql或其依赖,若已装过要先将其删除,否则第4步 ...
- mysql 常用语句集
1.查询某数据库大小语句: SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024),2),'MB') AS DATA FROM TABLES WHERE tab ...
- [Python] 08 - Classes --> Objects
故事背景 一.阶级关系 1. Programs are composed of modules.2. Modules contain statements.3. Statements contain ...
- [PHP] 02 - Namespace & Class
两个比较大的话题,独立成本篇. 面向对象编程 一.命名空间 PHP 命名空间可以解决以下两类问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突. 为很长的标识符名称 ...