1. 程式人生 > >docker使用筆記-linux平臺

docker使用筆記-linux平臺

一、環境準備

1、ubuntu 版本
Linux ubuntu 4.4.0-31-generic #50~14.04.1

二、安裝

1、安裝1.9版本

1)執行以下指令

sudo apt-get install apt-transport-https 
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 
sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" 
sudo apt-get update 
sudo apt-get install lxc-docker

2)檢查安裝
使用下面指令檢查是否安裝成功

docker -v

在這裡插入圖片描述

三、使用

1、檢視ubuntu映象

docker search ubuntu

該命令將顯示所有 ubuntu images,你可以自己嘗試一下搜尋 centos Images。
在這裡插入圖片描述
2、拉去官方原版ubuntu系統
使用下面命令拉去官方的原版ubuntu系統映象,已經開始下載,如下圖。

docker pull ubuntu

在這裡插入圖片描述
完成下載。
在這裡插入圖片描述

使用命令 檢視已經下載 的所有的images:

 docker images

在這裡插入圖片描述

3、建立容器
使用命令

docker create ubuntu:14.04

或者

docker run -i -t ubuntu:14.04 /bin/bash

建立一個名字叫做 ubuntu:14.04 的新容器。其中,create只建立不啟動,run建立並啟動容器。
執行 create 命令時在本地未發現ubuntu:14.04的版本,因此重新拉去了一個標籤為ubuntu:14.04的映象,如下圖:

拉去的ubuntu14.04的映象
拉去新的ubuntu映象
已經下載的所有映象
已經下載的映象
已經存在映象時如下圖
在這裡插入圖片描述

4、執行容器
1)後臺帶引數執行

docker run -it -d --name ubuntu:14.04-p 8088:80 ubuntu

-d引數為後臺執行,–name引數為自定義容器名,-p引數為指定埠對映、後者為容器的埠。注意到成功後臺執行後會返回一個容易的id,在這裡只需要記住前兩位即88即可

2)直接執行

docker run -i -t ubuntu:14.04 /bin/bash

或者

 docker exec -i -t NAMES/ContainerID

執行後進入該容器的bash命令列,用另一個shell檢視當前的images狀態發現該容器已經處於執行狀態。
在這裡插入圖片描述
在這裡插入圖片描述
用命令 cat /etc/issue 檢視容器內的ubuntu版本。
在這裡插入圖片描述

在容器內我們可以做很多的操作,和普通的linux系統操作並無差別。比如安裝vim和修改為阿里源。
安裝vim:

apt-get update
apt-get install vim

更換阿里源

cp sources.list sources.list.bak
echo ''>sources.list
vi sources.list

複製以下內容到source.lis中

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

5、退出容器

1)退出容器:exit,檢視容器的執行狀態。
在這裡插入圖片描述
在這裡插入圖片描述
2)停止容器:docker stop dreamy_pike 或者 docker stop 85785945b3e4 或者 docker stop 85
第一個是容器的名字,後兩個是容器的id,其中id只使用前兩位也可以停止容器,啟動時同理。

6、重啟容器

docker restart 容器名/容器id

使用 docker restart 85785945b3e4重啟已經存在的容器。
在這裡插入圖片描述
在這裡插入圖片描述

7、訪問已啟動容器的

1)在容器啟動的情況下,執行docker attach 容器id 即可進入容器,但執行exit時容器就停止了。
在這裡插入圖片描述

2)執行 docker exec -it containerID /bin/bash 進入容器,執行命令exit退出時,容器還在執行。
在這裡插入圖片描述
容器未退出
在這裡插入圖片描述

8、刪除容器
在操作過程中無意建立了一個新的容器,我們使用命令 docker rm 63030b5aa9ba 將其刪除,docker rm NAME/ContainerID
在這裡插入圖片描述

中間遇到幾個問題,當經過別的操作的後有時候會發現imageid有重複的:
在這裡插入圖片描述
此時,使用一般的刪除方式 docker rm ca27a58388df 是刪除不掉的,會報錯,說找不到相應的id:
在這裡插入圖片描述
原因是,有關聯docker容器,無法刪除,需要強制刪除才可以,使用命令 docker rmi -f ca27a58388df 可以刪除:
在這裡插入圖片描述
9、其他

1)從宿主拷貝檔案到容器docker cp 容器名:要拷貝的檔案在容器裡面的路徑 要拷貝到宿主機的相應路徑 如,拷貝宿主/目錄下kafka_2.11-2.1.0/目錄到容器名為dreamy_pike的容器的/目錄下,命令:

docker cp kafka_2.11-2.1.0/ dreamy_pike:/

在這裡插入圖片描述
在這裡插入圖片描述
2)從容器拷貝檔案到宿主docker cp 容器名:要拷貝的檔案在容器裡面的路徑 要拷貝到宿主機的相應路徑
3)檢視容器資訊docker inspect id
4)檢視docker狀態docker stats id
5)容器的開機自啟動docker run -it --restart=always ubuntu
6)檢視容器logdocker logs -f -t --tail=5 ubuntu

四、釋出容器

1、製作docker映象

docker commit 85785945b3e4 ubuntu_aliyun:1.0

冒號後面的1.0為版本號,要新增的,就像在前面檢視映象images時的TAG
在這裡插入圖片描述
製作完成後用命令 docker images 檢視已經制作的映象,
在這裡插入圖片描述

2、打包映象
雖然製作了映象,但是隻能在宿主機使用而不能在其他機器上使用,這時需要打包映象,將映象檔案打包為tar包,發給別的機器再使用。

docker save -o ubuntu_aliyun.tar ubuntu_aliyun:1.0

在這裡插入圖片描述

3、本地映象推送到docker Hub

1)賬戶登入
若沒有賬戶的,在 此處 註冊docker hub賬戶,然後使用命令 docker login 登入docker hub.
在這裡插入圖片描述

2)修改映象
修改已經生成的映象檔案為規範的命名格式,推送映象的規範是:
docker push 註冊使用者名稱/映象名
修改的命令:
docker tag 目前的名字 規範的名稱

未修改前的images在這裡插入圖片描述
修改之後的images
在這裡插入圖片描述
發現一個問題,文件上說docker tag是重新命名的指令,但是操作之後發現似乎是重新多了一份???

3)推送到docker hub
使用命令 docker push 映象名:latest,推送測試的映象到docker hub.

docker push luciferofwg/ubuntu_aliyun:latest

開始推送
在這裡插入圖片描述
似乎除了問題
在這裡插入圖片描述
經過檢視,應該是與docker hub的連結不穩定導致的,重新推送成功了。
在這裡插入圖片描述
推送成功之後,在docker hub上自己的主頁上檢視推送的結果,已經成功。這個映象即可pull下來在別的地方使用。
在這裡插入圖片描述

至此,就是在學習使用docker的過程中記錄的一些問題和筆記,多數資料來自與網際網路。