Blogger Information
Blog 10
fans 0
comment 0
visits 6344
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
docker入门到进阶二
.
Original
436 people have browsed it

常用其他命令
后台启动容器
#命令    docker run -d 镜像名
[root@localhost ~]# docker run -d centos
#问题docker ps,发现centos停止了

#常见的坑:    docker 容器使用后台执行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
Nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志
docker logs -f -t --tail    容器,没有日志
#自己编写一段shell脚本
[root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"

[root@localhost ~]# docker ps
CONTAINERID    IMAGE  
38254adcfa23   centos  
[root@localhost ~]#
 
#显示日志
    -tf    #显示日志
    --tail number    #要显示日志条数
[root@localhost ~]# docker logs -tf --tail 10 38254adcfa23
查看容器中进程信息ps
#命令 docker top +容器ID
[root@localhost ~]# docker top 38254adcfa23
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                18666               18645               0                   20:04               ?                   00:00:01            /bin/sh -c while true;do echo kuangshen;sleep 1;done
root                19740               18666               0                   20:19               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
查看镜像的元数据
docker inspect 容器ID
[root@localhost ~]# docker inspect 38254adcfa23
[
    {
        "Id": "38254adcfa23d6b3cabd5810d76fff1b8a5c39e364d29eaa051ccef0d8b6b7cc",
        "Created": "2022-03-06T12:04:58.195572401Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo kuangshen;sleep 1;done"
        ],
进入当前正在运行的容器
#容器通常使用后台方式运行的,需要进入容器,修改一些配置

#命令    #进入容器并开启一个新的终端,可以在里面操作(常用)
docker exec -it 容器ID bashShell
#测试
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
38254adcfa23   centos    "/bin/sh -c 'while t…"   36 minutes ago   Up 36 minutes             objective_moser
[root@localhost ~]# docker exec -it 38254adcfa23 /bin/bash
[root@38254adcfa23 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@38254adcfa23 /]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 12:04 ?        00:00:05 /bin/sh -c while true;do echo kuangshen;sleep 1;done
root       1692      0  0 12:33 pts/0    00:00:00 /bin/bash
root       2190      0  0 12:41 pts/1    00:00:00 /bin/bash
root       2223      1  0 12:41 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root       2224   2190  0 12:41 pts/1    00:00:00 ps -ef

#方法二
docker attach 容器id
#测试    #attach这个命令会进入正在执行的终端,不会启用新的进程。
[root@localhost ~]# docker attach 容器ID
正在执行当前的代码....

从容器内拷贝到主机上
docker cp 容器id:容器内路径 目的的主机路径
[root@localhost home]# docker cp f2c8956edf2d:/home/test.java /home
安装nginx
#1.搜索镜像 search 建议大家去docker搜索,可以看到帮助文档
#2.下载镜像    pull
#3.运行测试
[root@localhost home]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    c919045c4c2b   5 days ago     142MB
centos       latest    5d0da3dc9764   5 months ago   231MB

#    -d 后台运行
#    --name 给容器命名
#    -p    宿主机端口,容器内部端口
[root@localhost home]# docker run -d --name nginx01 -p 3344:80 nginx
ef2ca173f06d103d8ce54054837e045cde511d7dbe94df00b5a5edbd8f1393a9
[root@localhost home]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS                                   NAMES
ef2ca173f06d   nginx     "/docker-entrypoint.…"   11 seconds ago   Up 9 seconds   0.0.0.0:3344->80/tcp, :::3344->80/tcp   nginx01
[root@localhost home]# curl localhost:3344
#进入容器
[root@localhost home]# docker exec -it nginx01 /bin/bash
root@ef2ca173f06d:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@ef2ca173f06d:/# cd /etc/nginx
root@ef2ca173f06d:/etc/nginx# ls
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params
root@ef2ca173f06d:/etc/nginx#
思考问题:我们每次改动nginx配置文件,都需要进入容器内部? 十分麻烦,我要是可以在容器外部提供一个映射路径,达到在容器修改文件名,容器内部就可以自动修改?-v 数据卷!
安装一个:docker 装tomcat
#官方的使用
docker run -it --rm tomcat:9.0

#我们之前的启动都是后台,停止了容器之后,容器还是查到    docker run it --rm,一般用来测试,用完就删。

#下载在启动
docker pull tomcat

#启动运行
docker run -d -p 3355:8080 --name tomcat01 tomcat
#测试访问没有问题,但页面访问不到

#进入容器
[root@localhost home]# docker exec -it tomcat01 /bin/bash

#发现问题:1.Linux命令少了。2.没有webbapps.    阿里云镜像的原因,默认是最小的镜像,所有不必要的都踢出掉。
#保证最小可运行的环境
root@abba21a609fc:/usr/local/tomcat# cp -r webapps.dist/* webapps    把备份文件考过来,就可以访问页面了
思考问题:我们以后要部署项目,如果每次都都要进入容器是不是十分麻烦?我可以在容器外部提供一个映射路径,webaps,我们在外部放置项目,就自动同步到内部就好了。
作业:部署es+kibana
#es    暴露的端口很多
#es    十分的耗内存
#es    的数据一般需要放置到安全目录!挂载
#--net somenetwork    网络配置
#下载并启动 elasticsearch
docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

#docker stats 查看 Cpu状态

#增加内存的限制,修改配置文件 -e 环境配置修改
docker run -d --name elasticsearch02  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"
-e  ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
可视化
portainer ?(先用这个)
Rancher(CI/CD再用)

什么是 portainer ?
docker图形化管理工具!提供一个后台面板供我们操作!
docker run -d -p 8080:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
访问测试:外网 :8080
例如:http://192.168.171.130:8080/
这个可视化面板少用  (账号:admin 密码:12345678)

Docker镜像
是一种独立软件包,包含某个软件运行时的所有内容,包含代码、环境变量等。
如何得到镜像:
从远程仓库下载
朋友拷贝
自己制作一个镜像dockerFile
联合文件系统
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
特点
docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部,容器之下都叫镜像层。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post