docker之基础命令相关操作下
四、docker的数据管理
4.1存储资源类型
用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及到容器的数据管理:
- Data Volume (数据卷)
- Data Volume Dontainers --- 数据卷容器
docker 容器有两种方式 卷 和 绑定挂载 可将容器中的文件存储在宿主机的文件系统上,这样即使在容器停止之后这些文件也会被保留。如果你在Linux上运行Docker,你也可以使用tmpfs 挂载。
volume , bind 和 tmpfs 三者的相同点和区别
相同之处:
无论您选择使用哪种类型去使用,数据在容器内看起来都是相同的。它被视为容器文件系统中的目录或单个文件。
不同之处:
卷(volume)存储在于 由Docker管理 的主机文件系统的一部分中(在Linux上是:/var/lib/docker/volumes/)。非Docker进程不应该修改这部分文件系统。卷是在Docker中保留数据的最佳方式。
绑定挂载(bind mount) 也就是把主机的本地目录挂载到容器中某个挂载点。可以存储在主机系统的任何位置。他们甚至可能是重要的系统文件或目录。Docker主机或Docker容器上的非Docker进程可以随时修改它们。
tmpfs挂载(tmpfs mount)仅存储在主机系统的内存中,而不会写入主机系统的文件系统。
4.2数据卷
1> Data Volume 有以下特点:
a)Data Volume 是目录或文件,而非没有格式化的磁盘(块设备)。
b)容器可以读写 volume 中的数据。
c)volume 数据可以被永久的保存,即使使用它的容器已经销毁。
2> DataVolume的使用
通过-v 参数格式为 :
a)运行一个容器,并创建一个数据卷挂载到容器的目录上
# docker run -itd -v /web centos:6 /bin/bash
b)运行一个容器,本地创建/test目录,挂载到容器的/web目录上
# mkdir test
# docker run -itd -v /root/test:/web centos:6 /bin/bash
映射本地目录到数据卷
在运行的容器内创建一个文件,然后再删除该容器,查看数据卷内数据是否存在。
4.3数据卷容器
数据卷容器Data Volume Dontainers
如果用户需要在容器之间共享一些持续更新的数据,最简单的方法就是使用数据卷容器,其实数据卷容器就是一个普通的容器,只不过是专门用它提供数据卷供其他容器挂载使用。
Data Volume Dontainers使用:
a)创建一个名为 dbdata 的数据卷,并在其中创建一个数据卷挂载到 /test下
# docker run -it -v /root/test:/dbdata --name dbser centos:6
b)其他容器使用 --volumes-from命令去挂载dbdata数据卷
# docker run -itd --volumes-from dbser --name db1 centos:6
# docker run -itd --volumes-from dbser --name db2 centos:6
c)可以多次使用 --volumes-from 参数来从多个容器挂载多个数据卷。还可以从其他已经挂载了容器卷的容器来挂载数据卷:
# docker run -itd --name db3 --volumes-from db1 centos:6
注意:使用--volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态。
如果删除了挂载的容器(包括dbdata、db1和db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式使用 docker rm -v 命令来指定同时删除关联的容器。
数据卷容器应用:
创建一个容器专门运行rsyslog 收集日志, 其他应用程序将日志发送到该日志容器。
1、构 建 rsyslog 镜像
创建一个只运行 rsyslog 的镜像, Dockerfile 如下:
FROM centos6
MAINTAINER hxf
RUN yum -y install rsyslog && yum clean all
CMD rsyslogd -n
VOLUME /dev
VOLUME /var/log
执行下面的命令生成镜像:
# docker build -t hustcat/rsyslog .
2、运行 rsyslog 容器
# docker run --name rsyslog -d -v /tmp/syslogdev:/dev husteat/rsyslog
成功启动后, 我们在 Host 上可以看到 /tmp/syslogdev/log 的 Unix socket 文件
3、在其他容器写 log 到日志容器
# docker run --rm -v /tmp/syslogdev/log: /dev/log centos6 logger -p info "hello
rsyslog"
4.4 备份、 恢复和迁移数据卷
1、备份数据卷
我们可以通过参数 “--vokrnies-fmm ” 从数据卷挂载数据卷 , 然后备份数据卷中的数据, 例如:
# docker run volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf
/backup/backup.tar /dbdata
创建一个新的容器, 将 Host 本地目录挂载到 /backup, 然后将数据卷容器dbdata 的数据卷(
/dbdata ) 打包到 /backup/backup.tar。 然后在 Host 的当前目录下就可以得到 backup.tar。
2、恢复数据卷
将备份的数据恢复到原有容器或者其他任何容器。 假设我们想把 backup.tar 的数据恢复到一个新的容器dbdata2:
# docker run -v /dbdata name dbdata2 ubuntu /bin/bash
然后执行下面的命令即可
# docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf
/backup/backup.tar
五、端口映射与容器互联
5.1端口映射实现访问容器
5.1.1 从外部访问容器应用
在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的。
当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-p或-P参数来指定端口映射。当使用-P(大写P)标记时,Docker会随机映射一个端口到内部容器开放的网络端口(端口范围在Linux系统使用的端口之外,一般都过万):
[root@docker ~]# docker run -d --name nginx_1 -P nginx:latest[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f769af3e9847 nginx:latest "nginx -g 'daemon ..." 3 seconds ago Up 2
seconds 0.0.0.0:32768->80/tcp nginx_1
通过docker ps可以看到nginx_1容器的80端口被映射到本机的32768端口上。访问宿主主机的32768端口就可以访问容器内的应用程序提供的Web界面:
同样,可以通过docker logs命令查看应用信息:
[root@docker ~]# docker logs nginx_1
-p(小写p)可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。支持的格式有:IP:HostPort:ContainerPort | IP::ContainerPort | HostPort:ContainerPort 。
5.1.2 映射所有接口地址
使用HostPort:ContainerPort格式将本地的5000端口映射到容器的5000端口:
[root@docker ~]# docker run -itd -p 5000:5000 --name nginx_2 nginx:latest[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5bdca2bde33d nginx:latest "nginx -g 'daemon ..." 8 seconds ago Up 7
seconds 80/tcp, 0.0.0.0:5000->5000/tcp nginx_2
f769af3e9847 nginx:latest "nginx -g 'daemon ..." 15 minutes ago Up 15
minutes 0.0.0.0:32768->80/tcp nginx_1
此时默认会绑定本地所有接口上的所有地址。多次使用-p参数可以绑定多个端口:
[root@docker ~]# docker run -itd -p 3000:2700 -p 2389:8863 --name nginx_3
nginx:latest[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65fbfbe9761e nginx:latest "nginx -g 'daemon ..." 3 seconds ago Up 2
seconds 80/tcp, 0.0.0.0:3000->2700/tcp, 0.0.0.0:2389->8863/tcp nginx_3
5bdca2bde33d nginx:latest "nginx -g 'daemon ..." 2 minutes ago Up 2
minutes 80/tcp, 0.0.0.0:5000->5000/tcp nginx_2
f769af3e9847 nginx:latest "nginx -g 'daemon ..." 18 minutes ago Up 18
minutes 0.0.0.0:32768->80/tcp nginx_1
5.1.3 映射到指定地址的指定端口
可以使用IP:HostPort:ContainerPort格式指定映射使用一个特定地址:
[root@docker ~]# docker run -itd -p 10.0.0.31:89:8081 --name nginx_4
nginx:latest[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16a476837222 nginx:latest "nginx -g 'daemon ..." 4 seconds ago Up 3
seconds 80/tcp, 10.0.0.31:89->8081/tcp nginx_4
65fbfbe9761e nginx:latest "nginx -g 'daemon ..." 2 minutes ago Up 2
minutes 80/tcp, 0.0.0.0:3000->2700/tcp, 0.0.0.0:2389->8863/tcp nginx_3
5bdca2bde33d nginx:latest "nginx -g 'daemon ..." 5 minutes ago Up 5
minutes 80/tcp, 0.0.0.0:5000->5000/tcp nginx_2
f769af3e9847 nginx:latest "nginx -g 'daemon ..." 20 minutes ago Up 20
minutes 0.0.0.0:32768->80/tcp nginx_1
5.1.4 映射到指定地址的任意端口
使用IP::ContainerPort格式绑定本机的任意端口到容器的指定端口:
[root@docker ~]# docker run -itd -p 10.0.0.31::8082 --name nginx_5 nginx:latest[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3436fd5fbdca nginx:latest "nginx -g 'daemon ..." 2 seconds ago Up 2
seconds 80/tcp, 10.0.0.31:32769->8082/tcp nginx_5
16a476837222 nginx:latest "nginx -g 'daemon ..." 2 minutes ago Up 2
minutes 80/tcp, 10.0.0.31:89->8081/tcp nginx_4
65fbfbe9761e nginx:latest "nginx -g 'daemon ..." 4 minutes ago Up 4
minutes 80/tcp, 0.0.0.0:3000->2700/tcp, 0.0.0.0:2389->8863/tcp nginx_3
5bdca2bde33d nginx:latest "nginx -g 'daemon ..." 7 minutes ago Up 7
minutes 80/tcp, 0.0.0.0:5000->5000/tcp nginx_2
f769af3e9847 nginx:latest "nginx -g 'daemon ..." 22 minutes ago Up 22
minutes 0.0.0.0:32768->80/tcp nginx_1
容器启动后,本机会随机自动分配一个未被占用的端口。
5.1.5 查看映射端口配置
使用docker port命令来查看当前映射的端口配置,也可以查看绑定的地址
[root@docker ~]# docker port nginx_1
80/tcp -> 0.0.0.0:32768
[root@docker ~]# docker port nginx_2
5000/tcp -> 0.0.0.0:5000
[root@docker ~]# docker port nginx_3
2700/tcp -> 0.0.0.0:3000
8863/tcp -> 0.0.0.0:2389
[root@docker ~]# docker port nginx_4
8081/tcp -> 10.0.0.31:89
[root@docker ~]# docker port nginx_5
8082/tcp -> 10.0.0.31:32769
注意:
容器有自己的内部网络和IP地址,使用docker inspect +容器ID可以获取容器的具体信息。
5.2 互联机制实现便捷访问
容器的互联是一种让多个容器中应用进行快速交互的方式,它会在源和接收容器之间建立连接关系,接收容器可以通过容器名快速访问到源容器,而不用指定具体的IP地址。
5.2.1 自定义容器命名
连接系统依据容器的名称来执行。因此,首先要给容器定义一个简单好记的名字。在容器创建的时候,系统会随机创建一个容器名,但是并没有特殊的意义也不便于记忆,所有自定义容器名有一下亮点好处:
1.自定义的命名比较好记,比如一个Web应用容器,就可以起名web,既方便记忆也方便理解容器的作用;
2.当要连接其他容器时,即使重启,也可以使用自定义的容器名,,比如web容器连接到db容器。
使用--name参数可以为容器自定义命名:
[root@docker ~]# docker run -itd --name centos_1 centos:latest[root@docker ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4d58a9f6f324 centos:latest "/bin/bash" 6 seconds ago Up 5 secondscentos_1
通过docker ps或者docker ps -a可以查看到容器的自定义名字,利用docker inspect也可以获取到容器自定义名字:
[root@docker ~]# docker inspect -f "{{.Name}}" 4d58a9f6f324
/centos_1
注意:
容器的名称是唯一的。如果已经命名了一个web的容器,当再次使用web这个命名的时候会报错,如果一定要使用,需要先用docker rm删除之前创建的web容器。
在执行docker run的时候如果添加--rm参数,则容器终止后会立刻删除。--rm参数和-d参数不能同时使用。
5.2.2 容器互联
使用--link参数可以让容器之间安全地进行交互。
创建一个数据库容器:
[root@docker ~]# docker run -itd --name db --env MYSQL_ROOT_PASSWORD=example
mariadb[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b239b124946c mariadb "docker-entrypoint..." 3 seconds ago Up 2
seconds 3306/tcp db
创建一个web容器并将它连接到db容器:
[root@docker ~]# docker run -itd -P --name web --link db:db nginx:latest[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
86ef0f632ffe nginx:latest "nginx -g 'daemon ..." 44 seconds ago Up 43
seconds 80/tcp web
b239b124946c mariadb "docker-entrypoint..." About a minute ago Up 59
seconds 3306/tcp db
此时web容器已经和db容器建立互联关系:--link参数的格式为:--link name:alias,其中name是要连接的容器名称,alias是这个连接的别名。
Docker相当于在两个互联的容器之间创建了一个虚拟通道,而不用映射它们的端口到宿主机上。在启动db容器的时候并没有使用-p或者-P参数,从而避免了暴露数据库服务端口到外部网络上。
Docker通过两种方式为容器公开连接信息:
1.更新环境变量;
2.更新/etc/hosts文件。
使用env命令来查看web容器的环境变量:
[root@docker ~]# docker run --rm --name web3 --link db:db nginx:latest env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=7258de738125
DB_PORT=tcp://192.168.159.2:3306
DB_PORT_3306_TCP=tcp://192.168.159.2:3306
DB_PORT_3306_TCP_ADDR=192.168.159.2
DB_PORT_3306_TCP_PORT=3306
DB_PORT_3306_TCP_PROTO=tcp
DB_NAME=/web3/db
DB_ENV_MYSQL_ROOT_PASSWORD=example
DB_ENV_GOSU_VERSION=1.10
DB_ENV_GPG_KEYS=199369E5404BD5FC7D2FE43BCBCB082A1BB943DB
430BDF5C56E7C94E848EE60C1C4CBDCDCD2EFD2A
4D1BB29D63D98E422B2113B19334A25F8507EFA5
DB_ENV_MARIADB_MAJOR=10.2
DB_ENV_MARIADB_VERSION=10.2.11+maria~jessie
NGINX_VERSION=1.13.7-1~stretch
NJS_VERSION=1.13.7.0.1.15-1~stretch
HOME=/root
其中DB_开头的环境变量是提供web容器连接db容器使用的,前缀采用大写的连接别名。
除了环境变量之外,Docker还添加host信息到父容器的/etc/hosts文件。
[root@docker ~]# docker run -it --rm --link db:db nginx:latest /bin/bash
root@16b8e6fde27f:/# cat /etc/hosts
172.17.0.2 db b239b124946c
172.17.0.5 16b8e6fde27f
root@16b8e6fde27f:/#
这里有两个hosts信息,第一个是db容器的IP和容器名+容器ID,第二个是web自己的IP和容器ID,web容器中hosts文件采用容器的ID作为主机名。
互联的容器之间是可以ping通的。
六、镜像制作
6.1 Docker中的镜像分层
Docker 支持通过扩展现有镜像,创建新的镜像。实际上,Docker Hub 中 99% 的镜像都是通过在 base镜像中安装和配置需要的软件构建出来的。
1、Docker 镜像为什么分层
镜像分层最大的一个好处就是共享资源。
比如说有多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在磁盘上保存一份 base 镜像;同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。
如果多个容器共享一份基础镜像,当某个容器修改了基础镜像的内容,比如 /etc 下的文件,这时其他容器的 /etc 是不会被修改的,修改只会被限制在单个容器内。这就是容器 Copy-on-Write 特性。
2、可写的容器层
当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。
所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。
3、容器层的细节说明
镜像层数量可能会很多,所有镜像层会联合在一起组成一个统一的文件系统。如果不同层中有一个相同路径的文件,比如 /a,上层的 /a 会覆盖下层的 /a,也就是说用户只能访问到上层中的文件 /a。在容器层中,用户看到的是一个叠加之后的文件系统。
文件操作 | 说明 |
添加文件 | 在容器中创建文件时,新文件被添加在容器层中。 |
读取文件 |
在容器中读取某个文件时,docker会从上往下依次在各进行层中查找此文件。 一旦找到,立即将其复制到容器层,然后打开并读入内存 |
修改文件 |
在容器中修改已存在的文件时,docker会从上往下依次在各镜像层中查找此文件 一旦找到,立即将其复制到容器层,然后修改之 |
删除文件 | 在容器中删除文件时,Docker 也是从上往下依次在镜像层中查找此文件。找到后,会在容器层中记录下此删除操作。(只是记录删除操作) |
只有当需要修改时才复制一份数据,这种特性被称作 Copy-on-Write。可见,容器层保存的是镜像变化的部分,不会对镜像本身进行任何修改。
这样就解释了我们前面提出的问题:容器层记录对镜像的修改,所有镜像层都是只读的,不会被容器修改,所以镜像可以被多个容器共享。
6.1 镜像制作
6.2.1 镜像的生成途径
- 基于容器制作
- dockerfile,docker build
本章主要详细讲解基于容器制作镜像;基于dockerfile 制作镜像在下一张文章Dockerfile 详解中详细介绍;
6.2.2 基于容器制作
docker commit
(1)格式
`Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]`
2)Options 参数
- -a,作者(例如,“along along@along.com”)
- -c,修改Dockerfile指令应用于创建的镜像
- -m,提交消息
- -p,在提交期间暂停容器(默认为true)
(3)示例1:简单的基于容器创建一个新的镜像
① 先运行一个容器
[root@localhost ~]# docker run --name b1 -it busybox
/ # ls /
bin dev etc home proc root sys tmp usr var
/ # mkdir -p /date/html
/ # echo "<h1>busybox httpd server</h1>" > /date/html/index.html
/ # cat /date/html/index.html
<h1>busybox httpd server</h1>
② 不用退出这个容器,另起终端在b1容器基础上,制作新镜像
[root@localhost ~]# docker commit -p b1
sha256:3a6523b08bea7eb339ae04cc8a98caabfd46fbd27ccf31409cc3e8a764effdc1
[root@localhost ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> bf29b97ba38d 7 seconds ago 1.15 MB
③ 给新制作的镜像打标签
[root@localhost ~]# docker tag bf29b97ba38d along/httpd:v0.1
[root@localhost ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
along/httpd v0.1 bf29b97ba38d 39 seconds ago1.15 MB
④ 可以对同一个镜像,再打标签
[root@localhost ~]# docker tag along/httpd:v0.1 along/httpd:latest
[root@localhost ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
along/httpd latest bf29b97ba38d About a minute
ago 1.15 MB
along/httpd v0.1 bf29b97ba38d About a minute
ago 1.15 MB
⑤ 删除同一镜像的标签,只是把这个镜像的标签去掉,只到删除这个镜像的最后一个标签,此镜像才会被删除
[root@localhost ~]# docker image rmi along/httpd:latest
Untagged: along/httpd:latest
[root@localhost ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
along/httpd v0.1 bf29b97ba38d About a minute
ago 1.15 MB
⑥ 基于新的镜像运行一个容器,验证是否是基于b1创建成功的
[root@localhost ~]# docker run --name b2 -it along/httpd:v0.1
/ # cat /date/html/index.html
<h1>busybox httpd server</h1>
/ # exit
(4)示例2:基于容器创建新的镜像,并修改执行命令CMD
① 基于容器b1创建新的镜像,并修改命令为执行httpd服务
[root@localhost ~]# docker commit -a "Along <along@along.com>" -c 'CMD
["/bin/httpd","-f","-h","/date/html"]' -p b1 along/httpd:v0.2
注解:busybox 中httpd 语法
- -f:不运行为守护进程,在前台运行
- -h:指定httpd运行的主目录
② 运行新的镜像v0.2
[root@localhost ~]# docker run --name b3 -d along/httpd:v0.2
③ 验证成功
[root@localhost ~]# docker inspect b3 |grep "IPAddress""SecondaryIPAddresses": null,"IPAddress": "192.168.159.3","IPAddress": "192.168.159.3"
[root@localhost ~]# curl 192.168.159.3
<h1>busybox httpd server</h1>
6.2.3 使用 export 和 import
1.查看本机的容器
这两个命令是通过容器来导入、导出镜像。首先我们使用 docker ps -a 命令查看本机所有的容器。
2.导出镜像
(1)使用 docker export 命令根据容器 ID 将镜像导出成一个文件。
# docker export f299f501774c > hangger_server.tar
2)上面命令执行后,可以看到文件已经保存到当前的 docker 终端目录下。
3.导入镜像
(1)使用 docker import 命令则可将这个镜像文件导入进来。
# docker import - new_hangger_server < hangger_server.tar
(2)执行 docker images 命令可以看到镜像确实已经导入进来了。
6.2.4 使用 save 和 load
1.查看本机的容器
这两个命令是通过镜像来保存、加载镜像文件的。首先我们使用 docker images 命令查看本机所有的镜像。
2.保存镜像
(1)下面使用 docker save 命令根据 ID 将镜像保存成一个文件。
# docker save 0fdf2b4c26d3 > hangge_server.tar
(2)我们还可以同时将多个 image 打包成一个文件,比如下面将镜像库中的 postgres 和 mongo 打包:
# docker save -o images.tar postgres:9.6 mongo:3.4
3.载入镜像
使用 docker load 命令则可将这个镜像文件载入进来。
# docker load < hangge_server.tar
两种方案的差别:
特别注意:两种方法不可混用。
如果使用 import 导入 save 产生的文件,虽然导入不提示错误,但是启动容器时会提示失败,会出现类似"docker: Error response from daemon: Container command not found or does not
exist"的错误。
1.文件大小不同
export 导出的镜像文件体积小于 save 保存的镜像
2.是否可以对镜像重命名
- docker import 可以为镜像指定新名称
- docker load 不能对载入的镜像重命名
3.是否可以同时将多个镜像打包到一个文件中
- docker export 不支持
- docker save 支持
4.是否包含镜像历史
- export 导出(import 导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史记录和元数
- 据信息(即仅保存容器当时的快照状态),所以无法进行回滚操作。
- 而 save 保存(load 加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。
5.应用场景不同
- docker export 的应用场景:
主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容
器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把
这个镜像分发给其他人使用,比如作为基础的开发环境。
- docker save 的应用场景:
如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,
但我们要部署的客户服务器并不能连外网。这时就可以使用 docker save 将用到的镜像打个包,
然后拷贝到客户服务器上使用 docker load 载入。
docker之基础命令相关操作下相关推荐
- docker镜像简介和docker常用基础命令
docker镜像简介和docker常用基础命令 文章目录 docker镜像简介和docker常用基础命令 1:docker镜像概述 1.1:什么是docker镜像 1.2:docker镜像的获取方式 ...
- 【Linux实验】LINUX基础命令综合操作
实验目的: 巩固掌握LINUX下相关基础命令的操作. 实验内容: (1)用pwd命令查看当前所在目录 (2)使用ls命令以详细列表方式查看当前目录的信息 (3)使用man命令获取less命令的帮助信息 ...
- linux基础命令行操作【1】
目录 1.基本命令 2.文件相关知识 3.文本相关操作 4.文件解压.压缩.打包命令 1.基本命令 Ctrl+A/t+Fn+F6:管理Linux(Fn+数字) Linux:输入密码是不显示 Alt+F ...
- Docker镜像基础命令
Docker镜像基础命令 给root用户设置密码 Sudo -s à passwd root à su 更新apt的镜像源地址:阿里云 https://opsx.alibaba.com/mirror ...
- CentOS 8配置 yum/dnf 镜像源 | 安装 Docker | DockerCompose | SimpleDocker 及其相关操作
Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容 ...
- 什么是docker及docker的基础命令
文章目录 1. 简介 1.1 特性 1.2 组件 1.3 版本 2. 安装部署 2.1 安装说明 2.2 centos7安装 2.3 Debian&Ubuntu 3. 运行docker 3. ...
- Docker的基础命令
Doker的基础命令: docker 123456789101112131415161718192021222324252627282930313233343536373839404142434445 ...
- DockerKubernetes ❀ Docker镜像与容器相关操作基础命令详解
文章目录 1.Docker信息查询 1.1 版本信息 1.2 详细信息 1.3 帮助命令 2.镜像命令 2.1 本地镜像查看 2.2 镜像搜索 2.3 镜像拉取 2.4 镜像删除 3.容器命令 3.1 ...
- 『学了就忘系列』Linux基础命令 — 搜索操作相关命令
1.whereis命令 whereis是搜索系统命令的命令,也就是说,whereis命令不能搜索普通文件,而只能搜索系统命令. whereis命令的基本信息如下: 命令名称:whereis 英文原意: ...
- linux登录pg数据库命令,postgreSql基础命令及linux下postgreSql命令
(1)用户实用程序: createdb 创建一个新的Postgresql的数据库(和sql语句:CREATE DATABASE 相同) createuser 创建一个新的Postgresql的用户(和 ...
最新文章
- Silverlight中使用CompositionInitializer宿主MEF
- Visual Studio 压力测试注意点
- 两个php的build文件,PHP编译安装中遇到的两个错误和解决方法
- 属于服务器端运行的程序_Telerik UI for ASP.NET MVC:为任何设备以两倍的速度构建功能丰富且响应迅速的web应用程序...
- react组件生命周期_React组件生命周期-挂钩/方法介绍
- 【转】【MySQL】运行原理(四):重做日志(redo log),回滚日志(undo log),二进制日志(binlog)
- 也许现在的前端,应该了解更多的算法
- python大文件去重_python大ip文件排重
- 14.PHP vld 扩展
- ADB连接手机遇到的问题:list of devices attached
- jvm内存模型、jvm内存结构、Java内存结构、Java内存模型(JMM)、Java对象模型的区别(吐血研究整理)
- 辛弃疾 菩萨蛮·书江西造口壁
- ES--highlight(高亮)查询
- Abbyy FineReader PDF转word不乱码
- 通过maven打nar报错问题
- 电脑运行速度(卡不卡)的决定因素
- 电源管理允许此设备唤醒计算机怎么关掉,允许计算机关闭此设备以节省电量灰色 | MOS86...
- 英语学习的几个实用网站
- 使用Pr时输出设备没有声音问题
- 三国合肥会战\孙仲谋二战张文远\张辽威震逍遥津\张辽八百骑打破孙仲谋