docker學習筆記

win10機器: docker下載: https://www.docker.com/products/docker#/windowshtml

win10以外的win機器: docker下載: https://www.docker.com/products/docker-toolboxmysql

  boot2docker.iso下載地址:https://pan.baidu.com/s/1qYyc0aglinux

  copy到用戶/.docker/machine/cache/下nginx

docker version  驗證git


 

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


ubuntu機器:web

uname -rredis

apt-get updatesql

apt-get install -y docker.iodocker

或者安裝最新版 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爲例安裝

一、安裝Docker

參見:https://docs.docker.com/engine/installation/linux/centos/

 

二、直接使用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

相關文章
相關標籤/搜索