docker入門命令行

=================================================================================================================================
安裝:
https://help.aliyun.com/document_detail/60742.htmlhtml

# step 1: 安裝必要的一些系統工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安裝GPG證書
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 寫入軟件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新並安裝Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
# 安裝指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
# docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安裝指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]linux

 

查看:
docker info
=================================================================================================================================docker

默認安裝完 docker 後,每次執行 docker 都須要運行 sudo 命令,很是浪費時間影響效率。若是不跟 sudo,直接執行 docker images 命令會有以下問題:shell

FATA[0000] Get
http:///var/run/docker.sock/v1.18/images/json: dial unix /var/run/docker.sock:
permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
因而考慮如何免 sudo 使用 docker,通過查找資料,發現只要把用戶加入 docker 用戶組便可,具體用法以下:apache

//若是尚未 docker group 就添加一個
sudo groupadd docker
//將用戶加入該 group 內。而後退出並從新登陸就生效啦。
sudo gpasswd -a ${USER} docker
//重啓 docker 服務
sudo service docker restart
//切換當前會話到新 group
newgrp - dockerjson

注意,最後一步是必須的,不然由於 groups 命令獲取到的是緩存的組信息,剛添加的組信息未能生效,因此 docker images 執行時一樣有錯。ubuntu

 

===============================================================================================================================
https://zhuanlan.zhihu.com/p/21252578vim

 

## 運行第一個容器:
$ sudo docker run -i -t ubuntu /bin/bash
...
root@f7cbdac22a02:/#緩存

-i標誌保證容器中STDIN是開啓的,儘管咱們並無附着到容器中。
-t標誌則是另外「半邊天」,它告訴Docker爲要建立的容器分配一個僞tty終端
示例中使用的是ubuntu鏡像。ubuntu鏡像是一個常備鏡像,也能夠稱爲「基礎」(base)鏡像,它由Docker公司提供
最後,咱們告訴Docker在新容器中要運行什麼命令,在本例中咱們在容器中運行/bin/bash命令啓動了一個Bash shell。bash

## 檢查容器的主機名
root@f7cbdac22a02:/# hostname
f7cbdac22a02

## 檢查容器的/etc/hosts文件
root@f7cbdac22a02:/# cat /etc/hosts
...

## 檢查容器的接口
root@f7cbdac22a02:/# ip a
...

## 檢查容器的進程
root@f7cbdac22a02:/# ps -aux

## 在第一個容器中安裝軟件包
root@f7cbdac22a02:/# apt-get update && apt-get install vim

當全部工做都結束時,輸入exit,就能夠返回到Ubuntu宿主機的命令行提示符了。
這個容器如今怎樣了?容器如今已經中止運行了!
但容器仍然是存在的,能夠用docker ps -a命令查看當前系統中容器的列表
若是指定-a標誌的話,那麼docker ps命令會列出全部容器,包括正在運行的和已經中止的。

## 給容器命名
$ sudo docker run --name bob_the_container -i -t ubuntu /bin/bash
root@aa3f365f0f4e:/# exit

## 啓動已經中止運行的容器
$ sudo docker start bob_the_container
$ sudo docker start aa3f365f0f4e

## 附着到正在運行的容器
$ sudo docker attach bob_the_container
$ sudo docker attach aa3f365f0f4e
root@aa3f365f0f4e:/_#_

## 建立長期運行的容器
$ sudo docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
docker run命令使用了-d參數,所以Docker會將容器放到後臺運行。
若是執行docker ps命令,能夠看到一個正在運行的容器

## 獲取守護式容器的日誌
$ sudo docker logs daemon_dave

## 跟蹤守護式容器的日誌
$ sudo docker logs -f daemon_dave

## 跟蹤守護式容器的最新日誌
$ sudo docker logs -ft daemon_dave

## 查看守護式容器的進程
$ sudo docker top daemon_dave

## 顯示一個或多個容器的統計信息
$ sudo docker stats daemon_dave daemon_kate daemon_clare daemon_sarah

## 在容器中運行後臺任務
$ sudo docker exec -d daemon_dave touch /etc/new_config_file

## 在容器內運行交互命令
$ sudo docker exec -t -i daemon_dave /bin/bash

## 中止正在運行的Docker容器
$ sudo docker stop daemon_dave
$ sudo docker stop c2c4e57c12c4

## 自動重啓容器
$ sudo docker run --restart=always --name daemon_dave -d ubuntu /
bin/sh -c "while true; do echo hello world; sleep 1; done"
--restart標誌被設置爲always。不管容器的退出代碼是什麼,Docker都會自動重啓該容器。

$ sudo docker run --restart=on-failure:5 --name daemon_dave -d ubuntu /
bin/sh -c "while true; do echo hello world; sleep 1; done"
除了always,還能夠將這個標誌設爲on-failure,這樣,只有當容器的退出代碼爲非0值的時候,纔會自動重啓。
另外,on-failure``還接受一個可選的重啓次數參數,如代碼清單3-31所示。

## 查看容器
$ sudo docker inspect daemon_dave

## 刪除容器
$ sudo docker rm 80430f8d0921

##刪除全部容器
$ sudo docker rm `sudo docker ps -a -q`

 

==========================================================================================================================================
## 列出本地的鏡像
$ docker images

## 在Docker Hub上搜索鏡像
$ docker search busybox # 搜索image名字包含busybox的鏡像

 

=============================================================================================================================

## 建立Dockerfile

FROM openjdk //指定base鏡像
MAINTAINER Zhongqiang Shen //描述鏡像的建立者

WORKDIR /tmp //設置容器內的當前工做目錄
ADD http://apache.osuosl.org/zookeeper/stable/zookeeper-3.4.10.tar.gz /tmp //將URL中的內容下載到指定目錄中
RUN tar -xzf zookeeper-3.4.10.tar.gz
RUN mv zookeeper-3.4.10 /opt/zookeeper //在容器中解壓zookeeper包,並將加壓後的包移到/opt/zookeeper位置
WORKDIR /opt/zookeeper
RUN echo "tickTime=2000" >> conf/zoo.cfg
RUN echo "dataDir=/var/lib/zookeeper" >> conf/zoo.cfg
RUN echo "clientPort=2181" >> conf/zoo.cfg //撰寫conf/zoo.cfg
EXPOSE 2181 //暴露容器的2181端口
CMD ["/opt/zookeeper/bin/zkServer.sh", "start-foreground"]
//啓動zookeeper進程,使用CMD關鍵字。start-foreground參數讓zookeeper在前臺運行,若是沒有這個參數,.sh腳本退出後會致使容器也退出


## 建立完Dockerfile,就能夠用下面的命令來建立鏡像了
$ docker build -t zookeeper .
Sending build context to Docker daemon 5.632kB
Step 1/12 : FROM openjdk
...

## 能夠用下面的命令來啓動它
$ docker run zookeeper

===========================================================================================================================
多容器部署: https://zhuanlan.zhihu.com/p/31436920

## 首先安裝Docker Compose
$ apt-get install docker-compose

## 定義docker-compose.yml,以下:
version: '2' //指定Docker Compose的版本
services:
zookeeper:
container_name: iop-zookeeper //指定容器的名字
image: jplock/zookeeper //指定使用的鏡像的名字
ports:
- "2181:2181" //定義端口映射
kafka:
container_name: iop-kafka
image: wurstmeister/kafka
environment: //設置環境變量
KAFKA_ZOOKEEPER_CONNECT: iop-zookeeper:2181
KAFKA_CREATE_TOPICS: "metrics"
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_BROKER_ID: 1
ports:
- "9092:9092"
links: //定義容器之間的關聯關係和依賴關係,這裏kafka依賴於zookeeper,定義了這個依賴關係後,kafka啓動前會先啓動zookeeper
- zookeeper

## 定義了docker-compose.yml文件後,就能夠經過以下命令來一鍵啓動服務
$ docker-compose up -d # -d表示後臺模式運行服務
Pulling zookeeper (jplock/zookeeper:latest)
...

## 運行下列命令能夠看到容器已啓動
$ docker ps

 

===========================================================================================================================

相關文章
相關標籤/搜索