Docker第二篇:镜像的基本使用-搭建Centos系统

Dockerfile构建centos7镜像 step 1: 安装必要的一些系统工具# Step 2: 添加软件源信息# Step 3# Step 4: 更新并安装Docker-CE# Step 5: 开启Docker服务# Step 6: 开机自启Docker服务。 阅读详情

镜像操作篇

大多数的运行都依赖于操作系统,当然有些可以单独运行比如hello word,
以centos的镜像为例 ,

注意前提是要修改镜像加速器【参考 配置镜像加速器】,否则下面对于翻墙安装来说非常浪费时间,或者根本安装不成功。

配置镜像加速器
https://blog.youkuaiyun.com/zjcjava/article/details/91380509

镜像操作涉及到的内容

docker image、容器以及命令操作

docker image是一个极度精简版的Linux程序运行环境,官网的java镜像包括的东西更少,除非是镜像叠加方式的如centos+java7
docker image是需要定制化build的一个安装包,包括基础镜像+应用的二进制部署包
docker image内不建议有运行期需要修改的配置文件

Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖,环境配置等以命令配置的方式统一在一个文件中,可以方便的使用这个文件创建镜像。当前目录下包含Dockerfile,使用命令build来创建新的docker image,整个操作流程更加简洁方便

docker image的最佳实践之一是尽量重用和使用网上公开的基础镜像,在其基础上安装自己需要的服务和软件构建成自己的所需的镜像文件

Docker container:容器

Docker container是image的实例,共享内核,即它是docker image的运行后的实体
Docker container里可以运行不同os的image,比如Ubuntu的或者centos
Docker container不建议内部开启一个sshd服务,1.3版本后新增了docker exec命令进入容器进行排查问题
Docker container没有ip地址,通常不会有服务端口暴露,是一个封闭的沙盒

Docker daemon:
Docker daemon是创建和运行container的Linux守护进程,也是Docker 最主要的核心组件
Docker daemon可以理解为Docker container的container
Docker daemon可以绑定本地端口并提供REST API服务,用来远程访问和控制

镜像操作

查找仓库中可以用的镜像

docker search centos

在docker中安装CENTOS

docker pull centos

默认会安装官方提供的最新版本镜像

查看已经安装的镜像列表

docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              e934aafc2206        2 weeks ago         199MB
lwieske/java-8      latest              6e05355899ef        3 months ago        164MB
hello-world         latest              f2a91732366c        5 months ago        1.85kB

REPOSITORY:镜像名称
TAG:标签
IMAGE ID:镜像短ID
CREATED:镜像创建时间
SIZE:镜像大小

用 ID、镜像名、摘要删除镜像

从上面的镜像列表中可以知道,镜像列表的信息
可以根据这些信息删除该镜像

docker image rm lwieske/java-8
Untagged 和 Deleted

如果观察上面这几个命令的运行输出信息的话,你会注意到删除行为分为两类,一类是 Untagged,另一类是 Deleted。我们之前介绍过,镜像的唯一标识是其 ID 和摘要,而一个镜像可以有多个标签。

因此当我们使用上面命令删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的 Untagged 的信息。因为一个镜像可以对应多个标签,因此当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,如果是这种情况,那么 Delete 行为就不会发生。所以并非所有的 docker rmi 都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。

当该镜像所有的标签都被取消了,该镜像很可能会失去了存在的意义,因此会触发删除行为。镜像是多层存储结构,因此在删除的时候也是从上层向基础层方向依次进行判断删除。镜像的多层结构让镜像复用变动非常容易,因此很有可能某个其它镜像正依赖于当前镜像的某一层。这种情况,依旧不会触发删除该层的行为。直到没有任何层依赖当前层时,才会真实的删除当前层。这就是为什么,有时候会奇怪,为什么明明没有别的标签指向这个镜像,但是它还是存在的原因,也是为什么有时候会发现所删除的层数和自己 docker pull 看到的层数不一样的源。

除了镜像依赖以外,还需要注意的是容器对镜像的依赖。如果有用这个镜像启动的容器存在(即使容器没有运行),那么同样不可以删除这个镜像。之前讲过,容器是以镜像为基础,再加一层容器存储层,组成这样的多层存储结构去运行的。因此该镜像如果被这个容器所依赖的,那么删除必然会导致故障。如果这些容器是不需要的,应该先将它们删除,然后再来删除镜像。

用 docker image ls 命令来配合
像其它可以承接多个实体的命令一样,可以使用 docker image ls -q 来配合使用 docker image rm,这样可以成批的删除希望删除的镜像。我们在“镜像列表”章节介绍过很多过滤镜像列表的方式都可以拿过来使用。

比如,我们需要删除所有仓库名为 redis 的镜像:

$ docker image rm $(docker image ls -q redis)
或者删除所有在 mongo:3.2 之前的镜像:

$ docker image rm $(docker image ls -q -f before=mongo:3.2)

容器操作

使用镜像运行容器

docker run <相关参数> <镜像 ID> <初始命令>

docker run -it --rm centos bash

docker run 就是运行容器的命令,具体格式我们会在 容器 一节进行详细讲解,我们这里简要的说明一下上面用到的参数。
• -it :这是两个参数,一个是 -i :交互式操作直接进入到container容器中,一个是 -t 终端tty,伪终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
• --rm :这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm 。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
• centos :这是指用 centos 镜像为基础来启动容器。
• -h :指定为container设置hostname的名称,省略时为随机值eg:-h bamboo 指定容器的名称为bmaoo
• -v:表示需要将本地哪个目录挂载到容器中 (这个目录和本地是交互的,目录下的文件在容器和本地上是可以相互看见的)
格式:-v <宿主机目录>:<容器目录>
• bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash 。

会自动进入容器,运行如下命令

[root@ac43d254403c /]# uname -a

查看系统版本号,可以看到内核和64位的版本

[root@ac43d254403c /]# cat /etc/os-release

可以看到更详细的系统版本情况

ac43d254403c 这个很重要,用来标记容器实例的名称

通过 exit 退出这个容器,这个容器也随之删除了

后台模式启动容器(正式环境使用)

在正式使用时我们当然不能会每次都在退出终端时删除容器了,那样就没法回到宿主机下了。因此我们常使用的方式是让容器实例进入后台模式运行,并执行打印输出hello world到docker中的实例控制台

docker run -d centos bash -c "while true; do echo hello world; sleep 1; done"
6a85f6eae05c50efacf3e592ad2208d8a5ec2ab1c7191cce6ac1c1d9c5f7875b

在输出中,我们没有看到是一串长字符
6a85f6eae05c50efacf3e592ad2208d8a5ec2ab1c7191cce6ac1c1d9c5f7875b
这个长字符串叫做容器ID,对每个容器来说都是唯一的
因为一个机器可以启动多个容器,这个ID就起到了唯一标识的作用

查看运行的容器实例进程

 docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
5f0580926e17        centos              "/bin/sh -c 'while t…"   5 seconds ago       Up 4 seconds                            vigilant_tesla

CONTAINER ID:容器ID
NAMES:自动分配的容器名称
COMMAND :执行的命令

  • 在容器内使用docker logs命令,查看容器内的标准输出
    docker logs 容器ID或者NAMES
docker logs 5f05
hello world
hello world

停止容器

我们使用 docker stop 命令来停止容器:

docker stop vigilant_tesla

或者是使用ID
docker stop 5f05

启动容器

docker start vigilant_tesla

上面我们关闭的容器实例运行起来了, docker ps可以看到它的启动状态

退出容器交互

退出容器:
exit
或者
Ctrl+P+Q
快捷键方式,如果交互模式是每一秒打印一句hello word,那么无法使用命令行退出,只能选择快捷键方式退出

在容器中执行命令

交互模式下我们可以直接运行命令,但是当后台模式时如何执行命令呢
docker exec表示在一个运行的container中执行命令

docker run -d -v /data -h bamboo centos
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
292cf95a7853        centos      "bash -c 'while tr..."         8 minutes ago         Up 8 minutes        80
执行某一个命令ls /
[root@docker ~]# docker exec -it 292cf95a7853 ls /
anaconda-post.log  bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
还可以标准输入命令:
[root@docker ~]# docker exec  292cf95a7853 echo hello
hello

进入Docker容器

当后台模式时如何进入交互模式

进入Docker容器比较常见的几种做法如下:

使用docker attach:Docker提供了attach命令来进入Docker容器,不推荐
使用SSH:不推荐
使用nsenter:需要安装
使用exec :docker 1.3之后的版本自带的工具,推荐

然后我们使用docker ps查看到该容器信息,接下来就使用docker

attach进入该容器
使用docker attach

$ sudo docker attach 44fc0f0582d9  

但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。

使用SSH进入Docker容器
  在生产环境中排除了使用docker attach命令进入容器之后,相信大家第一个想到的就是ssh。在镜像(或容器)中安装SSH Server,这样就能保证多人进入

容器且相互之间不受干扰了,相信大家在当前的生产环境中(没有使用Docker的情况)也是这样做的。但是使用了Docker容器之后不建议使用ssh进入到Docker容

器内。关于为什么不建议使用,请参考如下文章:

为什么不需要在 Docker 容器中运行 sshd?
https://www.oschina.net/translate/why-you-dont-need-to-run-sshd-in-docker?cmp

使用nsenter进入Docker容器
  在上面两种方式都不适合的情况下,还有一种比较方便的方法,即使用nsenter进入Docker容器。关于什么是nsenter请参考如下文章:

https://github.com/jpetazzo/nsenter

在了解了什么是nsenter之后,系统默认将我们需要的nsenter安装到主机中

如果没有安装的话,按下面步骤安装即可(注意是主机而非容器或镜像)

具体的安装命令如下:

$ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz  
$ tar -xzvf util-linux-2.24.tar.gz  
$ cd util-linux-2.24/  
$ ./configure --without-ncurses  
$ make nsenter  
$ sudo cp nsenter /usr/local/bin  

安装好nsenter之后可以查看一下该命令的使用。
 nsenter可以访问另一个进程的名称空间。所以为了连接到某个容器我们还需要获取该容器的第一个进程的PID。可以使用docker inspect命令来拿到该PID。

docker inspect命令使用如下:

拿到容器ID
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
292cf95a7853        centos      "bash -c 'while tr..."         8 minutes ago         Up 8 minutes        80

用docker inspect来查看该容器的详细信息。
$ sudo docker inspect 292cf95a7853

由其该信息非常多,此处只截取了其中一部分进行展示。如果要显示该容器第一个进行的PID可以使用如下方式

[root@localhost ~]# sudo docker inspect -f {{.State.Pid}} 292cf95a7853
12151
# 在拿到该进程PID之后我们就可以使用nsenter命令访问该容器了,其中的12151即刚才拿到的进程的PID
[root@localhost ~]#  sudo nsenter --target 12151 --mount --uts --ipc --net --pid  
# 可以看到机器的hostname已经变成我们刚刚设置成的bamboo的机器了
[root@bamboo /]# ls
anaconda-post.log  boot  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                data  etc  lib   media  opt  root  sbin  sys  usr
[root@bamboo /]# 

使用docker exec进入Docker容器[推荐]

除了上面几种做法之外,docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些,下面我们来看一下该命令的使用:

$ sudo docker exec --help  

接下来我们使用该命令进入一个已经在运行的容器,可以看到可以成功进入容器

$ sudo docker ps  
$ sudo docker exec -it  292cf95a7853 /bin/bash  
[root@bamboo /]# ls
anaconda-post.log  boot  dev  home  lib64  mnt  proc  run   srv  tmp  var

删除容器

每次重新启动容器时容器名称取的和上一次会一模一样是,如果没有删除已经运行过的容器那么会报异常

You have to remove (or rename) that container to be able to reuse that name

docker rm 5e9b198b3dcb      # 删除运行的容器

这样再启动容器同名时就不会再报异常错误了

docker容器的网络,文件配置信息

[root@docker ~]# nsenter --target `docker inspect -f {{.State.Pid}} 292cf95a7853` --net --ipc --pid --mount --uts
[root@292cf95a7853 /]# ls

运行一个container的本身就是开启一个具有独立namespace的进程
进程有自己的网络,文件系统等
nsenter是关于namespace命名空间的命令,能够是一些资源能够进行隔离

PID:进程隔离(process id)
  NET:网络接口(network)
  IPC:管理跨进程通信的访问(interprocess communication)
  MNT:管理挂载点(mount)
  UTS:隔离内核和版本标识(unix timesharing system)
  USER:隔离用户

可以通过docker ps来查看container的uuid和运行信息
可以通过指定–name的方式来指定container的名字,name必须唯一

inspect:可以查看container的更多信息
  通过docker inspect {container_id}来获取container的更多的信息,包括网络,volume,实际在host上的进程id等信息

log:
  通过logs命令可以看到container中command所指向进程的STDOUT,STDERR数据
  可以进程排错(-d后台运行没有输出到console时,查看)

环境变量:
  通过-e参数,可以在运行container的时候添加系统环境变量

网络设置:
  docker使用bridge桥接的方式来实现container之间以及和外部的通信
network架构:
  在host主机上的一个veth{id}的虚拟网卡和一个container里面的eth0网卡一一映射
  host上的bridge负责把数据流在不同的veth间转发,实现网络的IO
  bridge(docker0)使用RFC1918私有网络,给每一个container分配ip

设置网络
  通过–net参数来修改container的网络设置,默认是bridge的方式
  none表示关闭container的网路连接
  host表示使用主机的网络栈,这个时候host主机不会创建veth虚拟网卡映射到container

container的网络和主机host的网络在同一网段

# docker run -t --net host saltstack/ubuntu-14.04 sh -c "while true;do ifconfig;sleep 2;done"

DNS:
  默认使用host的dns设置
  可以通过–dns的参数来指定container自己的dns配置

端口映射:
  docker通过采用端口映射的方式,允许把内部container的服务端口暴露到外包
  使用-p参数可以指定需要暴露的container的内部端口,在不指定特定的host的对应端口的情况下,docker会自动分配(49000-49900)在一个host上的端口与其映射
  使用-P参数,表示暴露所有在image中通过EXPOSE指定的端口

-p 8000:80 -p 443:443:映射容器中的多个端口(前面本机host端口,后面container端口)

volume绑定文件夹映射:
  通过-v参数,可以把host上的一个目录绑定到container中,允许container对其进行读写

mkdir /data
[root@docker ~]# docker run -d -v /data:/v-data -h bamboo centos

-v /root/test:/wadeson:将本机host下面的test目录映射到container中下面的wadeson目录
这里是主机的/data隐射到当前容器的/data目录

# 在启动的容器中创建一个文件名为test.txt
sudo docker exec -it  e074fce143e7 /bin/bash cd
[root@bamboo ~]# v-data/
[root@bamboo ~]# touch  test.txt
[root@bamboo ~]# exit

在容器中的data目录实际也对应着本机host的某一处目录,使用inspect查看:

docker inspect e074fce143e7
## 只看我们需要的部分内容如下
"Mounts": [
            {
                "Type": "bind",
                "Source": "/data",
                "Destination": "/v-data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]


#回到主机我们可以看到真实目录中也存在这样的文件名
[root@localhost ~]# ls /data
test.txt


Source:对应的是真实主机目录
Destination:容器对应的目录

参考资料
https://www.cnblogs.com/xhyan/p/6235999.html

docker容器常用命令如下:

启动容器:
# docker start mycentos
关闭容器:

# docker stop mycentos 

根据容器ID删除正在运行的容器
docker rm 5e9b198b3dcb      # 删除容器


杀死所有正在运行的容器
docker kill $(docker ps -a -q)

删除所有已经停止的容器
docker rm $(docker ps -a -q)

删除所有镜像
docker rmi $(docker images -q)

强制删除所有镜像,注意和容器删除的差别
docker rmi -f $(docker images -q)

java在docker中的安装

做java环境镜像之前必须先做操作系统,可以从docker的库中用docker pull imagename下载,也可以自己制作镜像

必要条件:
1.已经安装centos镜像
2.已经有centos启动的容器实例
以上步奏在前面的步奏中已经完成,因此目前有一个centos的实例容器名称叫vigilant_tesla

如果在镜像实例中通过exit退出docker环境后我们接下来安装jdk

下载并安装jdk8.0

http://download.oracle.com/
去官网下载到本地之后,使用sftp上传到主机中

下面这种方式存在问题:
这种方法默认是没有同意官方协议的下载,jar包是一个错误的格式,因此无法解压使用。

yum install wget
 
wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz

[root@localhost ~]# ls
jdk-8u171-linux-x64.tar.gz

宿主机和docker实例之间的文件拷贝

可以用命令【docker cp 文件名称 容器id : 容器下的路径】把相应的安装文件复制到容器中

docker cp ./jdk-8u171-linux-x64.tar.gz vigilant_tesla:/mnt/

通过这个命令就把主机上的jdk文件拷贝到容器实例中的路径/下面了(容器可以不启动)

进入容器

这里使用上面运行的centos镜像

[root@localhost ~]# docker exec -it  vigilant_tesla bash
[root@5f0580926e17 /]# ls mnt/
jdk-8u171-linux-x64.tar.gz

从主机中进入运行中的容器我们才能看到是里面的文件是否存在,可以看到jdk已经进来了。

配置jdk

和在主机中配置模式是一样的,这里直接看命令

[root@5f0580926e17 /]# cd mnt/
[root@5f0580926e17 mnt]# tar -zxvf jdk-8u171-linux-x64.tar.gz 
[root@5f0580926e17 mnt]# ls 
jdk1.8.0_171
[root@5f0580926e17 mnt]# vi ~/.bashrc

配置文件

export JAVA_HOME=/mnt/jdk1.8.0_171
#export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

生效

[root@5f0580926e17 mnt]# source ~/.bashrc

至此我们就创建了一个有jdk的容器实例,我们可以把它打包为一个镜像文件。
通过上面的方式我们知道了一个镜像的内容是怎么制作出来的,它需要基本的操作系统,然后是相关的基础文件安装,整个安装过程都是在其他镜像实例的基础上进行的。因此操作起来还是很一个漫长的过程,但是一旦制作成功,我们就可以直接使用制成镜像运行起来,非常方便。

创建新镜像

查看当前正在运行中的容器

[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
21708d1896bd        tomcat              "catalina.sh run"        2 hours ago         Up 2 hours          0.0.0.0:8080->8080/tcp   tomcat
5f0580926e17        centos              "/bin/sh -c 'while t…"   7 hours ago         Up 6 hours                                   vigilant_tesla

根据容器vigilant_tesla制作一个新的镜像,因为它本身已经包含了centos和java,因此这里我们取名为centos:java

将容器打包成新的镜像命令
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]

[root@localhost ~]# docker commit     --author "bamboo <zjcjava@163.com>"     --message "java"     vigilant_tesla     centos:java
sha256:8a6ba946d54a5ab4e511ed4317d9ceb4eff50366b0c3595aec6b0a7ba9badcbe

–author 是指定修改的作者,
–message 则是记录本次修改的内容
–vigilant_tesla基于vigilant_tesla的仓库名称
–centos:java仓库名叫centos标签叫java也可以设置为版本号

查看所有本地镜像,可以看到centos的tag为java的已经出现在下方了。

[root@localhost ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              java                8a6ba946d54a        15 seconds ago      777MB
tomcat              latest              33e02377a00f        2 weeks ago         554MB
nginx               latest              b175e7467d66        2 weeks ago         109MB
centos              latest              e934aafc2206        3 weeks ago         199MB
lwieske/java-8      latest              6e05355899ef        3 months ago        164MB
hello-world         latest              f2a91732366c        5 months ago        1.85kB

可以看到仓库名称为centos标签为java的镜像已经在列表中了。
但是这里不推荐这种方式生成镜像,因为过程太过繁琐,而且每一步都需要自行安装,建议使用Dockerfile直接创建镜像(后面的篇章会讲到),这在后面的章节中讲会重点介绍。
但是这里我们需要知道如何创建一个自己需要的镜像过程,因为Dockerfile其实就是把这个过程全部配置成了命令参数的方式,而后执行构建的,只是节省了中间我们自己敲命令的过程。

docker push: 推送镜像到远程仓库,需要有hub账号和密码,在后面的篇章会讲到
  docker push NAME[:TAG]
  例子:
  docker push hyzhou/ubuntu:3.2.3

tomcat镜像的使用

这里我们直接拉取线上中央仓库的tomcat镜像,不再像上面的方式安装使用,比较上面的步骤还是很繁琐的。
通过这个镜像我们看看它都是什么内容,其实和jdk的内容大同小异,

docker pull tomcat
docker run --name tomcat -p 8080:8080 -d tomcat
docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
21708d1896bd        tomcat              "catalina.sh run"        17 seconds ago      Up 14 seconds       0.0.0.0:8080->8080/tcp   tomcat
5f0580926e17        centos              "/bin/sh -c 'while t…"   4 hours ago         Up 4 hours                                   vigilant_tesla

命令说明:

-p 8080:8080:将容器的8080端口映射到主机的8080端口

进入容器终端模式

 docker exec -it  tomcat bash
 root@21708d1896bd:/usr/local/tomcat# ls
LICENSE  RELEASE-NOTES	bin   include  logs	       temp	work
NOTICE	 RUNNING.txt	conf  lib      native-jni-lib  webapps

可以看到,其实就是把tomcat的文件放在了容器里面,和java的安装方式是一抹一样的。

打开宿主机的端口可以看到容器的服务启动起来了
http://192.168.1.101:8080/

nginx安装映射
https://www.cnblogs.com/jsonhc/p/7767669.html

Dockerfile自定义镜像、CentOS安装DockerCompose及Docker镜像仓库 阅读详情

相关推荐

2、CentOS7 Docker 安装以及基本使用

CentOS7Docker 安装以及基本使用 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit)或更高的版本 前提条件 目前,CentOS 仅发行版本中的内核支持 Docker。 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在CentOS-...

大坏蛋的博客 3万+

docker基础:docker中运行centos系统

查看镜像 docker search centos 拉取centos镜像,查看下载的镜像 docker pull centos docker images docker run -itd --name centos-radius centos 参数说明: -i: 交互式操作。 -t: 终端。 ubuntu: ubuntu 镜像。 bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell 进入docker中的centos系统命令 --name后面为启动容器的名字.

qq_40378795的博客 1万+

centos7下安装Docker,以及Docker的基本使用

Docker的简介 Docker 是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 Docker的组成: Docker Client 客户端 Docker Daemon 守护进程 Docker...

TangXu@的博客 9660

Docker系列五基于CentOS制造镜像

记录刚开始乱折腾的过程,直接拉取了一个CentOS的镜像

君匡的博客 2668

centos7搭建及使用DOCKER私有仓库

centos7搭建及使用DOCKER私有仓库 环境: 虚拟机1:192.168.31.11,centos-7.3,docker-18.03.1-ce,私有仓库服务器 虚拟机2:192.168.31.12,centos-7.5,docker-18.03.1-ce 一、私有仓库的搭建 1、拉起registry镜像 启动docker以后,执行“docker pull registry:lat...

guan0005的博客 8142

Centos7部署docker及基本使用

Centos7部署docker及基本使用 安装docker [root@docker ~]# yum install docker -y [root@docker ~]# systemctl start docker [root@docker ~]# systemctl enable docker Created symlink from /etc/systemd/system/multi-use...

DoloresOOO的博客 2740

Centos7安装Docker搭建DVWA靶场

DVWA(Damn Vulnerable Web Application)一个用来进行安全脆弱性鉴定的PHP/MySQL Web 应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。

小啊宇的博客 5557

Centos系列:Centos的docker部署安装超详细教程(零基础可用)以及docker常用命令详解(图文结合纯干货,适用于初学者)

Centos的docker部署安装超详细教程(零基础可用)以及docker常用命令详解(图文结合纯干货,适用于初学者)

weixin_54626591的博客 1万+

CentOS系统用docker搭建rabbitMQ集群

文章目录前言一、环境准备二、部署RabbitMQ1.在机器1上安装RabbitMQ执行命令部分参数解释docker ps -a ,查看容器状态浏览器输入RabbitMQ管理地址2.在机器2上安装RabbitMQ执行命令docker ps -a ,查看容器状态浏览器输入RabbitMQ管理地址三、搭建普通集群模式1.rabbitmq1容器配置进入容器进入容器后通过rabbitmqctl命令对MQ进行操作2.rabbitmq2容器配置进入容器进入容器后通过rabbitmqctl命令对MQ进行操作四、代码测试1.

qq_27895527的博客 3102

SAP ABAP MIGO增强实战:自定义页签与字段的完整实现指南

本文详细介绍了SAP ABAP中MIGO增强的实战指南,包括自定义页签与字段的完整实现步骤。通过BADI增强技术,开发者可以快速满足企业个性化需求,如添加供应商批次号等特殊字段。文章涵盖数据存储结构设计、BADI框架实现、核心方法编写及数据持久化方案,帮助用户高效完成MIGO屏幕增强开发。

study的专栏 773

AHB2eflash 控制器设计笔记

① SRAM② DRAM③ SSD④ SATA⑤ U 盘⑥ 移动硬盘⑦ 机械磁盘eflash。

weixin_46220498的博客 3076

CentOS 搭建 Docker 私有镜像仓库

本文详细介绍了在CentOS系统上搭建Docker私有镜像仓库的完整流程。主要内容包括:环境准备(安装Docker、开放端口)、搭建私有仓库(拉取registry镜像、启动容器)、配置访问权限(生成密码文件、设置认证)、客户端访问配置、测试仓库功能(推送/拉取镜像)以及日常维护方法(查看镜像、清理数据)。通过细致的步骤说明和操作命令展示,帮助用户快速建立安全可靠的私有镜像仓库,为团队提供高效的Docker镜像管理解决方案。

蔡定努 1805

STM32F4驱动ADS1220高精度ADC:从SPI配置到数据校准的完整实战指南

本文详细介绍了如何使用STM32F4微控制器驱动ADS1220高精度ADC,涵盖从SPI接口配置、寄存器设置到数据采集与校准的全过程。通过实战代码示例和硬件设计要点,帮助开发者快速构建高精度数据采集系统,适用于工业测量和精密仪器等应用场景。

weixin_26918763的博客 224

使用mac docker 搭建centos7详细教程

使用mac docker 搭建centos7详细教程 由于笔者最近换了mac,想在mac搭建一个分布式的环境,考虑到vmware的占用空间较大,而且最近也不是很忙,所以就打算研究一下dcoker,练练手。本文适用于刚接触docker的新手快速 搭建过程 1.docker下载。docker下载还是比较简单的,直接搜索然后正常安装。 2.安装完成启动后顶部会出现这个鲸鱼一样的图标,也就是docker了...

cool0725的博客 3308

从X86到ARM:将VINS-Fusion-GPU和ego-planner迁移到Jetson Orin-NX时,我踩过的那些‘环境差异’坑

本文详细介绍了将VINS-Fusion-GPU和ego-planner从X86平台迁移到Jetson Orin-NX(ARM架构)时遇到的环境差异问题及解决方案。内容涵盖ARM与X86的架构差异、依赖管理、性能调优和硬件接口适配,特别强调了CUDA在ARM平台上的优化配置和内存访问技巧,帮助开发者高效完成跨平台迁移。

weixin_42647395的博客 119

轻量化部署实战:C#上位机集成AI模型的3种方案深度对比(ML.NET/ONNX/TensorFlow.NET)

C#上位机部署AI模型,核心不是“选最强大的方案”,而是“选最适配的方案”——工控机的低配置、高稳定性需求,决定了“轻量化”和“部署简单”是选型的首要原则。回顾3种方案:ML.NET:原生、轻量化、零依赖,适合传统ML场景,低配置工控机首选;ONNX Runtime:通用、平衡、易落地,适合深度学习场景,工业落地首选;TensorFlow.NET:强大、灵活、纯C#,适合复杂模型,高配置工控机首选。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 361

Centos下Docker使用镜像和DockerFile方式搭建JAVA Web 开发环境

1、环境 1、1先决条件 1.必须是64位CPU架构的计算机,Docker目前不支持32位CPU; 2.运行Linux3.8或更高版本内核,CentOS时内核必不小于3.10; 3.内核必须支持一种合适的存储驱动,可以是Device Manager、AUFS、vfs、btrfs、以及默认的驱动Device Mapper中的一个; 4.内核必须支持并开启cgroup和命名空间namespa...

HelloWorld搬运工 1万+

【ROS2】从yaml文件中读取参数配置

ROS2:从yaml中读取参数,到节点;使用C++演示参数的增、删、改、查、遍历、监听变化

郭老二 1284

Docker容器:Centos7搭建Docker镜像私服harbor

安装成功后再执行pip install docker-compose命令安装docker-compose。访问3.3配置的hostname:port,初始默认用户是admin,密码是Harbor12345。docker运行在Centos7上,要求系统为64位,系统内核版本为3.10以上。出现该问题的原因一般是由于pip版本过低或者pip有问题,此时需要升级pip。默认是国外的yum源,基本不可用,我们修改为阿里源。以上内容为个人学习理解,如有问题,欢迎在评论区指出。如果在升级过程中也报错。

weixin_37672801的博客 2129

【深度解析】解决 NVIDIA 显卡“掉卡”与 Xid 79 错误:开启持久化模式 (Persistence Mode)

【深度解析】解决 NVIDIA 显卡“掉卡”与 Xid 79 错误:开启持久化模式 (Persistence Mode)

Edward的博客 851

【AIGC】Qwen3-Embedding:Embedding与Rerank模型新标杆

Qwen3-Embedding:文本嵌入与重排序模型的技术解析与应用实践

一个内容严谨、方向前沿、极具实践价值的AI大模型技术分享站 3088

centos系统下Docker环境快速搭建

首先了解一下Docker是什么? Docker是一个容器引擎,可以用来部署应用。通过 Docker,可以实现快速交付,测试和部署代码,可移植性强。 Docker主要包括3个基本概念: 镜像、容器、仓库 镜像:是用于创建 Docker 容器的模板,类似于我们装虚拟机的时候下载的windows或者linux系统镜像。 容器:是独立运行的一个或一组应用,是镜像运行时的实体,类似于我们在虚拟机软件上安装一个windows系统,那这个运行的系统就是一个容器。容器可以被创建、启动、停止、删除、暂停等。 仓库:

专注测试领域知识分享和技能提升 3970

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Docker拉取centos镜像,然后在centos下搭建amp环境

1.1拉取CentOS镜像 输入命令 docker pull centos 以上命令会到Docker官方库里去下载最新的CentOS镜像,但是因为是国外的站点,所以下载会很慢。这里可以使用国内的镜像加速。 docker pull registry.docker-cn.com/library/centos 使用镜像加速下载镜像时,必须输入完整的库名和镜像名。 由于CentOS7在D...

u013829518的博客 4795

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

docker安装及镜像制作

一、安装docker 1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 通过uname -r命令查看你当前的内核版本 $ uname -r 2、使用root权限登录 Centos。确保 yum 包更新到最新。 $ sudo yum update 3、卸载旧版本(如果安装过旧版本...

JAVA拾贝 3万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ubuntu下利用docker搭建centos系统环境

一. 序言 之前一直使用ubuntu操作系统,突然有一天需要在centos操作系统下编译项目,不想新弄系统或者下载centos镜像用虚拟机打开,干脆就直接使用docker拉取镜像,小还方便. 二.操作流程 sudo apt-get install docker ubuntu下安装docker docker pull centos:7.6.1810 如需指定centos版本,上docker hub输入centos查看可用的镜像版本 docker images 查看centos镜像 do

qq_38796548的博客 4047

docker在centos上的使用

用来定义和运行多个容器的工具,compose是官方开源项目,docker环境没有,需要另外安装三个步骤定义你的应用使用的dockerfile,使你的项目可以运行在任何地方在docker-compose.yml中定义一个服务,包含所有你的app,使他们能在一个独立的环境中运行运行docker-compose up,编排开始,整个应用运行。docker-compose.yml 类似这样services:web:build: .ports:volumes:- .:/code。

gsl371的专栏 4384
上一篇: HashMap中的为什么hash的长度为2的幂而&位必须为奇数
下一篇: Redis配置不当致使root被提权漏洞
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值