Docker 安装以及常用命令

Docker

Docker安装(win 10)

  1. 安装hapy-v

  2. 进入Docker官网(http://store.docker.com/)

3.安装合适的Docker/Docker Desktop

Docker安装(Centos 7)

  1. Centos 上网

  2. Centos yum 安装镜像源设置成(阿里镜像源)

    # 三步配置阿里yum源
    2.1.进入yum配置路径下载阿里yum源
    1.进入yun配置地址
    cd /etc/yum.repos.d/
    
    2.下载阿里源
    wget http://mirrors.aliyun.com/repo/Centos-7.repo
    如果提示没有get命令先安装get
    yum -y install wget
    
    2.2.替换阿里yum源
    #1.备份本地yum源包
    mv CentOs-Base.repo CentOs-Base.repo.bak
    #2.将阿里源包的名字改为linux系统默认读取yuan源的包名
    mv Centos-7.repo CentOs-Base.repo
    
    2.3.加载阿里yum源
    yum clean all
    
    yum makecache
    
    yum update
    ————————————————
    版权声明:本文为CSDN博主「Bruce小鬼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/m0_38039437/article/details/108735858
    
  3. 安装yum-utilssudo yum install-y yum-utils

  4. 安装Dockersudo yum install docker-ce docker-ce-cli containerd.io

    PS:这里不大行了使用这个后,在使用上面的命令

        阿里源:
        $ sudo yum-config-manager \
            --add-repo \
            http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
        清华大学源:
        $ sudo yum-config-manager \
            --add-repo \
            https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
    

    现在将Docker Engine软件包称为docker-ce。分为2种方式:

    1.安装最新版本的Docker Engine和容器,或转到下一步以安装特定版本:
    $ sudo yum install docker-ce docker-ce-cli containerd.io
    如果提示接受GPG密钥,请验证指纹是否匹配

    060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35

    如果是,则接受它。
    有多个Docker存储库?
    如果启用了多个Docker存储库,则在未在yum installor yum update命令中指定版本的情况下进行安装或更新将始终安装可能的最高版本,这可能不适合稳定性需求。

    2.要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:
    列出并排序存储库中可用的版本。本示例按版本号(从高到低)对结果进行排序,并被截断:
    $ sudo yum list docker-ce --showduplicates | sort -r
    通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。
    $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

  5. 检验是否安装成功

     <!-- 启动Docker服务: -->
     $ sudo systemctl start docker
     <!-- 通过运行hello-world 映像来验证是否正确安装了Docker Engine : -->
     $ sudo docker version
     $ sudo docker run hello-world
    
    

Docker常用命令

docker image:查看镜像

docker images: 查看本机已安装镜像

docker search <镜像名称>:搜索指定镜像/这里可以在docker hub上搜索自己的镜像

docker pull:拉取镜像

docker image ls:查看以安装镜像详细内容

docker -v查看docker版本号

systemctl status docker查看docker的运行状态

docker inspect <container_name> 产看容器的运行状态

docker build命令用于根据给定的Dockerfile和上下文构建Docker镜像。构建的上下文是位于指定PATH或URL中的一组文件,这些文件用于构建镜像,构建过程可以引用上下文中的任何文件

docker run -p将容器的端口映射到主机的端口。

 示例:docker run -p 8080:80 <image_name>
 # 在运行上述命令后,Docker会从Docker Hub或其他镜像仓库下载所需的镜像(如果尚未下载),并创建一个容器。
# 容器的端口80将映射到主机的端口8080。

docker run -v:挂载主机的目录到容器内,实现数据同步和持久化。

docker run -v /home/user/data:/data <image_name>
# /home/user/data 是宿主机上的目录路径。
# /data 是容器内的目录路径。
# <image_name> 是要运行的Docker镜像的名称

在运行上述命令后,Docker会从Docker Hub或其他镜像仓库下载所需的镜像(如果尚未下载),并创建一个容器。宿主机上的 /home/user/data 目录将被挂载到容器内的 /data 目录中。

现在,你可以在容器内部访问和编辑 /data 目录中的文件,同时这些修改也会反映到宿主机上的 /home/user/data 目录中。
通过使用docker run -v命令,可以实现数据同步和持久化,使得宿主机和容器之间的文件可以互相访问和共享。

docker run --network:设置容器的网络模式。

docker run --restart:设置容器重启时的行为。


镜像操作

docker save -help:docker保存机制

将镜像保存到本地目录

  1. 创建目录
  2. docker save -o nginx.zip nginx :latest: 将镜像下载到本地,并成zip资源
    nginx :latest:资源名称
    nginx.zip:输出文件名

  1. docker load:用于加载恢复docker镜像,这些镜像通常保存在 .tar 文件中。你可以把.tar文件想象成一个包含镜像的压缩文件

    docker load -i mysql.tar:dockers会解压缩这个.tar,并存中恢复Docker镜像,,然后这个镜像就可以再docker环境使用。

    mysql.tar:镜像的压缩文件

    从mysql.tar文件中恢复docker镜像,并加载到Docker守护程序中,以便再Docker中使用它。


docker rmi hello-world:latest:删除镜像


创建容器

docker container run -it --name=centos_new centos:latest /bin/bash 创建并启动容器

在Docker中,-it参数组合是以交互模式运行容器,并为容器分配一个伪终端(pseudo-tty)。这两个参数一起使用可以使得在容器内部进行交互式操作,就像在本地终端中一样。


这条命令的含义是:

* `docker container run`:这是Docker的命令,用于从镜像启动一个新的容器。
* `-it`:这是两个选项的组合。`-i`表示“交互式”,`-t`表示“分配一个伪终端”。这使得你可以在容器中运行交互式命令。
* `--name=centos_new`:这为新的容器指定一个名字,名字是`centos_new`。
* `centos:latest`:这是你希望Docker从`centos`镜像启动的容器,其中`latest`表示你要使用该镜像的最新版本。
* `/bin/bash`:这告诉Docker在容器启动后,你想要进入容器的shell。

如果你在运行这个命令后遇到问题,我需要更多的信息才能提供帮助,例如错误消息等。

docker run -d <image_name> 将容器后台运行

[root@localhost an]# docker run -d 001 #后台运行001 容器
Unable to find image '001:latest' locally
docker: Error response from daemon: pull access denied for 001, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
[root@localhost an]# docker ps #查看正在运行的容器
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS         PORTS     NAMES
cde535358d11   centos:latest   "/bin/bash"   10 minutes ago   Up 8 minutes             001
[root@localhost an]# docker exec -it 001 /bin/bash  #使用exec -it 001 /bin/bash 进入交互端
[root@cde535358d11 /]# exit #进入完成并退出
exit

docker start <容器名称或PID>运行指定容器

docker attach <容器名称或ID>重新进入指定的docker容器。当退出容器时,容器将会自动停止,如果想启动容器并重新附加到其终端,需要先启动容器docker start (这个不太确定)

docker exec -it <容器名称或ID> <命令>使用docker exec -it <容器名称或ID> <命令>,可以在不进入容器的情况下,直接在宿主机上运行容器里的命令。

[root@cde535358d11 /]# exit #这里是退出centos容器
exit
[root@localhost an]# docker container ls -a  #显示正在运行的容器
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                      PORTS     NAMES
cde535358d11   centos:latest   "/bin/bash"   54 seconds ago   Exited (0) 27 seconds ago             001
[root@localhost an]# docker container ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost an]# docker exec -it 001 /bin/bash #这个表示再001容器运行`/bin/bash`命令
Error response from daemon: Container cde535358d11624012788f09fbda2ef0139acd739dc3a555b7c6d7c57e546072 is not running  
#失败了 没有退出后,容器就结束了。这里需要重新启动容器
[root@localhost an]# docker start 001 #启动容器
001
[root@localhost an]# docker exec -it 001 /bin/bash #重新进入
[root@cde535358d11 /]# #进入成功

===以下是进入容器CentOS的使用,此时使用和虚拟机中的CentOS使用一致 ==

adduser <用户名>再容器中创建用户

cat /etc/passwd查看创建的用户

容器的相关操作

docker container容器操作前缀

docker container ls -la正在运行的容器

docker ps查看正在运行的容器的进程码(PID)
docker ps -a查看运行的和没运行的容器

docker volume -e产看卷

docker container ps和docker container ls -a区别如下:

1. docker container ps:显示正在运行的容器。
2. docker container ls -a:显示所有容器,包括已经停止运行的容器。

总的来说,docker container lsdocker ps 命令的效果是一样的,都可以用来查看Docker容器或进程。

docker kill终止所有运行中的容器进程

docker container kill <进程码> 结束容器指定进程

docker container stop -s <PID>停止容器

docker container rm <PID>删除容器 / 每次删除必须stop,然后rm

docker container rm -f <容器名称或PID>强制删除,运行中也能删除(原理先kill后rm)

docker container logs -f <容器名称或PID>查看容器的实时日志s


Docker中数据库相关操作(musql)

  1. 安装mysql镜像

  2. 创建mysql容器docker container run --name=mysql_an -h admin -p3306:3306 -d -e MYSQL_ROOT_PASSWORD=123456 --restar always mysql:latest
    admin 管理员权限

    -p3306:3306端口号

    -d -e初始化

    MYSQL_ROOT_PASSWORD=123456初始化密码

    --restar always重启后重新运行

  3. 进入mysql容器docker exec -it mysql_an bash

    bash进入伪终端

  4. mysql操作

    1. 建库 create database Student_Info;
    2. 展示库show database;
    3. 使用库 use Student_info
    4. 展示表show table
    5. 创建表create table tb_student
    6. 退出mysqlzquit;

构建镜像

docker container commit --help 是用来将正在运行的容器保存为一个新的镜像

这里将建过数据库的mysql生成镜像,自己也可以做镜像上传到docker中

docker container commit -a "an" -m "mysql for Student_info DB" mysql_an mysql_an_info:1.0这条命令的目的应该是把现有的mysql_an容器保存为一个新的Docker镜像,名为mysql_an_info,标签为1.0。

docker container commit:# 这是Docker命令用于将一个容器转化成一个新的镜像。
-a "an"# 这是指定新镜像的作者,这里是“an”。
-m "mysql for Student_info DB"# 这是指定新镜像的创建消息,这里是“mysql for Student_info DB”。
mysql_an:# 这是要提交的容器的ID或名称。
mysql_an_info:1.0:# 这是新创建的镜像的名称和标签。

docker build构建Docker镜像命令,支持Docker file

docker container commit和docker build有不同的功能和用途。

docker container commit是用来将正在运行的容器保存为一个新的镜像。它简单易用,所见即所得,但功能相对较少,不能封装启动命令。具体来说,commit操作将容器转化为了镜像,但这个镜像的功能相对单一,不能包含启动命令。

相比之下,docker build是用来构建Docker镜像的命令。它支持Dockerfile,可以在构建过程中执行更多的操作,例如安装依赖包、修改文件内容等。因此,docker build的功能更加强大和灵活,可以满足更多的需求。

总的来说,如果只是想将正在运行的容器保存为镜像,可以使用docker container commit;如果需要更多的功能和灵活性,建议使用docker build。

如果只是想将正在运行的容器保存为镜像,可以使用docker container commit;如果需要更多的功能和灵活性,建议使用docker build。

上传镜像到docker/docker hub操作

登录dockerdocker login --username=your_username --password=your_password

对镜像打标签docker image tag daiyi_mysql_student_info:1.0 davidlong/daiyi_mysql_student_info:1.0

推送到docker Hub docker image push davidlogdai_docker/daili_mysql_student_info

删除docker Hub的镜像docker image rm -f <image_name>

退出docker logout

执行以下命令构建镜像:
    shell
    docker build -t my_image .
    #执行以下命令上传镜像到Docker Hub:
    shell
    docker login --username=my_username --password=my_password  
    #设置docker标签
    docker tag my_image my_username/my_image:tag  
    docker push my_username/my_image:tag
    #等待上传完成。您的镜像现在应该已经上传到了Docker Hub上的my_username/my_image:tag repository。

Docker安装work服务器(registry、nginx)

nginx

  1. 运行docker
  2. 下载nginx
  3. 创建容器并运行(docker container run)
    docker container run --name daiyi_nginx -p 80:80 -d nginx:latest
  4. 进入镜像伪终端docker exec -it dayi_nginx bash
  5. 进入后
    1. ls -la
    2. cd /usr/share/nginx/html
    3. ls -la
    4. sed -i -e ‘s#welcome to nginx!QiLuLi Gong College’ -e ‘s####g’ index.html
    5. exit
  6. 查看当前系统的ip地址
  7. 访问ip地址
  8. 主机访问另一个IP地址(自己找)

nginx简介

registry 创建本地仓库

  1. 下载、安装、运行(run) registry docker container run -d -p 5000:5000 -restart always --name daiyi_registry registry:latest
  2. 下载、安装、运行(run) hello-world(测试用)
  3. curl localhost:5000/v2/_catalog设置本地仓库地址
  4. 更改标签
    1. docker image tag hello-world:latest localhost:5000/hello-world
    2. docker image tag nginx:latest localhost:5000/daiyi_nginx:1.0
  5. 上传
    1. docker image push localhost:5000/hello-world
  6. 下载本地仓库资源
    1.sudo docker pull localhost:5000/hello-world:1.0
  1. curl <http://localhost:5000/hello-world/v2/hello-world/tags/list>

registry介绍

Docker File

  1. 安装部署运行Tomcat
  2. file参数
  3. Dockerfile名字不能更改
# 基于基础镜像(一般是操作系统)
FROM centos:7

#用户信息(这个事是由谁做的)
MAINTAINER "daiyi"

#复制rpm包,并安装。第二步:安装JDK
COPY jdk-8u201-linux-x64.rpm /
RUN rpm -ivh  jdk-8u201-linux-x64.rpm

#配置JAVA环境变量
ENV JAVA_HOME /usr/java/jdk1.8.0_201-amd64
ENV CLASSPATH /usr/java/jdk1.8.0_201-amd64/lib/tools.jar:/usr/java/jdk1.8.0_201-amd64/lib/dt.jar
ENV PATH /usr/java/jdk1.8.0_201-amd64/bin:$PATH

# 默认使用用户是root
USER root

#第三步,添加tomcat到容器--压缩文件
ADD apache-tomcat-9.0.65.tar.gz /usr/local/


#进入/usr/local目录
WORKDIR /usr/local

#移动文件到/usr/local/tomcat
RUN mv apache-tomcat-9.0.65 /usr/local/tomcat

#第四步:测试tomcat是否正常工作,开启tomcat服务。
#ENTRYPOINT用于设置容器开启时的第一条命令,tomcat启动脚本命令catalina.h

ENTERPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]

  • COPY jdk-8u201-linux-x64.rpm /:这条命令将jdk-8u201-linux-x64.rpm文件复制/目录中。

  • ADD apache-tomcat-9.0.65.tar.gz /usr/local/:这条命令将下载的apache-tomcat-9.0.65.tar.gz文件添加到/usr/local/目录中。

    这个ADD命令是从本地文件系统或者是通过wgetcurl等工具从网络上下载的apache-tomcat-9.0.65.tar.gz文件添加到/usr/local/目录中。这个命令假设你已经在本地有了这个文件,或者你有一个可以访问这个文件的URL。

    是的,如果本地已经有了apache-tomcat-9.0.65.tar.gz文件,你可以直接使用COPY命令将其复制到/usr/local/目录中。例如:

    • COPY apache-tomcat-9.0.65.tar.gz /usr/local/
    • 这将把本地的apache-tomcat-9.0.65.tar.gz文件复制到容器的/usr/local/目录中。

基础步骤添加到容器、配置、运行

进入Docker资源文件(例如:jdk和tamcat压缩包共同的文件)和Dockerfile文件里

docker build -t daiyi_tomcat:1.0 .这里将包含了dickerfile中的操作系统、jdk、tomcat。名字叫daiyi_tomcat

docker build命令用于根据给定的Dockerfile和上下文构建Docker镜像。


[root@localhost daiyi]# ls -la
总用量 183408
drwxr-xr-x. 2 root root        90 118 14:59 .
drwxr-xr-x. 5 root root        47 118 14:59 ..
-rw-r--r--. 1 root root  11593900 118 14:59 apache-tomcat-9.0.65.tar.gz
-rw-r--r--. 1 root root       777 118 14:59 Dockerfile
-rw-r--r--. 1 root root 176209195 118 14:59 jdk-8u201-linux-x64.rpm
[root@localhost daiyi]# docker build -t daiyi_tomcat:1.0 .
[+] Building 36.5s (11/11) FINISHED                                                              docker:default
 => [internal] load build definition from Dockerfile                                                       0.0s
 => => transferring dockerfile: 874B                                                                       0.0s
 => [internal] load .dockerignore                                                                          0.0s
 => => transferring context: 2B                                                                            0.0s
 => [internal] load metadata for docker.io/library/centos:7                                               11.3s
 => [1/6] FROM docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6  14.5s
 => => resolve docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d64  0.0s
 => => sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9 2.75kB / 2.75kB             0.0s
 => => sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 76.10MB / 76.10MB           8.4s
 => => sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 1.20kB / 1.20kB             0.0s
 => => sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f 529B / 529B                 0.0s
 => => extracting sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc                  5.6s
 => [internal] load build context                                                                          1.1s
 => => transferring context: 187.85MB                                                                      1.1s
 => [2/6] COPY jdk-8u201-linux-x64.rpm  /                                                                  0.6s
 => [3/6] RUN rpm -ivh jdk-8u201-linux-x64.rpm                                                             6.5s
 => [4/6] COPY apache-tomcat-9.0.65.tar.gz /usr/local/                                                     0.2s
 => [5/6] WORKDIR /usr/local/                                                                              0.0s 
 => [6/6] RUN mv apache-tomcat-9.0.65.tar.gz /usr/local/tomcat                                             0.5s 
 => exporting to image                                                                                     2.7s 
 => => exporting layers                                                                                    2.6s 
 => => writing image sha256:c9ba3f3a5b4c9bb4ee6e32ad9737f2a1daac251bab3918ff9fc9d3148fb411cb               0.0s 
 => => naming to docker.io/library/daiyi_tomcat:1.0   
 #这里就成了

 #这里就上线了
[root@localhost daiyi]# docker container ps
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS          PORTS                                       NAMES
eb6fc85f8b12   tomcat_dy:1.0     "/usr/local/tomcat/b…"   8 seconds ago   Up 7 seconds    0.0.0.0:8000->8080/tcp, :::8000->8080/tcp   tomcat_dy
494008e82bbc   registry:latest   "/entrypoint.sh /etc…"   26 hours ago    Up 32 minutes   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   daiyi_registry

#进入伪终端
[root@localhost daiyi]# docker exec -it tomcat_dy bash

# 工作目录直接进来就是/usr/local
[root@eb6fc85f8b12 local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat

运行docker container run --name=dayi -d -p 8112:8080 daiyi_tomcat:1.0

访问:crul http://localhost:8112/

dockerfile只能生成镜像,在容器中测试。

Dokker Api https://blog.csdn.net/m0_51913750/article/details/131563704

http://192.168.65.101:8112/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值