Docker的搭建及简单运用
Docker的搭建及简单运用
环境准备:
1)停止禁用防火墙
systemctl stop firewalld
systemctl mask firewalld
2)禁用 selinux
1.配置 yum 源,安装 docker
1 ]# yum -y install docker-engine-*
2.启动测试
1 ]# systemctl start docker 2 ]# systemctl enable docke 3 ifconfig 启动后可以看见 docker0 4 ]# docker version 5 [root@docker01 ~]# docker search busybox
搜索 ]# docker search
下载 ]# docker pull busybox
查看帮助 ]# docker help pull
查看镜像 ]# docker images
3.导入镜像
1 [root@docker01 ~]# docker images 2 [root@docker01 ~]# docker save busybox >busybox.tar 3 [root@docker01 ~]# docker load
导出镜像
1 [root@docker01 ~]# docker save busybox >busybox.tar
4.导入所有文件
1 [root@docker01 ~]# unzip docker_img.zip 2 [root@docker01 ~]# cd docker_images/ 3 [root@docker01 docker_images]# for i in *; do docker load < $i; done
5.利用镜像启动容器
1 docker run -it busybox /bin/sh 2 docker run -it centos /bin/bash 3 [root@docker01 docker_images]# docker run -it busybox /bin/sh 4 / # 5 [root@docker01 docker_images]# docker run -it centos /bin/bash 6 [root@256b43a5e7cf /]#
6.查看容器列表
1 docker ps
docker 问题列表,及解答
问题:docker run -it busybox /bin/bash 报错问题
原因:
最后的命令是容器内部命令,容器内,存在才可以执行
可以不指定,不指定启动默认命令
问题:docker run -it centos 退出后,配置全部丢失
原因:
run 启动的是新的容器,老的容器退出后就停止了
启动管理一个老的容器可以使用 docker start|stop|restart
问题:老容器启动以后,怎么在进入?
docker exec -it 容器id /bin/bash
docker attach 容器id
exec 与 attach 的区别
exec 单独启动命令运行,与容器启动的终端无关
attach 不启动新的命令,直接连接 console 终端
exec 退出不会影响容器的运行
attach 退出后,容器结束
问题:如果我使用attach 连接容器后,怎么才能不结束容器?
解决方法:把容器放后台,使用快捷键 ctrl + pq
问题:attach 为什么退出后,容器会结束?
因为 attach 连接进容器的 pid 1 的进程,当 attach 结束时候,pid 为 1 的进程被结束
所有整个容器被销毁
问题:docker run -it nginx 没响应?
因为 nginx 启动的默认 cmd 时 nginx daemon,该进程不是一个交互式的进程
docker run 使用
-i 交互式的
-t 分配终端
-d 把容器放在后台运行
docker run -it centos cmd 启动一个交互式的容器,在前台运行
docker run -d centos cmd 启动一个非交互式的容器,在后台运行
docker run -itd centos cmd 启动一个交互式的容器,在后台运行
交互式的进程启动要使用 it , 非交互式的使用 d ,交互式的放后台使用 itd
启动 bash 的正确姿势 docker run -itd centos
启动 nginx 的正确姿势 docker run -d -p 80:80 nginx
命令列表
– docker images //查看镜像列表
1 [root@jacob ~]# docker images
– docker history //查看镜像制作历叱
1 [root@jacob ~]# docker history centos
– docker inspect //查看镜像底层信息
1 [root@jacob ~]# docker inspect centos
查看详细信息
1 docker inspect 21d2aeb977cc 2 docker inspect -f '{.NetworkSettings.IPAddress}' 21d2aeb977cc //写脚本用到
– docker pull //下载镜像
– docker push //上传镜像
– docker rmi //删除本地镜像
1 [root@jacob ~]# docker rmi centos
– docker save //镜像另存为tar包
[root@jacob ~]# docker save centos > centos.tar
– docker load //使用tar包导入镜像
1 [root@jacob ~]# docker load < centos.tar
– docker search //搜索镜像
– docker tag //修改镜像名称和标签
1 [root@jacob ~]# docker tag centos:latest test:v1
命令列表
– docker run //运行容器
– docker ps //查看容器列表
– docker stop //关闭容器
– docker start //启动容器
– docker restart //重启容器
– docker attach|exec //进入容器
• 进入容器
– docker attach 进入容器,exit会导致容器关闭
– docker exec 进入容器,退出时不会关闭容器
– docker inspect //查看容器底层信息
– docker top //查看容器进程列表
]# docker top 容器id
– docker rm //删除容器
1 ]# docker stop $(docker ps -aq) 2 ]# docker rm $(docker stop $(docker ps -aq)) 3 ]#for i in $(docker ps -aq) 4 >do 5 >docker stop $(docker ps -aq) 6 >docker rm $(docker ps -aq) 7 >done
1 [root@docker01 ~]# docker run -it centos 2 [root@docker01 ~]# docker exec -it 75feda2410f7 /bin/bash 3 [root@docker01 ~]# docker attach 75feda2410f7 4 [root@bbec9c6e4d21 /]# [root@docker01 ~]# //退出容器不会宕死的方法Ctrl+p + q 退出避免的容器宕死。