Docker学习笔记

Docker安装

Centos安装Docker

卸载旧版本

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

下载安装包

sudo yum install -y yum-utils

设置镜像仓库

yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引

yum makecache fast

安装docker

yum install docker-ce docker-ce-cli containerd.io

启动docker

systemctl start docker

查看是否安装成功

docker version

阿里云镜像加速

登录阿里云,找到容器镜像服务

在这里插入图片描述

选择镜像加速

在这里插入图片描述

注:每个人的加速地址不一样,要用自己的,命令都在命令行输入

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://pxgsgv9d.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

测试docker

docker run hello-world

Docker卸载

卸载软件包

yum remove docker-ce docker-ce-cli containerd.io

卸载主机镜像,容器…

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Docker使用

版本信息

docker version

帮助信息

docker --help

镜像操作

搜索镜像

docker search [镜像名]
    --filter=STARS=3000    搜索出来的镜像就是STARS大于3000的

登录网站查找镜像Tags

有代理
https://registry.hub.docker.com/

无代理
阿里云—>容器镜像服务
按照提示操作即可

下载镜像

docker pull [镜像名]:[Tags]

查看已下载镜像q

docker images
    -a 列出所有镜像
    -q 只显示镜像id

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    d1165f221234   3 weeks ago   13.3kB

仓库源         标签        ID            创建时间      大小

删除镜像

docker rmi -f [镜像名]:[Tags]
docker rmi -f [id]
docker rmi $(docker images -aq)

容器操作

容器信息

docker info

创建容器

docker run -it --name [dockername] --hostname [hostname] [镜像文件] /bin/bash
cocker run -d --name [dockername] --hostname [hostname] [镜像文件]
docker run -dit --name [dockername] --hostname [hostname] [镜像文件] /bin/bash
    -it 在运行的bash中输入输出
    --name 指定容器名
    -d 后台运行
    -p 指定端口
        IP:主机端口:容器端口
        主机端口:容器端口
        容器端口
    /bin/bash 运行镜像中的/bin/bash

查看容器

docker ps 查看正在运行的程序
dokcer ps -a 查看所有容器

启动容器

docker start [容器名]
docker restart [容器名]

停止容器

docker stop [容器名]

挂起容器

docker pause [容器名] 挂起
docker unpause [容器名] 解除挂起

连接正在运行的容器

docker exec -it [容器名/id] /bin/bash 进入容器开启新终端
docker attach [容器名/id] 进入容器当前正在运行的进程

终止容器

exit 退出并终止容器
ctrl+p,ctrl+q 只退出不终止
docker kill [容器id] 关闭容器

删除容器

docker rm [容器id]
docker rm -f $(docker -aq)

查看日志

docker logs -tf --tail [数量] [容器名/id]

查看容器内进程

docker top [容器名/id]

查看容器内部信息

docker inspect [容器名/id]

拷贝文件

docker cp [容器id]:[文件路径] [主机路径]

导出容器

docker save -o [].tar [容器名]
docker export [容器名] > [].tar

导入镜像

从tar文件创建镜像
docker load < [].tar

将本地镜像创建为容器
cat [].tar | docker import - [容器名]

将当前目录镜像创建为容器
tar -c . | docker import - [容器名]

查看内存

docker stats

部署容器

Nginx

搜索nginx

docker search nginx

下载nginx

docker pull nginx

创建容器

docker run -d --name nginx01 -p [外部端口]:[容器端口]

测试

curl localhost:[外部端口]

Tomcat

搜索Tomcat

docker search tomcat

下载nginx

docker pull tomcat

创建容器

docker run -d --name tomcat01 -p [外部端口]:[容器端口]

进入容器

docker exec -it tomcat01 /bin/bash

设置webapps应用

cp -r webapps.dist/* webapps

ES+Kibana


docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms 64m-Xmx512m" elasticsearch

Centos靶场

安装镜像

docker pull centos:7 

创建容器

docker run -dit --name range --hostname range -p 8080:80 -p 3366:3306 --privileged=true centos /sbin/init 

进入容器

docker exec -it range /bin/bash

查看网卡信息

ip addr

关闭防火墙

systemctl stop firewalld
搭建apache

下载httpd

yum -y install httpd

本地测试

curl localhost:8080

配置文件

cd /etc/httpd/conf->vim httpd.conf  |	vim /etc/httpd/conf/httpd,conf

serverroot "/etc/httpd"			#存放配置文件的目录
Listen 80						#Apache服务监听端口
User apache						#子进程的用户
Group apache					#子进程的组
ServerAdmin root@localhost		#设置管理员邮件地址
DocumentRoot "/var/www/html"	#网站家目录

#设置 DocumentRoot指定目录的属性
<Directory "/var/www/htm1">		#网站容器开始标识
Options Indexes FollowSymLinks	#找不到主页时,以目录的方式呈现,并允许链接到网站根目录以外	
AllowOverride None				#none不使用. htaccess控制,a11允许
Require all granted				#granted表示运行所有访问, denied表示拒绝所有访问
</Directory>					#容器结束
DirectoryIndex index.html		#定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问。
AddDefaultcharset UTF-8			#字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异
搭建MySQL

下载服务端

yum install -y mysql-server

启动Mysql

systemctl start mysqld

进入mysql

mysql

生成镜像

docker commit

  • 将容器提交为一个新的副本,相当于虚拟机镜像
  1. 启动一个默认的 tomcat
  2. 发现这个默认的 tomcat是没有 webapps应用,镜像的原因,官方的镜像默认 webapps下面是没有文件的!
  3. 我自己拷贝进去了基本的文件

生成镜像

docker commit -m="描述信息" -a="作者" [容器id] [镜像名]:[tag]

容器数据卷

  • 容器持久化和同步,容器间数据共享
  • 双向同步

同步

同步操作

docker run -it -v [同步主机路径]:[容器操作路经] [镜像] /bin/bash
docker run -it --name centos01 -v /home/centos/:/home centos:7 /bin/bash

查看配置

"Mounts": [
    {
        "Type": "bind",
        "Source": "/home/centos",
        "Destination": "/home",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }

部署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 mysq01 mysql

挂载

具名挂载

docker run -d -P --name nginx01 -v test-nginx:/etc/nginx nginx
-v [卷名]:[容器内路径]
  • 查看volume的情况
docker volume ls

查看卷路径

docker volume inspect [挂载名]

默认挂载路径
/var/lib/docker/volume/

匿名挂载

  • -v只写了容器内的路径,没有写容器外的路径,这种就是匿名挂载
docker run -d -P --name nginx01 -v /ect/nginx nginx
-v [容器内路径]
  • 查看volume的情况
docker volume ls

数据卷容器

  • 实现容器间数据共享

生成镜像

vim dockerfile

    FROM centos
    VOLUME ["volume01",volume02"]
    CMD echo "----end----"
    CMD /bin/bash

启动容器

docker run -it --name docker01 docker1/centos:1.1

启动子容器

docker run -it --name docker02 --volume-from dokcer01 docker1/centos:1.1

DokcerFile

指令

FROM----------基础镜镜像,一切从这里开始构建MAINTAINER----镜像是谁写的,姓名+邮箱RUN-----------镜像构建的时候需要运行的命令    步骤: tomcat镜像,这个 tomcat压缩包!添加内容WORKDIR-------镜像的工作目录VOLUME--------挂载的目录    #保留端口配置CMD-----------指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代ENTRYPOINT----指定这个容器启动的时候要运行的命令,可以追加命令ONBUILD-------当构建一个被继承 Dockerfile这个时候就会运行 ONBUILD的指令。触发指令COPY----------类似ADD,将我们文件拷贝到镜像中ENV-----------构建的时候设置环境变量

制作镜像

编写DockerFile文件

vim Dockerfile    FROM    MAINTAINER stars<123@163.com>    ENV MYPATH /usr/loacl    WORKDIR $MYPATH    RUN yum install vim    EXPOSE 80    CMD /bin/bash
  • 生成镜像
docker build -f [文件名] -t [镜像名][版本] .docker build -f Dockerfile -t mycentos:1.1

查看镜像生成过程

docker history [镜像名]

实例演示

制作Tomcat镜像

FROM centosMAINTAINER stars<123@163.com>COPY readme.txt /usr/local/readme.txtADD jdk-8ull-Iinux-x64.tar.gz /usr/local/ADD apache-tomcat-9.0.22.tar.gz /usr/local/RUN yum -y install vimENV MYPATH /usr/localWORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_11ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/ib/tools.jarENV CATALINA_HOME /usr /local/apache-tomcat-9.0.22ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22ENV PATH SPATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /url/local/apache-tomcat9.0.22/bin/logs/catalina.out

发布镜像

注册账号

https://registry.hub.docker.com/

登录

docker login -u [用户名]docker loguot 退出登录

加标签

docker tag [镜像名/id] [镜像名]:[版本]

发布

docker push [镜像]:[版本]

发布到阿里云

  • 创建名空间

  • 创建镜像仓库

  • 点击容器


Docker网络

帮助

docker network --help

查看网络

docker network ls

查看网络详细信息

docker network inspect [网卡名]

docker0

ifconfig

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255        ether 02:42:75:be:7d:36  txqueuelen 0  (Ethernet)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0虚拟设备通过docker0实现互通,相当于路由器

容器内网络地址

docker exec -it tomcat01  ip addr

veth-pair

虚拟设备接口,充当桥梁,连接虚拟网络设备

link

启动时连通

docker run -d -p --name tomcat02 --link tomcat01 tomcat

通过容器名连通

docker exec -it tomcat01 ping tomcat02

查看配置

docker exec -it tomcat01 cat /etc/host

自定义网络

定义网络

docker network  create --driver bridge --submit 192.168.0.0/16 --gateway 192.168.0.1 mynet

查看配置

docker network inspect mynet

使用定义网络

docker run -d -P --name tomcat01 --net mynet tomcat

网络连通

连接容器到网络

docker netowrk connect mynet tomcat01
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值