Docker(二) 搭建與使用

Docker 使用入門

下載並安裝Docker

在有網的電腦上安裝Docker,簡直輕而易舉,以下要討論的是如何離線安裝Docker

  1. 準備環境

    1. Centos 7 的linux主機一臺
    2. 新安裝的有網的linux虛擬機一臺
  2. 大致步驟

    1. 在有網的虛擬機中,下載docker rpm及其依賴的rpm包
    2. 將這些rpm包導入到 離線的linux主機中
    3. 手工安裝 這些 rpm包
    4. 測試是否完成
    5. 注意: 兩臺主機的系統版本應一致或非常接近
  3. 在虛擬機中輸入以下命令

    1. 添加 Docker 官方的yum源
    	$ yum-config-manager --add-repo \
    	 https://download.docker.com/linux/centos/docker-ce.repo
    	$ yum clean all && yum makecache
    
    1. 下載 yumdownloader 軟件
    	$ yum install -y yum-utils
    
    1. 使用yumdownloader 下載docker rpm包及其依賴包
    	$ yumdownloader docker-ce --resolve --destdir=/root/package
    
    1. 查看是否下載成功
    	$ ls /root/package
    
  4. 安裝docker

    1. 安裝rpm包
    	$ cd package
    	$ rpm -ivh *.rpm --no-deps --force
    
    1. 啓動docker
    	$ systemctl enable docker
    	$ systemctl start docker
    
    1. 檢查是否安裝成功(剛安裝好,無鏡像,無容器)
    	$ docker images
    	REPOSITORY  TAG  IMAGE ID  CREATED  SIZE	
    	$ docker ps
    	CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS   PORTS   NAMES
    

安裝注意事項

  1. 有網的虛擬機必須沒有安裝過docker,最好什麼軟件都沒安裝過
    • 因爲yumdownloader只會下載本機沒有的rpm包
    • 如果那臺虛擬機已經安裝過了docker,文件夾內就不會有哪些依賴的rpm包
    • 從而導致安裝失敗
  2. 安裝不同版本的docker
    • 目前官方鏡像源只有 centos 7,無 centos 6 的下載包

初步使用 (未完待續)

基礎使用步驟

  1. 搜索所需的docker docker search nginx
[root@VM_0_7_centos ~]# docker search nginx
INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/nginx                             Official build of Nginx.                        12457     [OK]       
docker.io   docker.io/jwilder/nginx-proxy               Automated Nginx reverse proxy for docker c...   1716                 [OK]
docker.io   docker.io/richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable ...   751                  [OK]
  1. 從倉庫中拉取到本地 docker pull nginx
  2. 查看拉取的鏡像 docker images
  3. 運行docker鏡像(將鏡像轉爲容器,並運行該容器)docker run -d nginx
  4. 查看docker 容器狀態docker ps
  5. 進入 docker容器 docker exec -it container_id /bin/bash
  6. 啓停容器 docker start/stop/restart container_id

獲取鏡像的幾種方式

  1. 搜索引擎,直接使用別人做好的鏡像

    1. dockerHub
    2. 代碼github搜索
  2. 從基礎鏡像構建

    1. docker build -t tag:version path
    2. 使用Dockerfile,見官網

導出/導入鏡像

load / save

  1. docker save -o image.tar image_id
  2. docker load -i image.tar
  3. 導入以後,鏡像是沒有名字 docker images
[root@VM_0_7_centos jupyter_notebooks]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
<none>                    <none>              f391e4875ff0        11 days ago         126 MB
  1. 添加倉庫和tag名 docker tag image_id res/tag:1.0
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
res/tag                   1.0                 f391e4875ff0        11 days ago         126 MB

export import

  • export 不可以導出鏡像,只能導出容器
  1. 查看所有容器 docker container ls docker ps -a
  2. 導出 docker export -o image.tar container_id
  3. 導入 docker import image.tar res/tag:1.1

區別與共同點

  1. export 只能導出容器,save 只能導出鏡像,但兩者都是打包成鏡像
  2. 一般export 導出的,使用 import 導入,save 導出的包使用 load 導入
  3. 特殊情況 export 導出的不可load,save導出的包 可以import
  4. export 會把容器的所有文件都打包,而save 只會將鏡像本身,不包括額外添加到鏡像的文件,這點需要注意

如何啓動一個Docker

  1. docker 從原理上說,可以作爲一個完整的操作系統使用,但正常使用應該當作一個服務來使用
  2. 也就是隻使用 start/stop/restart 啓動應用,儘量不適用 exec 進去操作
  3. 也就是搭配Docker 進行使用

Docker 如何修改內核參數,修改socket 最大連接數

root@78f57402fb35:/# echo "net.core.somaxconn = 30000" >> /etc/sysctl.conf 
root@78f57402fb35:/# sysctl -p
sysctl: setting key "net.core.somaxconn": Read-only file system
root@78f57402fb35:/# 
  • 在運行時使用 --privileged 參數,即可修改成功, sysctl -w net.core.somaxconn=128 也可修改
[root@VM_0_7_centos ~]# docker run -it --privileged 48c bash 
root@fe0be6f2b1dd:/# echo "net.core.somaxconn = 30000" >> /etc/sysctl.conf
root@fe0be6f2b1dd:/# sysctl -p
net.core.somaxconn = 30000
root@fe0be6f2b1dd:/# 
root@fe0be6f2b1dd:/# sysctl -a | grep maxconn
net.core.somaxconn = 30000

docker run

  1. docker run [options] image [command]
  2. docker run 由三部分組成, option 表示一些可選選項,image 表示鏡像,command 是要執行的命令
  3. docker 先尋找存不存在本地鏡像,如不存在,會去dockerHub進行尋找,如dockerHub也無法尋找,則報錯
  4. docker 運行方式分爲兩種
    • 創建容器並進入docker docker run -it image bash
    • 創建容器在後臺運行,並返回container_id docker run -d image
    • 進入容器後,按下 Ctrl + P + Q 可以使得容器在後臺運行,退出容器並保持容器的狀態
    • 也就是docker run -it image bash 然後 Ctrl + P + Q 實現 docker run -d image 的效果
  5. 常用參數
    • -v 將宿主機的文件映射到容器的文件,有點類似於linux 中的軟鏈接, 需要使用絕對路徑
    • -p 暴露端口,並進行映射
    • -P 暴露所有端口
  6. 參考文件
docker run -dit --privileged -p 8889:8889/tcp \
	-v "/usr/local/src/device_control_project/scripts:/usr/local/src/project/scripts/" \
	-v "/usr/local/src/device_control_project/logs/:/usr/local/src/project/logs/" \ 
	-v "/usr/local/src/device_control_project/device_control/:/usr/local/src/project/device_control/" \
	ezcloud/device_control:3.6.8 /bin/bash /usr/local/src/project/scripts/startup.sh
  1. 查看容器 docker ps
  2. 進入容器 docekr exec -it xxx bash
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章