Docker,安裝+簡單使用 (一)

docker簡介

docker 究竟是什麼?docker 是一個基於LXC (linux containers)的高級容器引擎。聽起來是不是不知道在說什麼?簡單地說,docker 是一個輕量級的虛擬解決方案,或者說 —— 一個超輕量級的虛擬機。你一定理解虛擬機是什麼,那麼,你現在可以認爲 docker 是一個秒級啓動的虛擬機,可以輕易創建和刪除,就這一點,是不是酷斃了。

docker 是一種集裝箱式的工作方式。正如我們會將各種不同的貨物統一打包成一個個集裝箱,進行標準的管理和運輸,在 docker 的世界裏,我們把應用和應用所依賴的運行環境打包成一個個 image,然後分發到任意支持 docker 的平臺,就可以在這些平臺運行我們的應用,提供服務。
那支持 docker 的平臺有哪些?因爲 docker 是基於 linux 的,在任意的 linux 發行版我們都可以原生地支持 docker,只要對應的內核版本大於 3.10 並且是 64bit,而在 Windows 和 Mac 中,我們可以通過 boot2docker 來運行 docker,這幾乎意味着,所有的主流平臺都支持 docker 的運行 —— 從此你不再需要爲跨平臺而苦惱。

docker下載安裝教程

https://www.widuu.com/chinese_docker/installation/ubuntu.html

//卸載已經安裝的docker
$sudo apt-get remove docker docker-engine docker.io containerd runc
//開始安裝,順序執行
$sudo apt-get update
$sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
$curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"
$apt-get update
//$sudo apt-get install docker-engine 該命令以不可用,使用如下命令查看暗轉
//查看ce 和 ce-cli版本
$apt-cache madison docker-ce
$apt-cache madison docker-ce-cli
//安裝制定版本格式:
//sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
$sudo apt-get install docker-ce=5:18.09.0~3-0~ubuntu-bionic docker-ce-cli=5:18.09.0~3-0~ubuntu-bionic containerd.io

//啓動docker
$sudo systemctl enable docker
$sudo systemctl start docker

檢測是否安裝正常

$ sudo docker run hello-world

開啓docker鏡像加速,你懂得,絕望之牆
在 /etc/docker/daemon.json 文件(無則創建)中加入下面內容,然後重啓服務
https://registry.docker-cn.com 是官方加速鏡像網站

{"registry-mirrors":["https://registry.docker-cn.com"]}
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

docker基本命令

運行一個容器,輸出hello world

$docker run ubuntu:15.10 /bin/echo "Hello world"
//docker: Docker 的二進制執行文件。
//run: 與前面的 docker 組合來運行一個容器。
//ubuntu:15.10 指定要運行的鏡像,Docker 首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
///bin/echo "Hello world": 在啓動的容器裏執行的命令

進入容器,開始交互

$docker run -i -t ubuntu:15.10 /bin/bash
//-t: 在新容器內指定一個僞終端或終端。
//-i: 允許你對容器內的標準輸入 (STDIN) 進行交互。

退出容器使用CTRL+D或者exit

其他簡答命令

//設置docker後臺啓動
$docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
//查看docker 情況
$docker ps
//查看標準輸出  2b1b7a428627是容器ID
$docker logs 2b1b7a428627
//停止容器
$docker stop amazing_cori

容器

容器基本使用

//拉取一個鏡像
$docker pull ubuntu

//進入一個容器,i:交互式  t:終端 d:守護進程運行
$docker run -itd ubuntu /bin/bash

//退出 exit 或者 CTRL+D

//查看所有的容器
$docker ps -a
//查看最後一次創建的容器
$docker ps -l

//啓動一個已經停止的容器
$docker start b750bbbcfd88 

//重啓容器
$docker restart b750bbbcfd88 

//進入容器,退出容器時,容器停止運行
$docker attach c0c28a7a6021
//進入容器,退出時,容器正常運行
$docker exec -it c0c28a7a6021 /bin/bash

//導出本地容器快照
$docker export c0c28a7a6021 > ubuntu_test.tar
//根據本地容器快照,啓動一個容器
$cat ubuntu_test.tar | docker import - test_ubuntu:v1
//url導入容器
$docker import http://example.com/exampleimage.tgz example/imagerepo

//刪除容器
$docker rm -f 6eaf6776e80d
//刪除所有處於終止狀態的容器
$docker container prune

容器使用的簡單例子

//拉取一個webapp鏡像
$docker pull training/webapp
//後臺運行app.py   -P:本地端口和docker端口映射
$docker run -d -P training/webapp python app.py
//查看端口映射信息 PORTS:0.0.0.0:32768->5000/tcp
$docker ps

瀏覽器訪問 及 返回數據 如下:
在這裏插入圖片描述

//當然也可以指定映射的端口
$docker run -d -p 5000:5000 training/webapp python app.py
//查看端口映射情況
$docker port nervous_wiles

//查看容器內容進程
$docker top nervous_wiles

//查看容器的底層 它會返回一個 JSON 文件記錄着 Docker 容器的配置和狀態信息。
$docker inspect nervous_wiles

鏡像

鏡像的基本命令

//查看鏡像
$docker images
//查找鏡像,這裏找nginx,也可以查找別的
$docker search nginx
//拉取鏡像
$docker pull httpd
//刪除鏡像
$docker rmi ubuntu:15.10

//在一個鏡像的基礎上創建一個新鏡像
//-m:描述  -a:作者   id  新鏡像名稱 
$docker commit -m="wd_ubuntu_images" -a="wangdong" 8e3130506cbc wd/ubuntu:v1.0

//修改鏡像標籤 docker tag <ID> <NAME>:<TAG>
$docker tag 4d1cbc59f020 wd/centos:test_tag

手動diy一個鏡像

$vim Dockerfile  //創建一個文件,在文件中寫入如下內容

FROM    centos:6.7
MAINTAINER      Fisher "[email protected]"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
  • 每一個指令都會在鏡像上創建一個新的層,每一個指令的前綴都必須是大寫的
  • 第一條FROM,指定使用哪個鏡像源
  • RUN 指令告訴docker 在鏡像內執行命令,安裝了什麼
$docker build -t wd/centos:6.7 .
  • -t :指定要創建的目標鏡像名
  • . :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑
$docker images   //查看新創建的鏡像

更多Dockerfile說明和用法:https://www.runoob.com/docker/docker-dockerfile.html

倉庫

首先在阿里雲上創建一個倉庫,創建教程:https://www.cnblogs.com/zsifan/p/11722137.html
操作步驟在倉庫的基本信息中
別問我爲什麼不用:dockerhub

//登錄阿里雲倉庫,具體鏈接到哪 看你倉庫建在哪,我這裏建在北京,密碼是你創建倉庫的密碼
$sudo docker login --username=阿里雲賬戶名 registry.cn-beijing.aliyuncs.com

//修改標籤,必須修改爲阿里雲給的固定格式,tag可以自己定
$docker tag 4d1cbc59f020 registry.cn-beijing.aliyuncs.com/wshr/wshr_yutiandou:test_image

//上傳到倉庫
$docker push registry.cn-beijing.aliyuncs.com/wshr/wshr_yutiandou:test_image

//拉取鏡像
$docker pull registry.cn-beijing.aliyuncs.com/wshr/wshr_yutiandou:test_image

未完待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章