Docker是什么?
开源软件部署方案,轻量级应用容器框架,可以打包发布任何,运行,任何应用。
为什么要用Docket?
docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows机器上。使用Docker可以更方便低打包、测试以及部署应用程序。
Docker 环境安装
安装yum-utils:yum install -y yum-utils device-mapper-persistent-data lvm2
为yum源添加docker仓库位置:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker: yum install docker-ce
开机自启:chkconfig docker on 或者 systemctl enable docker
启动docker: systemctl start docker
搜索镜像docker search java
下载镜像docker pull java:8
镜像支持的版本docker pull nginx:1.17.0
列出镜像docker images
删除镜像(-f:强制删除)docker rmi -f java:8
删除所有没有引用的镜像docker rmi docker images | grep none | awk '{print $3}'
强制删除所有镜像docker rmi -f $(docker images)
新建并启动容器docker run -p 80:80 --name nginx -d nginx:1.17.0
-d选项:表示后台运行
–name选项:指定运行后容器的名字为nginx,之后可以通过名字来操作容器
-p选项:指定端口映射,格式为:hostPort:containerPort
列出容器 docker ps
列出所有容器docker ps -a
停止容器docker stop ContainerName(或者ContainerName(或者ContainerName(或者ContainerId)
强制停止容器docker kill ContainerName(或者ContainerName(或者ContainerName(或者ContainerId)
启动已停止的容器docker start ContainerName(或者ContainerName(或者ContainerName(或者ContainerId)
进入容器docker inspect --format “{{.State.Pid}}” ContainerName(或者ContainerName(或者ContainerName(或者ContainerId)
根据容器的pid进入容器:nsenter --target “$pid” --mount --uts --ipc --net --pid
删除容器:docker rm ContainerName(或者ContainerName(或者ContainerName(或者ContainerId)
强制删除所有容器:docker rm -f $(docker ps -a -q)
查看当前全部日志:docker logs ContainerName(或者ContainerName(或者ContainerName(或者ContainerId)
动态查看日志:docker logs ContainerName(或者ContainerName(或者ContainerName(或者ContainerId) -f
查看容器的IP地址:docker inspect --format ‘{{ .NetworkSettings.IPAddress }}’ ContainerName(或者ContainerName(或者ContainerName(或者ContainerId)
修改容器的启动方式docker container update --restart=always $ContainerName
同步宿主机时间到容器docker cp /etc/localtime ContainerName(或者ContainerName(或者ContainerName(或者ContainerId):/etc/
指定容器时区
docker run -p 80:80 --name nginx
-e TZ=“Asia/Shanghai”
-d nginx:1.17.0
在宿主机查看docker使用cpu、内存、网络、io情况
查看指定容器情况:
docker stats ContainerName(或者ContainerName(或者ContainerName(或者ContainerId)
docker stats -a
docker system df
进入Docker容器内部的bash : docker exec -it $ContainerName /bin/bash
使用root帐号进入Docker容器内部 docker exec -it --user root $ContainerName /bin/bash
Docker创建外部网络docker network create -d bridge my-bridge-network
修改Docker镜像的存放位置docker info | grep “Docker Root Dir”
关闭Docker服务systemctl stop docker
docker nginx
第一种
docker pull nginx
docker run --name nginx -p 80:80 -d nginx
docker exec -it nginx bash
cd /etc/nginx/
vim nginx.conf 发现没有vim-> apt-get update 完成之后 apt-get install vim
停止docker stop nginx 然后重启 docker start nginx
第二种
docker run --name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
–name 给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器
-p 映射端口,将docker宿主机的80端口和容器的80端口进行绑定
-v 挂载文件用的,第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,第二个表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面
第三个-v 表示的和第一个-v意思一样的。
-d 表示启动的是哪个镜像