docker下載安裝(官方)
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
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
systemctl start docker
docker下載安裝(阿里雲)
vim /etc/yum.repos.d/Centos-7.repo
yum install -y docker
rpm -qi docker
systemctl status docker
docker概念
docker三大基本概念
# 鏡像 image
# 容器 container
# 倉庫 repository
# 更高效的利用系統資源
# 更快速的啓動時間
# 一致的運行環境
# 持續交付和部署
# 更輕鬆的遷移
docker經常使用命令
鏡像image
docker search hello-world # hello-world 爲鏡像名字
docker pull docker.io/hello-world
docker images
docker image ls
docker run fce # fce爲鏡像id前三位
docker run hello-world # hello-world 爲鏡像name
docker run -it centos /bin/bash # -it 交互式終端
docker run --name mydocker -it centos /bin/bash # 自定義容器名mydocker
docker rmi 鏡像id
docker rmi -f 鏡像id # -f強制刪除
容器
docker container ls
docker ps -a
docker start 容器id
docker exec -it 容器id /bin/bash
docker rm 容器id
docker rm -f 容器id # -f強制刪除
docker run -it 鏡像名 /bin/bash
docker exec it 容器id /bin/bash
# 兩條命令的效果都是進入到一個容器
run:
"""
run 後面跟的是鏡像名;當鏡像不存在時,會自動下載
run 運行這個鏡像,並建立一個新容器
"""
exec:
"""
exec 後面跟的是容器id;
exec 且該容器必定要是啓動狀態,若是沒有啓動要先用docker start 容器id啓動
"""
docker commit 容器id
docker save centos > /opt/centos.tar.gz # 會自動壓縮
docker load < /opt/centos.tar.gz
docker port 容器id
docker top 容器id
# 1. 在容器內運行一個app.py程序,運行在5000端口
# 2. 使用-P參數隨機映射一個端口到虛擬機上
# 2.1 使用-p參數自定義一個端口到虛擬機上,如9000段口
# 咱們能夠經過虛擬機的ip 加端口進行訪問
倉庫
# docker提供了一個相似與github的倉庫,你能夠把你本地的鏡像發佈到docker提供的倉庫中,這樣別人就能夠直接從docker倉庫中下載你的鏡像鏡像使用
# 1.註冊docker
https://hub.docker.com/
# 2.在linux中登陸dockerhub
docker login
# 3.更名
docker tag 原鏡像名 帳號/鏡像名 # 此地必定要保證鏡像名前面的tag和帳號一致
# 如:docker tag centos aaa/centos 假設dockerhub帳號爲aaa
# 4.上傳
docker push aaa/centos:latest
# 5.從docker上下載鏡像
docker pull aaa/centos:latest
# 像上面這種鏡像倉庫是公開的,其餘人是能夠下載的,並不安全,所以還可使用docker registry官方提供的私有倉庫
# 1.官方提供私有倉庫docker registry用法
https://yeasy.gitbooks.io/docker_practice/repository/registry.html
# 2.一條命令下載registry鏡像而且啓動私有倉庫容器
docker pull registry
# 3.私有倉庫會被建立在容器的/var/lib/registry下,所以經過-v參數將鏡像文件存儲到本地的/opt/data/registry下,端口映射容器中的5000端口到宿主機的5000端口
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
# 4.檢查啓動registry容器
docker ps -a
# 5.測試連接容器
telnet 192.168.xx.xx 5000 # ip + 宿主機的端口
# 6.修改鏡像tag,須要以docker registry的地址段開頭
docker tag hello-world:latest 192.168.xx.xx:5000/hello-world:latest
# 7.查看鏡像,找到registry鏡像
docker images
# 8.修改配置
"""
8.1 Docker 默認不容許非 HTTPS 方式推送鏡像。咱們能夠經過 Docker 的配置選項 來取消這個限制,這裏必須寫正確json數據
"""
vim /etc/docker/daemon.json # 打開這個文件
"insecure-registries":["192.168.xx.xx:5000"] # 添加這個配置
"""
8.2 寫入到docker服務中,寫入到[Service]配置塊中,加載此配置文件
"""
vim /lib/systemd/system/docker.service # 打開這個文件
EnvironmentFile=-/etc/docker/daemon.json # 添加這行配置
systemctl daemon-reload # 從新加載docker配置
systemctl restart docker # 重啓docker
# 9.由於重啓docker服務,因此容器都會掛掉,須要重啓容器
docker ps -a
docker start 容器id
# 10.推送本地鏡像
docker push 192.168.xx.xx:5000/hello-world
# 11.訪問
瀏覽器:http://192.168.xx.xx:5000/v2/_catalog