[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 ...
随机推荐
- easy_install与pip 区别
作为Python爱好者,如果不知道easy_install或者pip中的任何一个的话,那么...... easy_insall的作用和perl中的cpan,ruby中的gem类似,都提供了在线一键 ...
- GNU make使用(一)
[时间:2017-01] [状态:Self] [关键词:makefile,gcc,编译,动态库,静态库,可执行文件,shell命令] 引言 前段时间在Linux下编写一个可测试的程序发现,我对make ...
- 【linux】——cscope
cscope是一款linux下的软件,其功能主要是用在阅读代码,堪称Windows下的Source Insight,但是配合vim使用,效率无与伦比.如需了解其具体使用,请先安装vim,然后在终端执行 ...
- 设置gem源,解决下载慢的问题
问题解决的最好方法方法 使用google的DNS 8.8.8.8 / 8.8.4.4 另一种解决方式 修改rubygems的source源 $ gem source -r http://rubygem ...
- last
last reboot 显示系统最后重启的历史记录 last -w 显示自系统启动以来,所有登录的用户(全名)
- 前端分页插件pagination
摘要: 最近在开发项目中又用到了前端分页,以前也做过,为了方便以后使用所以将他封装成第三方插件,不依赖任何库.网上已经有很多插件,问什么还要自己造轮子? 自己写的扩展性高 不依赖任何库 作为一次技术沉 ...
- 04单例模式Singleton
一.什么是单例模式 单例模式是一种对象创建型模式,使用单例模式, 可以保证为一个类只生成唯一的实例对象.也就是说, 在整个程序空间中,该类只存在一个实例对象. 其实,GoF对单例模式的定义是:保证一个 ...
- IntelliJ IDE破解
1.购买正版用户 2.激活码 一:下载以下jar,放到 bin 破解补丁无需使用注册码,下载地址 idea14 keygen下载地址 二:在下面两个文件中加入-javaagent:E:\IDEA\In ...
- js中的构造函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- LostRoutes项目日志——敌人精灵Enemy解析
Enemy类在Enemy.js中,类Enemy类继承自PhysicsSprite,以便于可以使用物理引擎中的一些特性. 原版的Enemy.js: var Enemy = cc.PhysicsSprit ...