docker 入门

一.centos7环境下的docker安装

 前言:docker是一个开源的应用容器,主要针对应用进行打包部署。

1.环境说明:centos7

关闭selinux

2.docker的安装

yum install docker -y

3.docker版本的查看

docker --version

4.docker服务的管理

systemctl start docker #开启

systemctl stop docker #关闭

systemctl restart docker #重启

5.docker服务的开机启动

systemctl enable docker #开启开机自启动

systemctl disable docker #关闭开机自启动

二.docker镜像的管理

 1: 查看已有镜像

docker images  #查看镜像

2: 搜索centos镜像

docker search centos7

3: 下载centos镜像

docker pull docker.io/openshift/base-centos7

4: 保存生成镜像文件,使用docker save命令

docker save docker.io/openshift/base-centos7 >/tmp/centos.tar

5: 移除镜像,使用dockerrmi进行移除

docker images

docker rmi docker.io/openshift/base-centos7 #移除镜像

6: 导入镜像自己的镜像

docker load < /tmp/centos.tar

docker tag 484 centos7:latest #导入后的docker镜像是没有名字的,需要重新命令

三.docker使用镜像启动容器

前言:

下载完镜像,我们最主要的是想用这个镜像来启动一个全新的系统。

1.启动容器的命令

docker run -it centos7 /bin/bash #启动容器 i交互式  t终端

yum install -y net-tools ; ifconfig #看下容器的ip

2.在宿主系统查看容器的情况

docker ps #查看正在运行的容器

docker ps -a #查看正在运行和退出的容器

容器里面使用ctrl+d退出 #退出后容器就不处于运行的状态了

3.删除容器,使用docker rm 容器id,删除容器。运行中的容器无法删除

docker stop (ID)

docker rm (ID)

四.docker以后台的方式启动容器

1.以后台进程启动容器

docker run -d centos7 #-d是使用后台的方式去启动容器

2.要让容器永久运行的话,要有两个条件

1: docker run -d 后台的方式的启动

2: 要有一个永久运行的程序

总结:

以后台进程启动容器,启动一个永久运行的程序

docker run -d centos7 /bin/bash -c 'while true;do echo hello; sleep3;  done'

3.查看容器里的运行日志

docker logs 容器id

4.进后台运行的容器(需求,查看容器的ip)

docker exec -it 602 /bin/bash #退出的话,容器是还在运行的,因为是后台启动的。

5.停止后台运行容器

docker stop 容器id #平滑stop

docker kill 容器id #强制停止

6.重新启动容器

docker start 容器id

五.shell批量管理docker容器

准备工作:

先启动多个容器

docker run -d centos7 /bin/bash -c 'while true;do echo hello; sleep1;  done'

1.批量关闭容器

for line in `docker ps|awk '{print $1}'|grep -v CONTAINER`;do

docker stop $line

done

2.批量开启容器

for line in `docker ps -a|awk '{print $1}'|grep -v CONTAINER`;do

docker start $line

done

3.shell删除所有容器

for line in `docker ps -a|awk '{print $1}'|grep -v CONTAINER`;do

docker kill $line

docker rm $line

done

六. docker容器的网络类型

前言:

docker容器的网络模式有四种:

Bridge  #跟docker0桥接,默认

Host   #跟宿主机共用网络

Container  #跟其它容器共用网络  (一般没人用)

None  #不进行任何网络配置

1.使用默认的bridge模式来启动容器

docker run --net=bridge -d xuhzan_nginx  /bin/bash -c '/usr/local/nginx/sbin/nginx'

网络情况:跟docker0桥接,多一张桥接网卡

2.使用host模式来启动容器,跟宿主机的网络共享,如果是一个业务多进程都在一个容器里面的话

docker run --net=host -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'

网络情况:跟宿主机共用网络,没有多一张网卡,宿主机就能看到80端口的监听

其网络和宿主机一模一样,没有区别。

3.使用None模式来启动容器,不进行任何网络设置

docker run --net=none -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'

 以这种方式启动直接没有网。

七. docker容器的端口映射

 1.docker可以把宿主机的端口映射到容器里的端口,桥接docker0的时候可以使用映射把容器里的监听端口暴露出来。

 2.默认使用桥接的方式进行启动,只能通过宿主机去访问

docker run -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'

3.使用端口映射的方式启动,映射出来一个端口让公网能够访问

docker run -p 8801:80 -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'

4.使用多个端口映射

docker run -p 8801:80 -p 8802:80 -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'

八. 宿主机和容器间的文件共享

 前言:

假如说如果有网站要经常更新,有些人不想跑到容器里面,关于一些网站的程序想直接在宿主机上就能直接进行更新。

1.  mkdir/myweb

cd  /myweb/

2.启动容器时指定共享的文件,建议用特权的方式去启动容器

2.1 docker run --privileged=true -v/myweb:/usr/local/nginx/html/myweb -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'

2.2 dockerps   然后进入 容器 

2.3 cd/usr/local/nginx/html/myweb 发现容器里也可以看见文件夹和内容。

你可能感兴趣的:(Docker)