代码编织梦想

Docker

Docker基本命令

systemctl start docker
# 所有镜像
docker images
# 下载镜像
docker pull 镜像名
# 删除镜像
docker rmi 镜像id
docker rmi -f IMAGE ID1 IMAGE ID2 IMAGE ID3 //删除多个
docker rmi -f $(docker images -aq) //删除全部
#运行
docker run [参数] image
docker run -it --name nginx01 -p 80:80 nginx //交互运行
docker run -d --name nginx01 -p 80:80 nginx  //后台运行

#进入正在运行的容器
docker exec -it 容器ID /bin/bash
docker attach 容器id 
# docker exec       # 进入容器后开启一个新的终端,可以在里面操作
# docker attach     # 进入容器正在执行的终端,不会启动新的进程

--name=“Name”   容器名字    tomcat01    tomcat02    用来区分容器
-d      后台方式运行
-it     使用交互方式运行,进入容器查看内容
-p      指定容器的端口     -p 8080:8080
    -p  ip:主机端口:容器端口
    -p  主机端口:容器端口(常用)
    -p  容器端口
    容器端口
-p      随机指定端口
 
# 退出
exit
Ctrl + P + Q

# 删除
docker rm -f 容器id
docker rm -f $(docker ps -aq)

#开启停止容器
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id

#查看日志
docker logs -tf --tail number 容器id
-tf                 # 显示日志
--tail number       # 显示日志条数

#后台运行时没有进程将会被自动停止
docker run -d centos /bin/bash -c "while true; do echo wurr; sleep 1; done"

# 文件复制
docker cp 容器ID:内部路径 目的路径

#查看容器信息
docker inspect 容器ID

Nginxn安装运行

docker pull nginx

docker run -d --name nginx01 -p 80:80 nginx

docker exec -it bdda08daeadc /bin/bash

exit

docker cp bdda08daeadc:/home/testCopy /home/Tintin/

可视化

portainer

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

curl localhost:8088

Commit容器

docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

docker commit -a="Tintin" -m="Include webapp" eb663605151f tomcat-webapp:1.0

容器数据卷

挂载卷volume

  • 指定路径挂载
docker run -d -v /local:/docker dockerID

docker run -d --name mysql01 -p 3306:3306 -v /home/mysql/config:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
  • 匿名&具名挂载
# 匿名挂载
docker run -d -P --name nginx01 -v /etc/nginx nginx   //-P随机指定端口
#具名挂载
docker run -d --name nginx02 -P -v local-nginx:/etc/nginx nginx

# 挂载情况
[root@Tintin ~]# docker volume ls
DRIVER    VOLUME NAME
local     235fe3cba6117e9cf860e5377a066b352416c4d061fbe66cbdf50c0ba0187b18
local     local-nginx

# 如何确定是具名挂载还是匿名挂载,还是指定路径挂载!
-v  容器内路径                   # 匿名挂载
-v  卷名:容器内路径               # 具名挂载
-v /主机路径:容器内路径            # 指定路径挂载
[root@Tintin ~]# docker volume inspect local-nginx
[
    {
        "CreatedAt": "2022-11-22T14:48:57+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/local-nginx/_data",
        "Name": "local-nginx",
        "Options": null,
        "Scope": "local"
    }
]

DockerFile

#-----初始化dockerfile-----
    vim dockerFile

    # 创建一个dockerfile文件, 名字可以随机
    # 文件的内容 指定(大写) 参数

    FROM centos

    VOLUME ["volume01", "volume02"]

    CMD echo "----end----"
    CMD /bin/bash

    # 这里的每一个命令都是镜像的一层!

#-----执行dockerfile-----
docker build -f /home/docker-test-volume/dockerfile -t tintin-centos:1.0 .

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SjxYe0KB-1669210580723)(%E4%B8%AA%E4%BA%BA%E6%96%87%E6%A1%A3.assets/image-20221122153225923.png)]

启动容器,查看挂载卷目录

docker inspect 容器id

[root@Tintin docker-test-volume]# docker run -d --name centos01 3af44bbae9ea /bin/bash
c9dca554130a8273d6ee94a882ff72f1dc46b77694e33ecb34bcc2527763c742
[root@Tintin docker-test-volume]# docker inspect c9d
[
    {
        ……
        "Mounts": [
            {
                "Type": "volume",
                "Name": "6179bafd9bd7c90dd32173e04fe9a65d249b88f0d28c63d6afb1f1363296f346",
                //挂载到这个目录下
                "Source": "/var/lib/docker/volumes/6179bafd9bd7c90dd3211363296f346/_data",
                "Destination": "volume02",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "29c2f7c3cb1190afad34e2e03009edd320e2194d64548932a01e82c512a3f9e8",
               	//挂载到这个目录下
               	"Source": "/var/lib/docker/volumes/29c2f7c3cb1132a01e82c512a3f9e8/_data",
                "Destination": "volume01",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
        ……
  • 容器间数据共享

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lz1ODScu-1669210580724)(%E4%B8%AA%E4%BA%BA%E6%96%87%E6%A1%A3.assets/20200813120430844.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x8uro85V-1669210580725)(%E4%B8%AA%E4%BA%BA%E6%96%87%E6%A1%A3.assets/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZhbmppYW5oYWk=,size_16,color_FFFFFF,t_70-20221122161159574.png)]

  • 指令说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zx3Uqvdt-1669210580725)(%E4%B8%AA%E4%BA%BA%E6%96%87%E6%A1%A3.assets/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZhbmppYW5oYWk=,size_16,color_FFFFFF,t_70-20221122174450619.png)]

FROM          #基础镜像,一切从这里开始构建
MAINTAINER		#署名,Tintin<tintin@123.com>
RUN						#镜像构建时候需要运行的命令
ADD						#镜像
WORKDIR				#镜像工作目录
VOLUME				#挂载目录
EXPOSE				#暴露端口配置
CMD						#指定这个容器启动需要运行的命令,只有最后一个会生效(可被替代)
ENTRYPOINT		#指定这个容器启动时需要运行的命令,可追加命令
ONBUILD				#当构建一个被继承DockerFile 这时候会运行ONBUILD指令,触发指令
COPY					#类似ADD,将文件拷贝到镜像中
ENV						#构建时候设置环境变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E314BUst-1669210580725)(%E4%B8%AA%E4%BA%BA%E6%96%87%E6%A1%A3.assets/image-20221122174408196.png)]

  • CMD和ENTRYPOINT区别(启动时拼接命令)
#CMD
[root@Tintin docker-test-volume]# docker run tintincmd:1.0 -l
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "-l": executable file not found in $PATH: unknown.

#ENTRYPOINT
[root@Tintin docker-test-volume]# docker run tintinentrypoint:1.0 -l
total 64
drwxr-xr-x   1 root root  4096 Nov 22 10:21 .
drwxr-xr-x   1 root root  4096 Nov 22 10:21 ..

Tomcat

  • 创建Dockerfile
FROM centos:7
MAINTAINER tintin<tintinsmail@foxmail.com>

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

ADD apache-tomcat-9.0.68.tar /usr/local/
ADD jdk-8u141-linux-x64.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_141
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.68
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.68
ENV PATH $PATH:JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.68/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.68/logs/catalina.out
  • 构建镜像
docker bulid -f Dockerfile -t mytomcat:1.0 .
  • 创建容器
docker run -d -p 8080:8080 --name tomcat01 -v /home/tomcat/test:/usr/local/apache-tomcat-9.0.68/webapps/test -v /home/tomcat/logs:/usr/local/apache-tomcat-9.0.68/logs mytomcat:1.0

镜像发布

  • dockerhub
# tag
docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage
# push
docker push YOUR_DOCKERHUB_NAME/firstimage
# 例子
docker tag mytomcat:1.0 tintinsdocker/mytomcat:1.0

docker push tintinsdocker/mytomcat:1.0
  • 阿里云

参考官方文档

docker 网络

springBoot打包成Docker镜像

FROM java:8
 
COPY *.jar /app.jar
 
CMD ["--server.port=8080"]
 
EXPOSE 8080
 
ENTRYPOINT ["java", "-jar", "/app.jar"]
# 出入Dockfile和jar包后执行
[root@Tintin springboot]# docker build -t springbootproject:1.0 .
Successfully built 75f1993d521b
Successfully tagged springbootproject:1.0

# 生成容器
[root@Tintin springboot]# docker run -d --name myproject -p 8080:8080 springbootproject:1.0
29b60de7de9c168cdf363d6bd6fbf8caadca61b7d09e838c13408e58f3dd67d2
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Tintinc/article/details/128008408

docker安装nginx+php_wenruns的博客-爱代码爱编程

第一步:安装php-fpm(注意:一定要先安装这个然后再安装nginx) docker run -itd --name php --network web --network-alias php -v E:/docker/nginx/php/7.4:/usr/local/etc/php -v D:/phpstudy_pro/WWW:/www php:7.

iwebsec靶场搭建_mooyuan的博客-爱代码爱编程

iwebsec靶场可以通过两种方法进行渗透。 iwebsec靶场简介 第一种是在线靶场:http://www.iwebsec.com:81/ 第二种是本地搭建:目前可以通过两种方法搭建,一种是虚拟机绿色版解压即用,另外一种则是通过docker安装,也是此博客的主要内容。 一、虚拟机绿色版 绿色版本下载后解压,使用VMware软件直接打开即

docker 安装及常用命令_半条_虫的博客-爱代码爱编程

第一步:添加Docker官方的GPG密钥 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - 第二步: 第

pod的生命周期_倦~的博客-爱代码爱编程

Pod的生命周期 与容器一样,Pod也有生命周期,Pod在整个生命周期中被定义为各种状态。了解这些状态对于后面我们学习Pod的调度是有帮助的。 Pending 挂起状态,Pod已经被K8s系统所认可,但是目前还

静态pod 创建使用示例详解_sinat_40572875的博客-爱代码爱编程

一.系统环境 服务器版本docker软件版本Kubernetes(k8s)集群版本CPU架构CentOS Linux release 7.4.1708 (Core)Docker version 20.10.12v1.21.9x86_64 Kubernetes集群架构:k8scloude1作为master节点,k8scloude2,k8scloude3作为

centos7 安装部署kubernetes(k8s)集群实现过程_sinat_40572875的博客-爱代码爱编程

一.系统环境 服务器版本docker软件版本CPU架构CentOS Linux release 7.4.1708 (Core)Docker version 20.10.12x86_64 二.前言 下图描述了软件部署方式的变迁:传统部署时代,虚拟化部署时代,容器部署时代。 传统部署时代: 早期,各个组织是在物理服务器上运行应用程序。 由于无法