导航

docker学习笔记

Posted on 2017-09-14 23:08  Simon1020  阅读(203)  评论(0编辑  收藏  举报

win10机器: docker下载: https://www.docker.com/products/docker#/windows

win10之外的win机器: docker下载: https://www.docker.com/products/docker-toolbox

  boot2docker.iso下载地址:https://pan.baidu.com/s/1qYyc0ag

  copy到用户/.docker/machine/cache/下

docker version  验证


 

macos机器: Yosemite 10.10.3+(2014/6)):  https://www.docker.com/products/docker#/mac


ubuntu机器:

uname -r

apt-get update

apt-get install -y docker.io

或者安装最新版 curl -s https://get.docker.com|sh

docker version

service docker start

docker version

第一个docker镜像:

  docker pull [OPTIONS] NAME[:TAG]

  docker images [OPTIONS][REPOSITORY][:TAG]

docker images

docker pull hello-world

docker images

  docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]

docker run hello-world

实践前奏

#持久运行的容器

#前台挂起&后台运行

#进入容器内部

  docker pull hub.c.163.com/library/nginx:latest

  docker run hub.c.163.com/library/nginx:latest

     docker run -d hub.c.163.com/library/nginx:latest  --后台启动

  docker ps  --查看运行的docker

  docker exec -it 9ffb2a bash

  docker stop [id号]

Docker网络

  #网络类型

    Bridge  Host  None

  #端口映射

 

  docker run -d -p 80:80 hub.c.163.com/library/nginx:latest

  netstat -na|grep 8080

 

docker容器的commit

docker cp [文件] id://usr/share/nginx/html  --复制到docker容器

docker run .........

docker commit -m 'fun' id号 nginx-fun  --保存新的image

docker rmi id号    --删除image

docker stop id号       --停止container

docker ps -a      --(历史??)

docker rm id号    ---删除container

docker cp      --host 与 container 之间 copy


 

制作自己的镜像

  #Dockerfile

  #docker build

  #Jpress: http://jpress.io/

 Dockerfile语法:

  命令  用途

  from  base image

  run   执行文件

  add   添加文件(可以添加远程文件)

  copy   拷贝文件

  cmd   执行命令

  expose  暴露端口

  workdir  指定路径

  maintainer 维护者信息

  env    设定环境变量

  entrypoint 容器入口

  user    指定用户

  volume  mount point

 

vim Dockerfile

from tomcat

MAINTAINER LZP LZP@163.com

COPY Jpress.war /usr/local/tomcat/webapps/

 

docker build -t jpress:latest .

docker run -d -p 8080:8080 jpress

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jpress mysql

...

 docker restart bf7f65e9d407


 

 volume独立于容器之外的持久化

1.

docker run -d --name nginx -v /usr/share/nginx/html registry.cn-beijing.aliyuncs.com/opendcp/nginx

docker inspect nginx

macos: screen ~/Library/...../tty

  cd ......

linux: cd /var/lib/docker/volumes/6e40d92ac1795827bd6e156962ef99056a58fd1aa9e1ab138c39978feee20712/_data

===> 容器的 /usr/share/nginx/html

2.

mkdir d2

cd d2

docker run -d -p 80:80 -v $PWD/html:/usr/share/nginx/html registry.cn-beijing.aliyuncs.com/opendcp/nginx

curl http://localhost

3.

mkdir d3

cd d3

mkdir data

docker create -v $PWD/data:/var/mydata --name data_container ubuntu

docker run -it --volumes-from data_container ubuntu /bin/bash    --it ....... /bin/bash交互的方式运行

mount命令 可以查看到/var/mydata挂载到当前容器


Registry

镜像仓库

host    本机

image     镜像

container  容器

redistry   仓库

daemon   守护进程

client    客户端

 

docker search whalesay

docker pull whalesay

docker push myname/whalesay

国内的一些仓库

daocloud

时速云

aliyun

 

docker tag xx/xx aa/bb

docker images 查看会多出一个images叫aa/bb的镜像, 和xx/xx一样的, 相当有复制

docker login

  Username: xxx

  Password: xxx

docker push aa/bb


docker-compose 工具安装

mak/windows: 自带

Linux: curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose

sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod a+x docker-compose

docker-compose --version

 

mkdir ghost; cd ghost; mkdir ghost nginx data

cd ghost; touch Dockerfile

from ghost
copy ./config.js /var/lib/ghost/config.js
expose 2368
cmd ["npm","start","--production"]

 

cp ../../backup/ghost/config.js

cd ../nginx; touch Dockerfile

from nginx
copy nginx.conf /etc/nginx/nginx.conf
expose 80

 

touch nginx.conf

worker processes 4;
event{
  worker_connections 1024;
}
http{
  server{
    listen 80;
    location / {
      proxy_pass http://ghost-app:2368
    }
  }
}

 

cd ..

touch docker-compose.yml

 

version: '2'
networks:
  ghost:
services:
  ghost-app:
    build: ghost
    networks:
      - ghost
    depends_on:
      - db
    ports:
     - "2368:2368"
  nginx:
    build: nginx
    networks:
      - ghost
    depends_on:
      - ghost-app
    ports:
      - "80:80"
  db:
    image: "mysql:5.7.15"
    networkds:
      - ghost
    environment:
      MYSQL_ROOT_PASSWORD: mysqlroot
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghost

    volumes:
      - $PWD/data:/var/lib/mysql
    ports:
      - "3306:3306"

 

docker-compose up -d

docker-compose stop

docker-compose rm

docker-compose build 

docker-compose up -d

docker-compose.yml 常用命令:

命令     用途

build     本地创建镜像

command   覆盖缺省命令

depends_on  连接容器

ports     暴露端口

volumes    卷

image     pul镜像

up       启动服务

stop      停止服务

rm       删除服务中的各个容器

logs       观察各个容器的日志

ps       列出服务的相关的容器


 

Redhat & CentOS机器:  http://www.imooc.com/article/16448

 

CentOS7为例安装

1、安装Docker

参见:https://docs.docker.com/engine/installation/linux/centos/

 

2、直接使用root安装(更新系统)

yum update

 

3.配置docker镜像源

tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

 

4.安装docker

yum install docker-engine

root: sudo wget -qO- https://get.docker.com/ | sh

 sudo usermod -aG docker [用户名]  --用户加入docker组

docker version

 

 

5.启动docker

安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:

  1. [root@localhost ~]# service docker start
  2. [root@localhost ~]# chkconfig docker on

(LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下:

  1. [root@localhost ~]# systemctl start docker.service
  2. [root@localhost ~]# systemctl enable docker.service

 

----国内镜像加速器配置

DaoCloud加速器: 首先在http://www.daocloud.io/进行注册登录。然后点击加速器。

阿里云加速器:

加速器:https://cr.console.aliyun.com/#/accelerator

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["https://xxxxxxxx.mirror.aliyuncs.com"],
"live-restore":true
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
 
https://dev.aliyun.com/list.html
 

卸载

1.查询安装过的包

yum list installed | grep docker

docker-engine.x86_64                 17.03.0.ce-1.el7.centos         @dockerrepo

 

2.删除安装的软件包

yum -y remove docker-engine.x86_64

 

3.删除镜像/容器等

rm -rf /var/lib/docker