docker 技術全面整理

docker 和 vm 虛擬機技術比較像,但又有一些區別。

vm 像真機一樣有 BIOS ,有硬盤,有網卡,聲卡,可以安裝操作系統, win7 win10 macOS ubuntu centOS,有好用方便的快照功能,隔離性較強,vm 蹦潰不影響宿主,軟件發佈時間長,支持衆多宿主操作系統,XP WIN7 centOS 6。

vm 缺點也是上面的問題,需要自行安裝 操作系統,軟件,啓動慢,大概需要1分鐘,高配電腦,也需要有半分鐘。

docker 可以很方便的拉取 image 運行,省去了自行安裝操作系統和軟件的過程。還可以很方便的進行配置或刪除。隨便安裝ubuntu 14 16 18 僅需要下載 image 就行了。啓動快速,秒開。

docker 缺點是不支持 windows mac OS 這種非 linux 的操作系統,軟件這幾年剛有,僅支持 CentOS 6.8 7 或更高版本,kernel 要求 3.1 以上,僅支持 win10,還是用虛擬機實現。

基本使用

1, 先去 https://www.docker.com/ 註冊一個帳戶 因爲有的 image 需要登錄用戶才能拉取

2, 安裝 docker 在 ubuntu 18  

sudo apt-get install docker.io
sudo docker info

3, 添加 docker 用戶,這樣以後就不必每次都打 sudo 

sudo groupadd docker     #添加docker用戶組
sudo gpasswd -a $USER docker     #將登陸用戶加入到docker用戶組中
newgrp docker     #更新用戶組
docker ps    #測試docker命令是否可以使用sudo正常使用

4,啓用systemctl

sudo systemctl enable docker
sudo systemctl start docker

5, 拉取 nginx 並運行

docker pull nginx
docker run --name "nginx" -p 80:80 -d nginx

  #傳入 html 路徑 交互模式 退出自動刪除容器
  docker run --rm -it -p 8000:80 -v $PWD/html:/usr/share/nginx/html nginx

6, 修改docker 保存的位置, 用軟鏈比較簡單。

sudo mv /var/lib/docker /opt/data/
sudo ln -s /opt/data/docker/ /var/lib/docker

7, 其它的命令

搜索 image
docker search nginx

查看容器運行狀態
docker ps -a 

查看所有鏡像
sudo docker images

僅顯示容器ID
sudo docker ps -aq

停止所有容器
sudo docker stop $(sudo docker ps -aq)

刪除所有容器
sudo docker rm $(sudo docker ps -aq)

進入容器
sudo docker exec -it f66627b76918 /bin/bash

複製容器配置文件
docker cp f66627b76918:/etc/nginx/ .

run 詳細參數
https://docs.docker.com/engine/reference/commandline/run/#options
--detach , -d Run container in background and print container ID
--rm Automatically remove the container when it exits
--interactive , -i Keep STDIN open even if not attached
--tty , -t Allocate a pseudo-TTY

如何打包製作鏡像 image 

Dockerfile  

ENV PORT 8000 #設置變量,可以通過 -e 指定
RUN apt-get update && apt-get install -y ssh && rm -rf /var/lib/apt/lists/* # 執行普通的命令
RUN sed -i 's/# StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config #通過 sed 流文本編譯器來修改文件,經常使用
COPY run.sh /run.sh #複製文件到鏡像中 另一個常用的是 ADD 可以從網絡讀取下載到鏡像
EXPOSE 80 #聲明發布的端口 這裏是 web 的 80
CMD ["/run.sh"] #自動啓動時執行的自定義命令  -d 的時候

開始構建
docker build -t ubuntu-nginx .

 

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