See also CentOSKubernetes

Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

1. 简介

1.1. 起源

Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在Github上, 基于go语言并遵从Apache2.0协议开源。

2013年10月,dotCloud 改名 Docker, Inc,妄图在商业上完全控制 Docker。

一款开源软件能否一炮打响,很大程度上依赖三件事:成功的 Usecase, 活跃的社区和一个好故事。但为了商业价值而想独占技术的野心却不断遭人诟病,最后落得偷鸡不成蚀把米。

1.2. moby、docker-ce与docker-ee的区别

https://github.com/moby/moby

最早的 docker 是一个开源项目,主要由 dotCloud(后改名为 Docker, Inc)公司维护;

2017年年初,docker公司将原先的 docker 项目改名为 moby,并创建了 docker-ce 和 docker-ee。

这三者的关系如下

v1.13.1之后,docker-ce 的发布计划更改为:

2. 相关内容索引

3. Getting Started

Docker快速上手指南

3.1. Learning

4. Docker Command Line

Docker Command Line

4.1. shell completion

https://docs.docker.com/docker-for-mac/

etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
ln -s $etc/docker-machine.zsh-completion /usr/local/share/zsh/site-functions/_docker-machine
ln -s $etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose

5. Services

5.1. Registry Mirrors in China

{
  "registry-mirrors": [
    "http://cadcca32.m.daocloud.io",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://dockerhub.azk8s.cn",
    "https://docker.mirrors.ustc.edu.cn"
    "https://reg-mirror.qiniu.com"
  ]
}

5.2. Java

https://hub.docker.com/_/openjdk Versions:

➜  ~ docker pull openjdk:<version>
➜  ~ docker images |grep 'openjdk\|java'
openjdk                                         8-jre-slim          525155b9ab5e        40 hours ago        161MB
openjdk                                         8-jre               d074f374c689        40 hours ago        245MB
openjdk                                         8-jre-alpine        f7a292bbb70c        2 weeks ago         84.9MB
openjdk                                         8                   b8d3f94869bb        8 weeks ago         625MB
openjdk                                         8-jdk               b8d3f94869bb        8 weeks ago         625MB
openjdk                                         8-jdk-alpine        04060a9dfc39        5 months ago        103MB
java                                            8-jre               e44d62cf8862        2 years ago         311MB

5.3. MySQL

https://docs.docker.com/samples/library/mysql/

➜  es-startup git:(master) docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.6

5.4. Elasticsearch

https://docs.docker.com/samples/library/elasticsearch/

➜  es-startup git:(master) docker pull elasticsearch:2.4
2.4: Pulling from library/elasticsearch
...
Digest: sha256:41ed3a1a16b63de740767944d5405843db00e55058626c22838f23b413aa4a39
Status: Downloaded newer image for elasticsearch:2.4
# 使用外部配置和数据
➜  ~ docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /tmp/elasticsearch_data:/usr/share/elasticsearch/data -v /tmp/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:2.4

5.5. Neo4j

https://docs.docker.com/samples/library/neo4j/

➜  es-startup git:(master) docker run \
    --publish=7474:7474 --publish=7687:7687 \
    --volume=/tmp/neo4j/data:/data \
    neo4j

5.6. Spring Boot Development with Docker

https://blog.docker.com/2017/05/spring-boot-development-docker/

➜  ~ docker images                           
REPOSITORY                               TAG                 IMAGE ID            CREATED             SIZE
...
# retag base images
➜  ~ docker pull java:8-jre
➜  ~ docker tag java:8-jre 10.10.150.149:5000/java:8-jre
➜  ~ docker pull nginx
➜  ~ docker tag nginx 10.10.150.149:5000/nginx

# Dockerfile for Vue.js with Nginx
FROM 10.10.150.149:5000/nginx

ADD dist /var/www
RUN chmod -R 755 /var/www
RUN chown -R $USER:$USER /var/www

ADD conf/nginx.conf /etc/nginx/conf.d/myhost.conf

server {
    listen 80 default_server;
    
    location / {
        root /var/www;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

    location /api/ {
        proxy_pass http://localhost:8080/;
        proxy_set_header X-Real-IP $remote_addr;
        client_max_body_size    1000m;
    } 
}   

docker run -d --name www -p 8080:80 my-web
docker exec -it www bash

5.7. Nginx/Jre Application

6. Reference


CategorySystem CategoryLinux

MainWiki: Docker (last edited 2021-01-31 00:38:30 by twotwo)