什么是容器:?
什么是Docker
Docker的特点:
Docker的优势:
进程隔离:
什么是镜像:
环境准备:关闭防火墙和selinux
安装docker:(配置 yum 源,安装 docker)
[root@coker1 ~]# ls
docker-engine-1.12.1-1.el7.centos.x86_64.rpm RPM-GPG-KEY-CentOS-7
docker-engine-selinux-1.12.1-1.el7.centos.noarch.rpm
[root@coker1 ~]# yum install docker-engine-*
启动docker服务:
[root@coker1 ~]# systemctl start docker
[root@coker1 ~]# systemctl enable docker
查看网卡信息:(启动后可以查看到docker0)
[root@coker1 ~]# yum install net-tools
[root@coker1 ~]# ifconfig
docker0: flags=4099 mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
ether 02:42:a2:6a:f0:11 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@coker1 ~]# docker version
Client:
Version: 1.12.1
API version: 1.24
Go version: go1.6.3
Git commit: 23cf638
Built:
OS/Arch: linux/amd64
Server:
Version: 1.12.1
API version: 1.24
Go version: go1.6.3
Git commit: 23cf638
Built:
OS/Arch: linux/amd64
使用docker ,(查看公共镜像)
[root@coker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
查看官方提供的镜像库:
[root@coker1 ~]# docker search nginx
下载镜像文件:
[root@coker1 ~]# docker search busybox
[root@coker1 ~]# docker pull busybox
备份镜像为tar包:
[root@coker1 ~]# docker save busybox:latest > busybox.tar
[root@coker1 ~]# ls
busybox.tar
传给另一个docker服务器:
[root@coker1 ~]# scp busybox.tar 192.168.1.5:/root
恢复备份的tar包
[root@coker2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@coker2 ~]# docker load < busybox.tar
f9d9e4e6e2f0: Loading layer 1.378 MB/1.378 MB
Loaded image: busybox:latest
[root@coker2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest e1ddd7948a1c 2 weeks ago 1.163 MB
镜像基本操作
导入镜像文件:
[root@room9pc01 nsd1804]# scp /root/12.cloud/cloud\ 4/docker\ 1/docker_images.zip 192.168.1.50:/root
导出镜像为tar包文件(方便其他主机使用镜像)
[root@coker1 ~]# unzip docker_images.zip
Archive: docker_images.zip
creating: docker_images/
inflating: docker_images/nginx.tar
inflating: docker_images/redis.tar
inflating: docker_images/centos.tar
inflating: docker_images/registry.tar
inflating: docker_images/ubuntu.tar
导入所有文件:
[root@coker1 ~]# cd docker_images/
[root@coker1 docker_images]# for i in *
> do
> docker load < ${i}
> done
所有的docker命令:
[root@coker1 ~]# docker ps //正在运行中的容器
[root@coker1 ~]# docker ps -a //曾经所有的运行的容器
[root@coker1 ~]# docker ps -aq //只显示id
[root@coker1 ~]# docker inspect centos //查看详细的信息
[root@coker1 ~]# docker run -it centos /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@b09d9ac6f3c8 /]#
[root@b09d9ac6f3c8 /]# ls
anaconda-post.log dev home lib64 mnt proc run srv tmp var
bin etc lib media opt root sbin sys usr
[root@b09d9ac6f3c8 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 03:45 ? 00:00:00 /bin/bash
root 15 1 0 03:48 ? 00:00:00 ps -ef
docker是启用两种进程:前台可交互的(-it),后台可运行(-d)
[root@coker1 ~]# docker run -it nginx
[root@coker1 ~]# docker run -d nginx
WARNING: IPv4 forwarding is disabled. Networking will not work.
6b921542e43bcf41c7552da609d76d346661cc4ff35722620c2eb323fd10f41e
[root@coker1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b921542e43b nginx "nginx -g 'daemon off" 9 seconds ago Up 7 seconds 80/tcp, 443/tcp silly_ptolemy
[root@coker1 ~]# docker run -d centos /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
cf07fe93d0553634bf5f4e0a790cd42f2cd72a1609aa734ddf544ca408af5d3d
[root@coker1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b921542e43b nginx "nginx -g 'daemon off" 3 minutes ago Up 3 minutes 80/tcp, 443/tcp silly_ptolemy
[root@coker1 ~]# docker ps -a | grep cf07fe
cf07fe93d055 centos "/bin/bash" 43 seconds ago Exited (0) 39 seconds ago kickass_jones
[root@coker1 ~]# docker run -it busybox
WARNING: IPv4 forwarding is disabled. Networking will not work.
/ # ls
bin dev etc home proc root sys tmp usr var
[root@coker1 ~]# docker run -it centos /usr/bin/python
重命名镜像名称(复制):
[root@coker2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest e1ddd7948a1c 2 weeks ago 1.163 MB
[root@coker2 ~]# docker tag busybox:latest xxxx
[root@coker2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest e1ddd7948a1c 2 weeks ago 1.163 MB
xxxx latest e1ddd7948a1c 2 weeks ago 1.163 MB
启动和关闭容器:
[root@coker1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b921542e43b nginx "nginx -g 'daemon off" About an hour ago Up About an hour 80/tcp, 443/tcp silly_ptolemy
[root@coker1 ~]# docker stop 6b921
6b921
[root@coker1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@coker1 ~]# docker start 6b9215
6b9215
[root@coker1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b921542e43b nginx "nginx -g 'daemon off" About an hour ago Up 3 seconds 80/tcp, 443/tcp silly_ptolemy
查看容器的ip地址:
[root@coker1 ~]# docker inspect -f "{{.NetworkSettings.IPAddress}}" a4f6
172.17.0.3
[root@coker1 ~]# docker rm $(docker stop $(docker ps -qa))
[root@coker1 ~]# for i in {1..9}
> do
> docker run -d nginx
> done
进入容器:(两种方式)
[root@coker1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f9d049bacf3 centos "/bin/bash" 28 seconds ago
[root@coker1 ~]# docker exec -it 9f bash //exit退出,容器还在运行
[root@coker1 ~]# docker attach 0bf9 //exit退出,容器不在运行
查看容器的进程列表:
[root@coker1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de7658cf81e8 centos "/bin/bash" 5 seconds ago Up 3 seconds cranky_brahmagupta
[root@coker1 ~]# docker top de
UID PID PPID C STIME TTY TIME CMD
root 15301 15288 0 05:45 pts/0 00:00:00 /bin/bash