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的映象
已經下載的所有映象
已經存在映象時如下圖
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)檢視容器log:docker 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的過程中記錄的一些問題和筆記,多數資料來自與網際網路。