docker的基本命令及操作逻辑
image:镜像
container:容器
registry:仓库
docker hub ----> 公共的仓库
查找php的镜像
[root@localhost /]# docker search php
查看docker详细信息
[root@localhost /]# docker info
或者看看加速器
查找httpd的镜像
[root@localhost /]# docker search httpd
下载或拉取httpd的镜像
[root@localhost /]# docker pull httpd
导出镜像,并保存镜像为tar包
保存的名称为my-httpd.tar
[root@localhost /]# docker save --output my-httpd.tar httpd
查看镜像
[root@localhost /]# docker images
或者
[root@localhost /]# docker image ls
latest:最新的版本,但不是绝对最新
完整的镜像名称----》》 image:latest
如果版本号默认是一latest为结尾,解压省略不写
删除镜像
[root@localhost /]# docker rmi httpd:latest
[root@localhost /]# docker images
加载一个镜像
1)上传包
导入镜像包
[root@localhost /]# docker load --input my-httpd.tar
[root@localhost /]# docker images
运行镜像并后台运行
[root@localhost /]# docker run -itd --name test centos
查看镜像
[root@localhost /]# docker ps
进入容器(必须加/bin/bash)
[root@localhost /]# docker exec -it test /bin/bash
另一个命令进入容器,(可以不加/bin/bash但是退出之后。容器会停止运行)
[root@localhost /]# docker attach test
注意:exec进入容器会开启新的进程,attach不会开启新的进程
Ctrl +p Ctrl+q:如果是attach进入的容器Ctrl +p Ctrl+q退出容器,并保持容器运行
查看当前进程号
[root@localhost /]# echo $$
18260
使用exec开启容器
[root@localhost /]# docker start test
test
[root@localhost /]# docker exec -it test /bin/bash
[root@67c9b9de0743 /]# echo $$
使用attach开启容器
[root@localhost /]# docker attach test
[root@67c9b9de0743 /]# echo $$
1
使用快捷键退出容器并保持容器运行,Ctrl +p Ctrl+q
关闭容器
[root@localhost /]# docker stop test
删除所有容器,(跟 rm -rf /* 一样)
[root@localhost /]# docker ps -a -q | xargs docker rm -f
关闭所有容器和开启
[root@localhost /]# docker run -itd centos
567d5cd9623bb49b5b86eb07aa50260b6366dcfa6392a50e0e5d255ea1a3dec7
[root@localhost /]# docker ps -a -q | xargs docker stop
567d5cd9623b
b0981b364a78
[root@localhost /]# docker ps -a -q | xargs docker start
567d5cd9623b
b0981b364a78
查看容器的日志,(-f:动态的显示)
[root@localhost /]# docker run -itd -p81:80 --name my-httpd httpd
[root@localhost /]# curl 127.0.0.1:81
root@localhost /]# docker logs my-httpd
保持容器处于开启状态,(docker 服务重启之后)
[root@localhost /]# docker run -itd --name zhou --restart=always httpd
基于centos镜像部署安装一个nginx web服务器
运行一个容器
[root@localhost /]# docker run -itd --name web centos:latest
上传nginx
将nginx传给容器
[root@localhost /]# docker cp nginx-1.17.3.tar.gz web:/
安装依赖包
[root@d2554025e819 /]# yum -y install gcc openssl-devel pcre-devel zlib-devel make
安装nginx
[root@d2554025e819 /]# useradd -M -s /sbin/nologin nginx
[root@localhost /]# tar zxf nginx-1.17.3.tar.gz
[root@localhost /]# cd nginx-1.17.3/
[root@d2554025e819 nginx-1.17.3]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@d2554025e819 nginx-1.17.3]# make && make install
[root@d2554025e819 /]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
[root@d2554025e819 /]# nginx
访问一下
在宿主机上访问容器的80端口
在宿主机上访问容器的80端口
更改一下网页
[root@d2554025e819 /]# cd /usr/local/nginx/html
[root@d2554025e819 html]# echo this is http > index.html
[root@d2554025e819 html]# curl 172.17.0.2
this is http
将容器制作成镜像
语法: commit 容器名称 生成镜像的名称(如果不加:v1.0则会默认生成latest)
[root@localhost /]# docker commit web my-nginx:v1.0
查看镜像
[root@localhost /]# docker images
基于刚刚的镜像生成容器
[root@localhost /]# docker run -itd --name web01 my-nginx:v1.0
[root@localhost /]# docker exec -it web01 /bin/bash
[root@d69f4430565c /]# nginx
追加网页
[root@d69f4430565c /]# echo 123 >> /usr/local/nginx/html/index.html
[root@d69f4430565c /]# curl 172.17.0.3
this is http
123
基于刚刚更改的网页生成镜像
[root@localhost /]# docker commit web01 my-nginx:2.0
注意:就算名称一样,后面的版本号不一样也可以同时存在
docker操作逻辑图