docke 基本安裝使用


 

 

 

特性

容器

虛擬機

啟動

秒級

分鍾級

硬盤使用

一般為 MB

一般為 GB

性能

接近原生

系統支持量

單機支持上千個容器

一般幾十個

容器三大基本概念
鏡像 image
容器 container
倉庫 repository
docker整個生命周期就是這三個概念。

安裝docker
1.卸載舊版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2.設置存儲庫
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安裝docker社區版
sudo yum install docker-ce
4.啟動關閉docker
systemctl start docker

docker 鏡像加速

#一條命令加速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io

docker基礎命令注釋

[root@docker ~]# docker --help

Usage:
docker [OPTIONS] COMMAND [arg...]

       docker daemon [ --help | ... ]

       docker [ --help | -v | --version ]

A
self-sufficient runtime for containers.

 

Options:

  --config=~/.docker              Location of client config files  #客戶端配置文件的位置

  -D, --debug=false               Enable debug mode  #啟用Debug調試模式

  -H, --host=[]                   Daemon socket(s) to connect to  #守護進程的套接字(Socket)連接

  -h, --help=false                Print usage  #打印使用

  -l, --log-level=info            Set the logging level  #設置日志級別

  --tls=false                     Use TLS; implied by--tlsverify  #

  --tlscacert=~/.docker/ca.pem    Trust certs signed only by this CA  #信任證書簽名CA

  --tlscert=~/.docker/cert.pem    Path to TLS certificate file  #TLS證書文件路徑

  --tlskey=~/.docker/key.pem      Path to TLS key file  #TLS密鑰文件路徑

  --tlsverify=false               Use TLS and verify the remote  #使用TLS驗證遠程

  -v, --version=false             Print version information and quit  #打印版本信息並退出


Commands:

    attach    Attach to a running container  #當前shell下attach連接指定運行鏡像

    build     Build an image from a Dockerfile  #通過Dockerfile定制鏡像

    commit    Create a new image from a container's changes  #提交當前容器為新的鏡像

    cp    Copy files/folders from a container to a HOSTDIR or to STDOUT  #從容器中拷貝指定文件或者目錄到宿主機中

    create    Create a new container  #創建一個新的容器,同run 但不啟動容器

    diff    Inspect changes on a container's filesystem  #查看docker容器變化

    events    Get real time events from the server#從docker服務獲取容器實時事件

    exec    Run a command in a running container#在已存在的容器上運行命令

    export    Export a container's filesystem as a tar archive  #導出容器的內容流作為一個tar歸檔文件(對應import)

    history    Show the history of an image  #展示一個鏡像形成歷史

    images    List images  #列出系統當前鏡像

    import    Import the contents from a tarball to create a filesystem image  #從tar包中的內容創建一個新的文件系統映像(對應export)

    info    Display system-wide information  #顯示系統相關信息

    inspect    Return low-level information on a container or image  #查看容器詳細信息

    kill    Kill a running container  #kill指定docker容器

    load    Load an image from a tar archive or STDIN  #從一個tar包中加載一個鏡像(對應save)

    login    Register or log in to a Docker registry#注冊或者登陸一個docker源服務器

    logout    Log out from a Docker registry  #從當前Docker registry退出

    logs    Fetch the logs of a container  #輸出當前容器日志信息

    pause    Pause all processes within a container#暫停容器

    port    List port mappings or a specific mapping for the CONTAINER  #查看映射端口對應的容器內部源端口

    ps    List containers  #列出容器列表

    pull    Pull an image or a repository from a registry  #從docker鏡像源服務器拉取指定鏡像或者庫鏡像

    push    Push an image or a repository to a registry  #推送指定鏡像或者庫鏡像至docker源服務器

    rename    Rename a container  #重命名容器

    restart    Restart a running container  #重啟運行的容器

    rm    Remove one or more containers  #移除一個或者多個容器

    rmi    Remove one or more images  #移除一個或多個鏡像(無容器使用該鏡像才可以刪除,否則需要刪除相關容器才可以繼續或者-f強制刪除)

    run    Run a command in a new container  #創建一個新的容器並運行一個命令

    save    Save an image(s) to a tar archive#保存一個鏡像為一個tar包(對應load)

    search    Search the Docker Hub for images  #在docker
hub中搜索鏡像

    start    Start one or more stopped containers#啟動容器

    stats    Display a live stream of container(s) resource usage statistics  #統計容器使用資源

    stop    Stop a running container  #停止容器

    tag         Tag an image into a repository  #給源中鏡像打標簽

    top       Display the running processes of a container #查看容器中運行的進程信息

    unpause    Unpause all processes within a container  #取消暫停容器

    version    Show the Docker version information#查看容器版本號

    wait         Block until a container stops, then print its exit code  #截取容器停止時的退出狀態值

 

Run 'docker COMMAND --help' for more information on a command.  #運行docker命令在幫助可以獲取更多信息

dockefile的學習

指令如下
#你的項目依賴於什么操作系統,這里就指定什么操作系統 
FROM scratch #制作base image 基礎鏡像,盡量使用官方的image作為base image
FROM centos #使用base image
FROM ubuntu:14.04 #帶有tag的base image

#label標簽 ,告訴別人,這個dockerfile是誰寫的
LABEL version=“1.0” #容器元信息,幫助信息,Metadata,類似於代碼注釋
LABEL     maintainer=“yc_uuu@163.com"


#run指令是一個萬能指令 

#對於復雜的RUN命令,避免無用的分層,多條命令用反斜線換行,合成一條命令!
RUN yum update && yum install -y vim \
    Python-dev #反斜線換行
RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME”

#
WORKDIR /root #相當於linux的cd命令,改變目錄,盡量使用絕對路徑!!!不要用RUN cd
WORKDIR /test #如果沒有就自動創建
WORKDIR demo #再進入demo文件夾
RUN pwd     #打印結果應該是/test/demo


# ADD是可以將本地代碼,添加到容器空間內
# ADD不僅僅是添加,還可以解壓縮文件,注意!!

ADD and COPY 
ADD hello /  #把本地文件添加到鏡像中,吧本地的hello可執行文件拷貝到鏡像的/目錄
ADD test.tar.gz /  #添加到根目錄並解壓




WORKDIR /root
ADD hello test/  #進入/root/ 添加hello可執行命令到test目錄下,也就是/root/test/hello 一個絕對路徑


#copy 就是將宿主機的文件,拷貝到容器空間內,且沒有解壓效果 


COPY hello test/  #等同於上述ADD效果

ADD與COPY
   - 優先使用COPY命令
    -ADD除了COPY功能還有解壓功能
    
    
    
添加遠程文件/目錄使用curl或wget

ENV #環境變量,盡可能使用ENV增加可維護

ENV MYSQL_VERSION 5.7 #設置一個mysql常量

RUN yum install -y mysql-server=“${MYSQL_VERSION}”


#dockerfile實戰,構建自己的flaks鏡像 

1.准備一個flask代碼文件,內容如下
cat s18-flask.py 
#coding:utf8
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
    return "hello,i am docker"
if __name__=="__main__":
    app.run(host='0.0.0.0',port=8080)

    
2.編寫dockerfile
FROM centos        #指定centos基礎鏡像 
COPY CentOS-Base.repo /etc/yum.repos.d/        #拷貝宿主機的文件,到容器空間下
COPY epel.repo /etc/yum.repos.d/             #拷貝宿主機的文件,到容器空間下
RUN yum clean all                             #執行清空yum緩存的命令
RUN yum install python-setuptools -y        #想安裝python依賴工具
RUN easy_install flask                        #是想讓docker自動的幫咱們安裝python2的flask模塊
COPY s18-flask.py /opt/                        #把本地的代碼文件,拷貝到容器的/opt目錄下 
WORKDIR /opt                                #進入到/opt目錄下
EXPOSE 8080                                    #暴露容器的8080端口,供給外部宿主機去訪問
CMD ["python","s18-flask.py"]                #cmd代表你要執行的命令



3.構建build這個dockerfile
確保文件都准備好了,如下所示
[root@wangdachui s18dockerfile]# ls
CentOS-Base.repo  Dockerfile  epel.repo  s18-flask.py


4.構建dockerfile
docker build .  

5.通過自己構建的鏡像,運行一個flask程序
docker run -d -it --name flask  -p 5555:8080  s18-flask 

6.通過瀏覽器去訪問linux宿主機的 5555端口,即可訪問到flask程序

docker 倉庫 構建 私有鏡像

1.下載docker私有鏡像
docker pull registry

2.修改docker的配置文件
#修改如下配置文件
vim /etc/docker/daemon.json


修改內容如下
{"registry-mirrors": ["http://95822026.m.daocloud.io"],
"insecure-registries":["192.168.226.128:5000"]
}

3.修改docker的service配置文件,讓它加載/etc/docker/daemon.json
修改如下文件
vim /lib/systemd/system/docker.service

添加如下配置到 [service]代碼塊中
EnvironmentFile=-/etc/docker/daemon.json

4.重啟docker的服務
systemctl daemon-reload
systemctl restart docker

5.重新啟動一個私有鏡像倉庫的容器實例

docker run --privileged=true -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry

--privileged=true docker容器的安全機制:設置特權級運行的容器


6.推送本地鏡像,到私有倉庫中
docker push 192.168.226.128:5000/s18-hello-world

7.檢查docker私有倉庫的api地址,檢查json數據
http://192.168.226.128:5000/v2/_catalog

8.嘗試下載私有倉庫的鏡像
docker pull 192.168.226.128:5000/s18-hello-world

 

rabbitmq 消息隊列的學習

注意,保證服務器的內存足夠,磁盤足夠,以及刪除/etc/hosts中沒有用的dns解析 

1.優點,能夠保證消息數據持久化,不丟失


安裝學習rabbitmq消息隊列,配置好阿里雲的yum源

1.yum -y install erlang  rabbitmq-server

2.啟動rabbitmq服務端
systemctl start rabbitmq-server

3.開啟rabbitmq的web控制台
rabbitmq-plugins enable rabbitmq_management

4.重啟后生效web界面
http://192.168.226.128:15672/

5.創建rabbitmq用戶
sudo rabbitmqctl add_user yangyang 1236.設置用戶的權限,為admin管理員權限
sudo rabbitmqctl set_user_tags yangyang administrator

7.允許yangyang這個用戶對所有的隊列進行讀寫
sudo rabbitmqctl set_permissions -p "/" yangyang ".*" ".*" ".*"


8.可以用yangyang登錄 rabbitmq的后台界面管理了

rabbitmq練習ack機制,消息隊列持久化,查看博客
https://www.cnblogs.com/pyyu/p/10318053.html

 


免責聲明!

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



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