本文安裝環(huán)境為阿里云的centeros8.1版本斩萌。
安裝docker需要linux內(nèi)核大于3.10缝裤,查看內(nèi)核指令,低于3.10需要升級內(nèi)核版本
uname -r
應(yīng)為阿里官方源不帶docker颊郎,所以需要添加源
#安裝系統(tǒng)工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#添加docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝docker
yum -y install docker-ce --nobest
啟動docker
systemctl start docker
修改docker獲取鏡像地址憋飞,原來的地址在國外,要獲取鏡像會很慢
vim /etc/docker/daemon.json
添加以下內(nèi)容
{
"registry-mirrors":[
"http://hub-mirror.c.163.com"
],
"labels":[
"name=docker_server_2"
]
}
重啟一下姆吭,嘗試拉取
docker安裝完成榛做。
下面是我嘗試過的一些操作,相信情況請看官網(wǎng)文檔或自行百度
Centos 7下docker使用與安裝
使用網(wǎng)絡(luò)源
備份yum源:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下載網(wǎng)易yum源
cd /tmp
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache
(
使用光盤源
mkdir /mnt/cdrom
vim /etc/fstab
添加
/dev/sr0 /mnt/cdrom iso9660 defaults 0 0
掛載光盤
mount -t iso9660 /dev/sr0 /mnt/cdrom
備份yum文件
cd /etc
tar -zcvf /tmp/yum.tar.gz yum.repos.d/
cd /etc/yum.repos.d/
rm -rf *
cd /tmp
tar -zxvf yum.tar.gz
cd yum.repos.d
cp CentOS-Media.repo /etc/yum.repos.d/
vim /etc/yum.repos.d/CentOS-Media.repo
baseurl=file:////mnt/cdrom/
enabled=1
)
查看內(nèi)核版本 內(nèi)核版本需大于3.10
uname -r
移除舊版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
安裝系統(tǒng)工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝docker
yum -y install docker-ce
測試docker是否安裝
systemctl start docker
docker run hello-world
添加配置文件
vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"labels": ["name=docker_server_2"]
}
容器的基本操作
輸出一條語句
docker run centos echo 'Hello World'
創(chuàng)建一個名字為base01的 交互式bash
docker run --name=bash01 -i -t centos /bin/bash
列出最近創(chuàng)建的容易 -a 全部 -l最近
docker ps [-a] [-l]
查看配置容器信息
docker inspect [標(biāo)識]
啟動一個已創(chuàng)建的容器
docker start -i [標(biāo)識]
停止一個運行中的容器
docker stop [標(biāo)識]
刪除一個已停止的容器 docker rm $(docker ps -aq)
docker rm [標(biāo)識]
查看進程產(chǎn)生的日志 -t 帶格式輸出
docker logs -t [標(biāo)識]
查看進程使用端口
docker port [標(biāo)識] 或docker ps [標(biāo)識]
查看web程序容器進程
docker top [標(biāo)識]
守護式創(chuàng)建
創(chuàng)建一個名字為base01的 交互式bash
docker run --name=bash01 -i -t centos /bin/bash
按Ctrl+Q或者Ctrl+P切換至守護進程
訪問一個守護進程
docker attach [標(biāo)識]
訪問一個守護進程執(zhí)行命令
docker exec -it [標(biāo)識] [命令]
以后臺進程的方式每隔一秒輸出一次Hello world
docker run --name dc1 -d centos /bin/sh -c "while true;do echo hello world;sleep 1; done"
容器使用
抓取一個遠程鏡像
docker pull training/webapp
使用遠程鏡像啟動一個線程 -d后臺運行 -P指定默認端口 -p 本機端口:虛擬機端口 指定端口
docker run --name test-webapp -d -P training/webapp python app.py
鏡像使用
列出本地擁有的鏡像 -q 只查詢ID
docker images
獲取一個遠程鏡像
docker pull [鏡像名:版本信息]
搜索鏡像信息
docker search [鏡像名]
根據(jù)本地進程創(chuàng)建一個鏡像 -m 更新信息 -a 作者 test-webapp(進程名稱) mhz/test:v2(新鏡像名稱:版本號)
docker commit -m "test update" -a "mhz" test-webapp mhz/test:v2
創(chuàng)建鏡像:
Dockerfile: FROM 指定鏡像源 RUN 在鏡像中執(zhí)行命令
# 注釋信息
#指定使用鏡像
FROM centos
#指定鏡像所有者
MAINTAINER Fisher "fisher@sudops.com"
#指定鏡像運行的命令 會在當(dāng)前鏡像創(chuàng)建一個新的分層
RUN /bin/echo 'root:123456' |chpasswd
#指定鏡像使用的端口 需要在運行時用-p 指定
EXPOSE 80
#指定容器運行時的默認行為 會被覆蓋
CMD /usr/sbin/sshd -D
#指定容器運行時的默認行為 不會被覆蓋
ENTRYPOINT /usr/sbin/sshd -D
#ADD 引用文件路徑 目標(biāo)文件路徑 含解壓
ADD index.html /var/www/
#COPY 不解壓
COPY index.html /var/www/index.html
#WORKDIR [path] 指定工作目錄 cmd運行目錄在此下執(zhí)行
#ENV [k=v] 指定環(huán)境變量
#USER [用戶名]指定用戶
#VOLUME ["數(shù)據(jù)卷路徑",...] #指定一個掛載的數(shù)據(jù)卷
docker build -t 鏡像名:版本號 -f docker_build_file 保存路徑 [--no-cache]
如果Dockerfile在當(dāng)前目錄 使用 . 即可
docker build -t mhz/testbuild .
克隆一個鏡像
docker tag [標(biāo)識] [鏡像名:版本號]
查看鏡像構(gòu)建過程
docker history [標(biāo)識]
刪除鏡像 docker rmi $(docker images -q)
docker rmi [標(biāo)識]
上傳鏡像
docker push [標(biāo)識]
遠程連接
服務(wù)端
cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.back
vim /lib/systemd/system/docker.service
在[service]下添加
EnvironmentFile=/etc/default/docker
修改ExecStart
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock $DOCKER_OPTS
vim /etc/default/docker -H 開放一個遠程連接 [tcp|unix|fd://ip:端口]
DOCKER_OPTS=" -H tcp://0.0.0.0:2375"
查看連接
curl http://127.0.0.1:2375/info
客戶端
遠程訪問服務(wù)器 一次性
docker -H [tcp|unix|fd://ip:端口] 命令
長期
export DOCKER_HOST="[tcp|unix|fd://ip:端口]"
export DOCKER_HOST="tcp://192.168.65.233:2375"
取消
export DOCKER_HOST=""
網(wǎng)絡(luò)管理
添加網(wǎng)橋管理
yum install -y bridge-utils
修改虛擬網(wǎng)卡地址
ifconfig docker0 192.168.200.1 netmask 255.255.255.0
創(chuàng)建新網(wǎng)橋
brctl addbr br0
配置新網(wǎng)橋地址
ifconfig br0 192.168.200.1 netmask 255.255.255.0
容器內(nèi)連接:默認允許連接
創(chuàng)建鏡像
vim /etc/default/docker
DOCKER_OPTS="-b br0"
touch Dockerfile
vim Dockerfile
FROM centos
RUN yum install -y net-tools
RUN yum install -y httpd
EXPOSE 80
CMD /bin/bash
docker build -t image/test_network .
vim /etc/default/docker
--icc=false #拒絕容器內(nèi)鏈接
--icc=false --iptables=true #運行特定的容器相鏈接
docker run --name test_network_1 -it image/test_network
docker run --name test_network_2 -it image/test_network
#--link給鏈接設(shè)置別名 --icc=false --iptables=true設(shè)置時能與特定的容器連接
docker run --name test_network_2 -it --link=test_network_1:webtest image/test_network
#如果直接啟動可以忽略{
docker start test_network_1 test_network_2 test_network_3
}
docker attach test_network_3
ping webtest
如果ping不同可以嘗試{
#查看路由信息
iptables -L -n
#清空路由信息
iptables -F
}
數(shù)據(jù)卷
docker run -it -v 本機共享目錄:鏡像共享目錄:權(quán)限 鏡像名 指令
docker run -it --name share_test_1 -v /tmp/share/docker:/tmp/share/docker centos /bin/bash
# --volumes-from [容器名]傳遞一個數(shù)據(jù)掛在卷的配置
docker run --name share_test_2 -it --volumes-from share_test centos /bin/bash
備份 在添加一個共享目錄内狸,利用tar進行備份和解壓
docker run --name test_backup --volumes-from share_test_1 -v /tmp/backup/docker:/backup centos tar -zcvf /backup/share_test_1.tar /tmp/share/docker
解壓
docker run --name test_release_backup --volumes-from share_test_1 -v /tmp/backup/docker:/backup centos tar -zxvf /backup/share_test_1.tar /tmp/share/docker
跨主機的互聯(lián)
安裝weave
curl -L git.io/weave -o /usr/local/bin/weave
chmod a+x /usr/local/bin/weave
啟動weave
weave launch [目標(biāo)連接IP]
創(chuàng)建一個容器
docker run --name test_link -it centos /bin/bash
將容器添加至weave控制
weave attach 192.168.1.3/24 test_link
嘗試ping另一容器地址
ping 192.168.1.1
查看容器ip地址
weave ps