docker基本
1.換源
vi /etc/docker/daemon.json
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
2.拉取并啟動(dòng)容器
docker以u(píng)buntu15.10鏡像創(chuàng)建一個(gè)新容器,然后在容器里執(zhí)行/bin/echo 'test',輸出結(jié)果
docker run ubuntu:15.10 /bin/echo 'test'
docker進(jìn)入終端模式 -i輸入流 -t打開(kāi)終端
docker run -i -t ubuntu:15.10 /bin/bash
exit退出終端,退出容器
后臺(tái)模式啟動(dòng)容器
docker run -d ubuntu:15.10 /bin/sh -c "sleep test"
查看后臺(tái)運(yùn)行容器
docker ps
container id:容器id
image:使用的鏡像
command:啟動(dòng)容器時(shí)運(yùn)行的命令
created:容器的創(chuàng)建時(shí)間
-
status:容器狀態(tài)
- created(已創(chuàng)建)
- restarting(重啟中)
- running或up(運(yùn)行中)
- removing(遷移中)
- paused(暫停)
- exited(停止)
- dead(死亡)
ports:容器的端口信息和使用的連接類(lèi)型(tcp/udp)
names:自動(dòng)分配的容器名稱(chēng)
docker logs (commonid/name)查看容器內(nèi)的標(biāo)準(zhǔn)輸出
docker logs 1231313
docker stop (commonid/name)停止容器
3.容器使用
獲取鏡像
docker pull ubuntu
使用ubuntu鏡像啟動(dòng)一個(gè)容器
docker run -it ubuntu /bin/bash
參數(shù)說(shuō)明:
-i:交互式操作
-t:終端
ubuntu:ubuntu鏡像
/bin/bash:放在鏡像后的命令,進(jìn)入終端bash命令
退出終端 exit
啟動(dòng)已停止運(yùn)行的容器
查看所有的容器命令
docker ps -a
使用docker start (commonid/name)啟動(dòng)一個(gè)已停止的容器
docker start b750bbbcfd88
進(jìn)入一個(gè)已啟動(dòng)的容器
docker attach b750bbbcfd88
后臺(tái)運(yùn)行-d,加了-d參數(shù)默認(rèn)不會(huì)進(jìn)入容器,想要進(jìn)入容器需要使用docker exec
docker run -itd --name ubuntu-test ubuntu /bin/bash
docker exec -it 123133 /bin/bash
停止一個(gè)容器
docker stop commonid
重啟容器
docker restart commonid
進(jìn)入容器
加-d參數(shù),容器進(jìn)入后臺(tái),可以使用下面的命令進(jìn)入容器
docker attach commonid
docker exec commonid 退出容器終端,不會(huì)導(dǎo)致容器停止
4.導(dǎo)出和導(dǎo)入容器
導(dǎo)出容器
docker export commonid > ubuntu.tar
導(dǎo)入容器快照為鏡像
docker import ubuntu.tar ubuntu:1510
docker import http://example.com/exampleimage.tgz example/imagerepo
查看鏡像
docker images
刪除鏡像
docker image rm name:tag
刪除容器
docker rm -f commonid
清理掉所有處于終止?fàn)顟B(tài)的容器
docker container prune
5.運(yùn)行一個(gè)web應(yīng)用
docker pull training/webapp 載入鏡像
-d讓容器后臺(tái)運(yùn)行
-P將容器內(nèi)部使用的網(wǎng)絡(luò)端口隨機(jī)映射到我們使用的主機(jī)上
docker run -d -P training/webapp python app.py
docker run -d -p 5000:5000 training/webapp python app.py
查看后臺(tái)運(yùn)行狀態(tài)
docker ps
查看容器端口
docker port commonid
查看web應(yīng)用日志
docker logs -f commonid
查看web應(yīng)用容器的進(jìn)程
docker top commonid
使用docker inspect查看docker底層信息
docker inspect name
docker ps -l查詢(xún)最后一次創(chuàng)建的容器
docker鏡像使用
列出鏡像列表
docker images
使用鏡像運(yùn)行容器
docker run -tid ubuntu:15.10 /bin/bash
獲取一個(gè)新的鏡像
docker pull ubuntu:13.10
使用鏡像運(yùn)行容器
docker run -tid ubuntu:13.10 /bin/bash
查找鏡像
docker search httpd
運(yùn)行鏡像
docker run httpd
刪除鏡像
docker rmi httpd
創(chuàng)建鏡像
1. 從已經(jīng)創(chuàng)建的容器中更新鏡像,并且提交這個(gè)鏡像
2. 使用dockerfile指令來(lái)創(chuàng)建一個(gè)新的鏡像
更新鏡像
1. 使用鏡像來(lái)創(chuàng)建一個(gè)容器,在容器中使用apt-get update更新,exit退出容器
2. 換源更新下載vim
mv /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
docker run -it ubuntu:15.10 /bin/bash
-m:提交的描述信息 -a:指定鏡像作者 1231123:容器id runoob/ubuntu:v1:指定要?jiǎng)?chuàng)建的目標(biāo)鏡像名
docker commit -m="update" -a="runoob" 131313 runoob/ubuntu:v1
docker tag ivan/gcc:v1 843741683/gcc:v1
docker push 843741683/gcc:v1
docker images
查看更新的鏡像
構(gòu)建鏡像
docker build 創(chuàng)建一個(gè)Dockerfile告訴docker如何構(gòu)建我們的鏡像
FROM centos:6.7
RUN /bin/echo 'root:123456'|chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456'|chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
-t:指定要?jiǎng)?chuàng)建的目標(biāo)鏡像名
.:dockerfile文件所在的目錄
docker build -t runoob/centos:6.7 .
docker images
docker run -it runoob/centos:6.7 /bin/bash
設(shè)置鏡像標(biāo)簽
docker tag commonid runoob/centos:dev
6.docker容器鏈接
1.網(wǎng)絡(luò)端口映射
-P:是容器內(nèi)部端口隨機(jī)映射到主機(jī)的高端口
-p:是容器內(nèi)部端口綁定到指定的主機(jī)端口
指定ip端口udp
docker run -d -P training/webapp python app.py
docker ps
docker run -d -p 5000:5000 training/webapp python app.py
docker run -d -p 127.0.0.1:5001:5000/udp training/webapp python app.py
docker port name 5000
2.docker 容器互聯(lián)
docker連接會(huì)創(chuàng)建一個(gè)父子關(guān)系,其中 父容器可以看到子容器的信息
容器命名 --name
docker run -d -P --name runoob training/webapp python app.py
docker ps -l
3.新建網(wǎng)絡(luò)
-d:參數(shù)指定docker網(wǎng)絡(luò)類(lèi)型,有bridge.overlay
docker network create -d bridge test-net
docker network ls
docker run -itd --name test1 --network test-net ubuntu /bin/bash
docker run -itd --name test2 --network test-net ubuntu /bin/bash
apt-get update
apt install iputils-ping
docker exec -it test1 /bin/bash
ping test2
配置dns
查看容器dns信息
docker run -it --rm ubuntu cat etc/resolv.conf
-rm:容器退出時(shí)自動(dòng)清理容器內(nèi)部的文件系統(tǒng)
-h hostname或者--hostname=HOSTNAME:設(shè)定容器的主機(jī)名,它會(huì)被寫(xiě)到容器內(nèi)的/etc/hostname和/etc/hosts
--dns=ip_address:添加dns服務(wù)器到容器的/etc/resolv.conf,讓容器用這個(gè)服務(wù)器來(lái)解析所有不在/etc/hosts中的主機(jī)名
--dns-search=DOMAIN:設(shè)定容器的搜索域,當(dāng)設(shè)定搜索域?yàn)?com
docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu
7.docker倉(cāng)庫(kù)管理
docker hub
docker login
docker logout
docker search ubuntu
docker pull ubuntu
docker image ls
docker push ubuntu:18.10
docker search ubuntu:18.10
8.使用Dockerfile定制鏡像
FROM centos
RUN yum install wget
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
&& tar -xvf redis.tar.gz