docker容器的使用

docker容器

什么是docker

环境配置、虚拟化技术、进程隔离

什么是docker镜像

docker镜像是动态容器的静态表示,一个运行的docker容器是一个镜像的实例

docker与虚拟机的比较

启动虚拟机需要先启动虚拟机上的操作系统,再启动应用,这个过程很慢,操作系统需要占用大量的磁盘、内存和CPU资源;

启动docker相当于启动宿主操作系统上的一个进程,在运行时占用很少的资源;

docker的优点

容易迁移、容易维护、容易扩展

 

命令

补充
将容器打包成镜像:docker commit miaosha01 miaosha4
基础命令
systemctl start docker启动docker
systemctl restart docker重启docker
systemctl enable docker开机自启docker
docker version      查看docker版本信息
docker history 容器id查看镜像构建过程
docker info         查看docker任务管理器
docker inspect 容器id  查看容器信息
docker run hello-world运行helloworld镜像
docker images       查看所有镜像
docker stats        查看容器占用cpu情况

docker save -o miaosha.tar miaosha2 容器存储为本地文件
docker load -i miaosha.tar          加载本地镜像文件

docker search mysql 搜索mysql镜像
docker pull mysql   下载mysql镜像
docker rmi -f mysql hello    删除镜像两个
docker rmi -f $(docker images -aq) 删除所有镜像

docker ps -a -n=1       查看[正在][所有][历史1个]的容器
docker ps -q            显示正在运行容器的id
启动容器
docker run [参数] images 运行容器
docker run -it --rm tomcat:9.0
参数
--name 给容器起名字
-d     后台方式运行
-it    使用交互方式运行,进入容器查看内容
-P     指定容器端口 -P 3344:80 主机端口:容器端口
范例
1、docker run -it centos /bin/bash 交互启动centos在bash
2、docker run -d centos /bin/sh -c 'while true;do echo $PATH;sleep 2;done;'  后台启动容器
3、docker run -d --name nginx01 -p 3344:80 nginx

docker start 容器id  启动容器
docker restart 容器id  重启容器
docker stop 容器id  停止容器
docker kill 容器id  停止容器

退出容器
exit  停止退出
ctrl+p+q 退出容器不停止
docker kill 容器id 停止容器
docker rm 容器id   停止容器
docker rm -f $(docker ps -aq) 停止所有容器
docker ps -aq|xargs docker rm 停止所有容器
查看容器对象
docker logs -tf --tail 200 容器id 查看容器日志
docker top 容器id                 查看容器任务
docker inspect 容器id             查看镜像元数据,配置文件
docker exec -it 容器id /bin/bash   进入容器开启新终端
docker attach 容器id               进入容器正在执行的终端

主机操作:拷贝容器内文件到主机
docker cp 容器id:容器路径 目的主机路径
范例:docker cp d077f6c46fa6:/home/kuangshen.java /home
提交镜像commit到docker容器管理
docker commit -m 'msg' -a 'lisi' 容器id [自定义name]
实例
1、创建默认tomcat
2、改动tomcat文件
3、使用命令生成镜像,保存到docker容器
容器数据卷/文件映射
功能:容器的持久化和同步操作;容器间数据共享
docker run -it -v 主机目录:容器目录 centos /bin/bash
实例
1、安装mysql镜像:下面
2、运行mysql:docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:8.0
3、测试
镜像容器数据共享
kangshen_centos:1.0初始化本地与容器中一个共享目录
创建docker01
使用--volumes-from继承docker01的映射文件,使得两个容器数据共享
docker run -it --volumes-from 容器id 镜像
docker run -it --name docker02 --volumes-from docker01 kangshen_centos:1.0

构建docker镜像:Dockerfile

1、vim dockerfile
2、编写build文件
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "--end--"
3、使用docker build;-f配置文件 -t 镜像名称 .
docker build -f ./dockerfile -t kuangshen_centos:1.0 .
实例
FROM centos
MAINTAINER youisme<crk231@163.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u121-linux-x64.tar.gz /usr/local/

ENV JAVA_HOME /usr/local/jdk1.8.0_121
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin

WORKDIR /usr/local

RUN yum -y install vim

EXPOSE 8090

CMD ["/bin/bash"]

制作镜像命令
docker build -f mkdockerfile -t mycentos:0.1 .

将文件变为可执行文件:chmod -R 777 *
查看防火墙状态
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
启用防火墙
systemctl enable firewalld
chkconfig iptables on
docker网络
目的:实现容器内部通过容器名称连通,即使每次启动容器ip改变

启动容器时默认桥接docker0如:docker run -it -P --name abc --net bridge centos 备注:--net bridge默认可省略

创建网络:实现上述目的
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
查看网络列表和信息
docker network ls
docker inspect mynet

使用此网络启动的多个容器,可以直接通过容器名访问
docker run -dit --name miaosha01 -P --net mynet miaosha2 /bin/bash
docker run -dit --name miaosha02 -P --net mynet miaosha2 /bin/bash
docker exec -it miaosha01 ping miaosha02

使用不同网络/网桥的容器如何连通
原理:一个容器在不同网络都有ip 作用:在tomcat容器中可以访问mynet网络中的容器
docker network connect mynet 另一个网络的容器tomcat
posted @ 2021-11-17 13:48  你就是我  阅读(141)  评论(0编辑  收藏  举报