# docker
一、簡介
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
二、安裝
# Centos 7
yum install -y docker
#啓動
/etc/init.d/docker start
三、日常操作
#a、下載鏡像
docker pull centos
#b、查看本地鏡像
docker images
# 從docker倉庫搜索docker鏡像
docker search centos
# 啓動一個容器
docker run -it centos /bin/bash
#退出容器,關閉容器
exit
# 退出容器,不關閉
Ctrl+d
# 查看正在運行的容器,-a 停止的容器也顯示
docker ps -a
# 停止容易
docker stop 容器id
# 登錄一個容器
docker exec -it 容器id /bin/bash
# 刪除一個容器
docker rm 容器id
# 保存一個容器鏡像
docker commit -m "說明信息" -a '作者信息' 容器id gary234:latest
# 創建容器直接啓動
docker run -itd centos bash
下載鏡像地址
http://download.openvz.org/template/precreated/centos-6-x86_64.tar.gz
四、磁盤數據管理
-- 特別注意要關閉selinux權限,不然沒有權限修改目錄,
啓動一個容器,掛載機器的目錄到Docker容器的一個目錄中
docker run -itd -v /data/:/data/ centos bash
在啓動一個容器,共享上一個docker容器的目錄,實現兩臺docker容器數據共享
docker run -itd --volumes-from big_shirley centos bash
# big_shirley容器名稱,最後一個字段
# centos 鏡像名
五、將物體機器端口映射到docker容器
docker run -p 5123:80 -itd gary_centos bash
# 多端口映射
docker run -itd -p 123-155:123:155 gary_centos bash
六、備份容器和鏡像
備份鏡像
docker save -o mysql.tar mysql
# mysql.tar 保存的文件
# mysql 鏡像名稱
導出容器
docker export 7e8a0dc1cb88 > mysql.tar
恢復鏡像
cat mysql.tar | docker import - mysql:latest
七、docker橋接網絡( 橋接操作會斷開暫時端口網絡,建議寫成腳本 運行 或者 在虛擬機內操作)
7.1 Centos 7
# 停止docker服務器 systemctl stop docker # 使用ifconfig查看docker是否有網卡,如果有網卡就先刪除 ip link set dev docker0 down brctl delbr docker0 ## brctl要安裝 # 新建橋接虛擬網卡br0 brctl addbr br0 ip link set dev br0 up ip addr add 192.168.1.210/24 dev br0 #爲br0分配宿主機的ip地址 ip addr del 192.168.184.123/24 dev ens0 #清空宿主機的Ip地址 brctl addif br0 ens0 # 將宿主機網卡掛到br0上 ip route add default via 192.168.1.1 dev br0 #爲br0設置路由 # 修改docker配置文件,Centos7的在/etc/sysconfig/docker,其他服務器到這個網址找 https://docs.docker.com/installation/#installation vim /etc/sysconfig/docker #在OPTIONS='--selinux-enabled'這行中修改爲OPTIONS='--selinux-enabled -b=br0'即讓docker服務啓動時使用br0網卡進行橋接 #啓動docker systemctl start docker # 下載 pipework 命令,進行橋接 git clone https://github.com/jpetazzo/pipework cp pipework/pipework /usr/local/bin/ # 啓動一個無網絡的docker容器 docker run -itd --net=none --name=gar123 centos bash # 橋接 192.168.1.211 容器IP,192.168.1.210 宿主機IP pipework br0 gar123 192.168.1.211/[email protected] ### 到這裏也就完成了容器橋接,可以通過其他機器直接訪問docker容器 # 安裝sshd服務 ## 安裝軟件 yum -y install openssh-server ## 生成啓動sshd服務器需要的密鑰文件 ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_ecdsa_key ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_ed25519_key ## 啓動sshd服務器 /usr/sbin/sshd
重要:dockerfile創建redis容器
############## # DockerFile ############## from centos MAINTAINER gary [email protected] RUN yum install -y gcc make openssl-devel automake make ADD redis /opt/soft/redis WORKDIR /opt/soft/redis RUN tar xvzf redis-3.2.8.tar.gz WORKDIR redis-3.2.8 # 安裝redis RUN make #RUN make PREFIX=/usr/local/redis install RUN make install RUN cp redis.conf /etc/ RUN sed -i 's/daemonize no/daemonize yes/g' /etc/redis.conf EXPOSE 6379 ENTRYPOINT ["redis-server"] #CMD "/usr/local/redis/bin/redis-server" "/etc/redis.conf"
運行dockerfile
docker build -t gary_centos /usr/local/sbin/docker/
啓動容器
docker run -d -p 3004:6379 hp --bind 0.0.0.0