docker 容器部署


docker 介紹

# 1 docker概念:
	-版本(17.x以上,都是新版本),docker ce 和docker ee
	-輕量級,環境問題(開發一套環境,運維一套環境)
  -鏡像和容器:鏡像是一系列文件:redis鏡像(linux系統+redis軟件)  容器:當成操作系統
  -隔離:容器里部署我的項目
  -宿主機:運行docker軟件的機器
  -c/s架構:通過resful交互
  
# 2 鏡像操作
	-搜索鏡像:docker search 鏡像名字 
  -下載鏡像:docker pull 鏡像名字:tag   # 如果不跟,默認下載最新的(******)
  -查看本地鏡像:docker images   #(****)
  -刪除本地鏡像:docker rmi 鏡像id/鏡像名字
  	docker rmi 4453 778 333 
    
# 3 容器操作
	-docker ps  # 查看正在運行的容器
  -docker ps -a # 查看所有容器(運行和停止)
  -狀態:創建,運行,停止,暫停
  -啟動和停止:dokcer stop 容器id/容器名字   
  -docker start 容器id/容器名字
  

1 容器操作

# 1 容器創建
# 創建一個容器,執行的第一條命令是/bin/bash    沒有運行
docker create -it --name=mycentos1 centos:7 /bin/bash
# 如果后面跟的命令是一個能夯住的命令,容器在啟動的時候,會一直運行,否則,容器一啟動就停止
ps -a :
/bin/bash:

-i:表示運行容器
-t:表示容器啟動后會進入其命令行。加入這兩個參數后,容器創建就能登錄進去。即分配一個偽終端。
--name :為創建的容器命名。
-d:在run后面加上-d參數,則會創建一個守護式容器在后台運行(這樣創建容器后不會自動登錄容器,如果只加-i -t兩個參數,創建后就會自動進去容器)。


-p:表示端口映射,前者是宿主機端口,后者是容器內的映射端口。可以使用多個-p做多個端口映射
-v:表示目錄映射關系(前者是宿主機目錄,后者是映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上。
# 2 容器運行
docker start 容器id/容器名字
# 3 創建並運行
docker run -di --name=mypython  python:3.6 # 創建並運行(后台運行)
  
docker run -idt --name=mypython  python:3.6 # 創建並運行(前台運行,相當於在容器內部)
docker run -it --name=mypython  python:3.6  
-在容器內部,  python  -t相當於:/bin/bash

# 5 進入容器內部操作
# 在容器上執行ps -a
docker exec 85768eb78045 ps -a
docker exec -it 85768eb78045 /bin/bash  # 當做進入到容器
# Python容器
docker exec -it 11f702f88de6 python

# 以后,進入容器(相當於)
docker exec -it 11f702f88de6 /bin/bash

# attach:連到第一個進程上
docker attach 11f702f88de6

# ssh連接(容器安裝ssh服務)

# 4 容器刪除
docker rm 容器id/容器名字



##### 總結:
docker run:創建並運行         
docker exec:容器執行命令(通常用來:進入容器) docker exec -it 容器id/容器名字 /bin/bash


# 5 文件拷貝
# 從宿主機copy文件到容器
docker cp 1.txt centos7:/home  # 把當前路徑下的1.txt拷貝到容器的/home
# 從容器copy文件到宿主機
docker cp centos7:/home/1.txt 1.txt  # 把容器home路徑下的1.txt拷貝到當前路徑下

2 網絡和數據卷

# 1 目錄掛載(數據卷) 把宿主機的目錄映射到容器  宿主機test文件夾映射到容器內部
docker run -di --name=mycentos -v /root/test:/home centos:7
# 2 端口映射(網絡)
docker run -di --name=myredis -p 6378:6379 redis
  
# 都可以跟多個

# 查看容器信息

docker inspect 容器名稱(容器ID) 
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql

3 應用部署

# docker中部署服務(redis,mysql,nginx)
# 安裝mysql
# 1 拉一個鏡像
docker pull mysql:5.7
# 2 運行起容器來
docker run -di --name=mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

4 備份遷移

# 容器保存為鏡像
#            容器名字   鏡像名字
docker commit centos7 my_image_centos7
# 把鏡像打包成一個壓縮文件
#把my_image_centos7鏡像壓縮到centos_my.tar中
docker  save -o centos_my.tar my_image_centos7
# 把壓縮文件恢復成鏡像
docker load -i centos_my.tar

5 dockerfile

# Dockerfile是由一系列命令和參數構成的腳本,這些命令應用於基礎鏡像並最終創建一個新的鏡像
# 文件文件名必須叫 Dockerfile

FROM python:3.6
MAINTAINER lqz
RUN pip install django==1.11.9  -i https://pypi.doubanio.com/simple
RUN mkdir /home/lqz

WORKDIR /home

docker build -t='django_img' .   # 構建出django_img 鏡像

6 私有倉庫

# 公司自己的鏡像,放到私有倉庫(公司內部,張三,李四,都可以使用私有倉庫的鏡像)
# 私有倉庫本質就是一個web項目(linux+registry(用其他語言寫的一個web服務))

# 1 docker pull registry   拉取registry鏡像
# 2 docker run -di --name=registry -p 5000:5000 registry  運行容器
# 3 瀏覽器訪問:http://175.24.103.108:5000/v2/_catalog  返回空
#修改daemon.json

vi /etc/docker/daemon.json

"insecure-registries":["175.24.103.108:5000"]
  
# 4 重啟docker 服務(所有容器都是停止狀態)
systemctl restart docker

# 5 啟動registry容器
docker start registry

# 6 標記鏡像
docker tag django_img 175.24.103.108:5000/django_img

# 7 上傳鏡像(私有倉庫)
docker push 175.24.103.108:5000/django_img
  
#8  再從瀏覽器訪問http://175.24.103.108:5000/v2/_catalog
能看到剛剛上傳的鏡像

# 以后只要同時配置了daemon.json,再拉取鏡像,優先從私有倉庫拉,沒有在去國外


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM