docker命令大全

该文详细介绍了Docker的安装配置,包括yum更新、安装Docker、启动和设置开机启动。接着讲解了Docker的镜像和容器管理,如创建、删除、启动和停止。还涉及Dockerfile的使用来制作镜像,以及如何打包SpringBoot应用为Docker镜像。此外,文章还提到了数据卷的创建和挂载,以及如何发布镜像到DockerHub和阿里云镜像服务。
摘要由CSDN通过智能技术生成

List item

docker命令大全

1.安装配置

1.更新yum

yum update

2.安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

3.设置yum源(选择其中一个)

yum-config-manager –add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)

yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)

4.可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

5.安装Docker,命令:yum install docker-ce-版本号,我选的是docker-ce-18.03.1.ce,如下

yum install docker-ce-18.03.1.ce

6.启动Docker,设置开启自动启动docker

systemctl start docker
systemctl enable docker

2.镜像

1.镜像基础命令

docker images --查看所有本地主机上的镜像
    # 可选项
    --all , -a      # 列出所有镜像
    --quiet , -q    # 只显示镜像的id
docker search --查找镜像
docker pull 镜像名:版本   --下拉镜像(不加版本默认最新)
docker rmi --删除镜像
    docker rmi -f 镜像id    --删除指定镜像
    docker rmi -f 镜像id1 镜像id2 --删除多个镜像
    docker rmi -f $(docker images -aq) --删除所有镜像
    

2.commit镜像

# 命令和git 原理类似
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:版本
    
列:docker commit -a="xiaofan" -m="add webapps app" d798a5946c1f tomcat007:1.0

3.容器

1.新建容器并启动

docker run 可选参数 镜像名称或镜像id
# 参数说明
--name="Name"   容器名字    用来区分容器
-d      以后台方式运行(容器使用后台运行, 就必须要有一个前台进程,docker发现没有应用,就会自动停止)
-it     使用交互方式运行,(启动时同时进入容器如:cenos)
-p      指定容器的端口     -p 8080:8080
    -p  ip:主机端口:容器端口
    -p  主机端口:容器端口(常用)
    -p  容器端口
    容器端口

2.列出所有的运行的容器

# docker ps 命令
        # 列出当前正在运行的容器
-a      # 列出正在运行的容器包括历史容器
-n=?    # 显示最近创建的容器
-q      # 只显示当前容器的编号

3.退出容器

exit            # 直接退出容器并关闭
Ctrl + P + Q    # 容器不关闭退出

4.删除容器

docker rm -f 容器id        # 删除指定容器(-f表示强制)
docker rm -f $(docker ps -aq)       # 删除所有容器
docker ps -a -q|xargs docker rm -f  # 删除所有的容器

5.启动和停止容器的操作

docker start 容器id           # 启动容器
docker restart 容器id         # 重启容器
docker stop 容器id            # 停止当前正在运行的容器
docker kill 容器id            # 强制停止当前的容器

6.其他常用命令

1.查看日志

docker logs -tf --tail number 容器id   #number:数量

2.查看容器中进程信息

docker top 容器id

3.查看容器的元数据

docker inspect 容器id

4.进入运行的容器

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

5.容器中拷贝文件到主机

docker cp 容器id:容器内路径  目的地主机路径
列:docker cp 7af535f807e0:/home/Test.java /home

7.查看cpu内存状态

docker stats --查看cpu状态

4.可视化


docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
 
# 测试
[root@lqd home]# curl localhost:8088
<!DOCTYPE html
><html lang="en" ng-app="portainer">
 
# 外网访问 http://ip:8088

5.容器数据卷

数据同步,类似双向绑定

1.创建volume卷

docker volume create 卷名
列:docker volume create todo-db

2.容器启动挂载卷

docker run -it -v 主机目录:容器目录
    
    -v  容器内路径                   # 匿名挂载
    -v  卷名:容器内路径              # 具名挂载
    -v /主机路径:容器内路径          # 指定路径挂载
    --mount type=volume,src=卷名,target=容器内路径    # 指定卷挂载
列:docker run -it -v /home centos /bin/bash
列:docker run -it -v cenos-jumin:/home centos /bin/bash
列:docker run -it -v /home/ceshi:/home centos /bin/bash
列:docker run -it --mount type=volume,src=todo-db,target=/home centos /bin/bash

3.查看所有volume

docker volume ls

4.查看一下这个卷

docker volume inspect 卷名

列:docker volume inspect juming-nginx

5确定挂载方式

-v  容器内路径                   *# 匿名挂载
-v  卷名:容器内路径              *# 具名挂载
-v /主机路径:容器内路径           *# 指定路径挂载

6.拓展

通过 -v 容器内容路径 ro rw 改变读写权限

ro  readonly    # 只读
rw  readwrite   # 可读可写

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内容无法操作

6.DockerFile

1.DockerFile指令说明

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

2.Dockerfile制作tomcat镜像

1.准备tomcat,jdk压缩包

[root@localhost DockerFile]# ll
-rw-r--r--. 1 root root  11613392 116 22:23 apache-tomcat-9.0.71.tar.gz
-rw-r--r--. 1 root root 149697219 116 19:13 jdk-8u351-linux-x64.tar.gz

2.编写Dockerfile文件

官方命名Dockerfile, build会自动寻找这个文件,就不需要-f指定了!

[root@localhost DockerFile]# vim Dockerfile
FROM centos:7                    #基础镜像
MAINTAINER lqd<lqd@qq.com>       #作者名称和邮箱

COPY readme.txt /usr/local/readme.txt        #复制说明文档到容器内

ADD jdk-8u351-linux-x64.tar.gz /usr/local/   #添加tocat包进容器(会自动解压)
ADD apache-tomcat-9.0.71.tar.gz /usr/local/  #添加jdk包进容器(会自动解压)

RUN yum -y install vim            #添加vim指令

ENV MYPATH /usr/local             #指定进入容器初始目录
WORKDIR $MYPATH                   #指定工作目录

ENV JAVA_HOME /usr/local/jdk1.8.0_351    #配置jdk环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  #配置jdk环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.71 #配置tomcat环境变量
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.71 #配置tomcat环境变量
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin #配置tomcat环境变量

EXPOSE 8080    #配置容器开发端口

CMD /usr/local/apache-tomcat-9.0.71/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.71/logs/catalina.out #启动tomcat并且指定日志输出位置

3.构建镜像

[root@localhost DockerFile]# docker build -t mycentos-tomcat-1 .
---效果
Successfully built db7d1fb16e18
Successfully tagged mycentos-tomcat-1:latest

4.启动镜像

[root@localhost DockerFile]# docker run -d  -p 8080:8080 --name lqd6 -v /DockerFile/build/test/:/usr/local/apache-tomcat-9.0.71/webapps/test -v /DockerFile/build/tomcatlogs/:/usr/local/apache-tomcat-9.0.71/logs mycentos-tomcat-1
---效果
22be58f32c940ad83f2984f6eca456de899406c20df136bc366e44ecbd85fac2

5.测试访问

[root@localhost DockerFile]# curl localhost:8080
---效果
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/9.0.71</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />
    </head>
    .........

6.本地编写项目

(启动容器做了卷挂载)

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        
</web-app>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello. xiaofan</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("-----my test web logs------");
%>
</body>
</html>

存放结构

---效果
[root@localhost DockerFile]# cd build/test/
[root@localhost test]# ls
index.jsp  WEB-INF
[root@localhost test]# cd WEB-INF/
[root@localhost WEB-INF]# ls
web.xml

7.打包镜像到远程

1.发布镜像到Docker Hub

1.登录Docker Hub账户

[root@localhost WEB-INF]# docker login -u lqiandong
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

2.给镜像增加一个tag

格式:docker tag 自己的镜像名 用户名/新的镜像名:版本

[root@localhost WEB-INF]# docker tag mycentos-tomcat-1 lqiandong/centos-tomcat:1.0

3.推送镜像

[root@localhost WEB-INF]# docker push lqiandong/centos-tomcat:1.0
The push refers to repository [docker.io/lqiandong/centos-tomcat]
8399064ad91a: Pushed 
7b533cfbaa2b: Pushed 
a08d4b3d4894: Pushed 
72eee2c41e7e: Pushed 
174f56854903: Mounted from library/centos 
1.0: digest: sha256:502f1a8a44ddc6fc0b49fa825ef8260e21674ce31369d7aa1428a1cf5104a3c7 size: 1373

4.拉取镜像

[root@localhost WEB-INF]# docker pull lqiandong/centos-tomcat:1.0
1.0: Pulling from lqiandong/centos-tomcat
2d473b07cdd5: Already exists 
e67be6050147: Already exists 
cb7236a8d386: Already exists 
f8e416bbeca6: Already exists 
b9d91a7bfe22: Already exists 
Digest: sha256:502f1a8a44ddc6fc0b49fa825ef8260e21674ce31369d7aa1428a1cf5104a3c7
Status: Downloaded newer image for lqiandong/centos-tomcat:1.0
docker.io/lqiandong/centos-tomcat:1.0

2.发布到阿里云镜像服务

…懒得写,自行百度

8.SpringBoot微服务打包Docker镜像

1.构建SpringBoot项目

2.打包应用

3.编写Dockerfile

FROM java:8
 
COPY *.jar /app.jar
 
CMD ["--server.port=8080"]
 
EXPOSE 8080
 
ENTRYPOINT ["java", "-jar", "/app.jar"]

4.构建镜像,发布运行

# 把打好的jar包和Dockerfile上传到linux
[root@localhost idea]# ll
total 16140
-rw-r--r-- 1 root root 16519871 Aug 14 17:38 demo-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root      122 Aug 14 17:38 Dockerfile
 
[root@localhost idea]# docker build -t springboot-hell .
Sending build context to Docker daemon  16.52MB
Step 1/5 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete 
fce5728aad85: Pull complete 
76610ec20bf5: Pull complete 
60170fec2151: Pull complete 
e98f73de8f0d: Pull complete 
11f7af24ed9c: Pull complete 
49e2d6393f32: Pull complete 
bb9cdec9c7f3: Pull complete 
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
 ---> d23bdf5b1b1b
Step 2/5 : COPY *.jar /app.jar
 ---> d4de8837ebf9
Step 3/5 : CMD ["--server.port=8080"]
 ---> Running in e3abc66303f0
Removing intermediate container e3abc66303f0
 ---> 131bb3917fea
Step 4/5 : EXPOSE 8080
 ---> Running in fa2f25977db7
Removing intermediate container fa2f25977db7
 ---> d98147377951
Step 5/5 : ENTRYPOINT ["java", "-jar", "/app.jar"]
 ---> Running in e1885e23773b
Removing intermediate container e1885e23773b
 ---> afb6b5f28a32
Successfully built afb6b5f28a32
Successfully tagged springboot-hell:latest
 
# 查看镜像
[root@iZ2zeg4ytp0whqtmxbsqiiZ idea]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
springboot-hell          latest              afb6b5f28a32        14 seconds ago      660MB
tomcat              latest              2ae23eb477aa        8 days ago          647MB
redis               5.0.9-alpine3.11    3661c84ee9d0        3 months ago        29.8MB
java                8                   d23bdf5b1b1b        3 years ago         643MB
 
# 运行容器
[root@localhost idea]# docker run -d -P --name xiaofan-springboot-web springboot-hell
fd9a353a80bfd61f6930c16cd92204532bfd734e003f3f9983b5128a27b0375e
# 查看运行起来的容器端口(因为我们启动的时候没有指定)
[root@localhost idea]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
fd9a353a80bf        springboot-hell          "java -jar /app.jar …"   9 seconds ago       Up 8 seconds        0.0.0.0:32779->8080/tcp   xiaofan-springboot-web
# 本地访问1
[root@localhost idea]# curl localhost:32779
{"timestamp":"2020-08-14T09:42:57.371+00:00","status":404,"error":"Not Found","message":"","path":"/"}
# 本地访问2
[root@localhost idea]# curl localhost:32779/hello
hello, liuqiandong
# 远程访问(开启阿里云上的安全组哦
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值