欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker常用命令,我与你一起实战演练

程序员文章站 2022-03-01 17:27:56
...

查看本地所有的镜像

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
nginx               latest              7b2ec12a5042        3 months ago        109 MB
tomcat              8                   fb269ccd26c4        3 months ago        462.5 MB
redis               latest              40b1f67fd3d4        3 months ago        83.38 MB
hello-world         latest              3535063d9957        3 months ago        1.848 kB
centos              latest              88ec626ba223        4 months ago        199.7 MB

以某个镜像来启动容器

通过上一步的执行命令中可以找到一个命名为centos(image id : 88ec626ba223)的镜像
接下来就以这个镜像来启动容器吧

docker run -i -t -v /export/:/export/ 88ec626ba223 /bin/bash

这条命令比较长,我们稍微分解一下,其实包含以下三个部分:
  docker run <相关参数> <镜像 ID> <初始命令>
其中,相关参数包括:
  -i:表示以“交互模式”运行容器
  -t:表示容器启动后会进入其命令行
  -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

在容器中创建应用

这里以创建执行脚本/root/run.sh为例,并编辑如下内容

more /root/run.sh
#!/bin/bash
echo "hello world,this  docker ceated by liuzhichong"

chmod 777 /root/run.sh

从容器中退出

当以上步骤全部完成后,可使用exit命令,退出容器。

exit

查看正在运行的容器

docker ps

此时,您应该看不到任何正在运行的程序,因为刚才已经使用exit命令退出的容器,此时容器处于停止状态,可使用如下命令查看所有容器:

查看历史上所有构建过的容器

这里说的历史上其实不太恰当,历史构建过的容器记录是可以被删除掉的

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
bbf2b4978ada        88ec626ba223        "/bin/bash"         2 minutes ago       Exited (0) 39 seconds ago                       pensive_ptolemy

基于容器来构建镜像

其中第2行

bbf2b4978ada        88ec626ba223        "/bin/bash"         2 minutes ago       Exited (0) 39 seconds ago                       pensive_ptolemy

就是刚刚执行过的容器,接下来基于此容器ID创建一个新的镜像,命名为lzc

docker commit bbf2b4978ada lzc:0.1
#执行成功后会有下面这段话
3a36b5c11d9af887479718da116de4708802ad6b201628e4b3a15a4fc622e890

好了,我们执行下docker images看看当前是否多了一个名为lzc:0.1的镜像

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
lzc                 0.1                 92da51f3e691        3 seconds ago       199.7 MB
nginx               latest              7b2ec12a5042        3 months ago        109 MB
tomcat              8                   fb269ccd26c4        3 months ago        462.5 MB
redis               latest              40b1f67fd3d4        3 months ago        83.38 MB
hello-world         latest              3535063d9957        3 months ago        1.848 kB
centos              latest              88ec626ba223        4 months ago        199.7 MB

利用这个自制的镜像(lzc:0.1)创建一个容器,进入去看看

docker run -i -t -v /export/:/export/ 92da51f3e691  /bin/bash
#会发现 /root 会有刚才创建的那个run.sh文件哟
ll /root/
total 8
-rw------- 1 root root 3302 May 31 18:03 anaconda-ks.cfg
-rwxrwxrwx 1 root root   55 Nov  1 07:59 run.sh

/root/run.sh(可以看到如下这段话的输出)
hello world,this  docker ceated by liuzhichong
#一切正常,我们退出吧
exit

利用这个镜像(lzc:0.1)创建一个容器,也可以直接指定去执行镜像里的脚本来执行

docker run --name lzchello2 lzc:0.1 /root/run.sh
hello world,this  docker ceated by liuzhichong

稍作解释:
  -d:表示以“守护模式”执行/root/run.sh脚本,此时这名话“hello world,this  docker ceated by liuzhichong” 就不会输出到控制台了
  -p:表示宿主机与容器的端口映射,示例(-p 58080:8080)此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。(上述示例用不上端口映射,所以命令中没有使用到)
  --name:表示容器名称,用一个有意义的名称命名即可。(这个地方的容器名称,不能重复,否则会报错)

其它命令

删除容器

#docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
9a374293d76c        92da51f3e691        "/root/run.sh"      2 minutes ago                                                       lzchello4
0d8966feb95c        92da51f3e691        "/bin/bash"         3 minutes ago       Exited (0) 3 minutes ago                        thirsty_brown
4065ea595192        lzc:0.1             "/root/run.sh"      5 minutes ago                                                       lzchello3
5c6c0011f490        lzc:0.1             "/root/run.sh"      6 minutes ago                                                       lzchello2
87bd93e1ca3e        92da51f3e691        "/bin/bash"         8 minutes ago       Exited (0) 8 minutes ago                        hopeful_thompson
bbf2b4978ada        88ec626ba223        "/bin/bash"         14 minutes ago      Exited (0) 12 minutes ago                       pensive_ptolemy

# docker rm 9a374293d76c 0d8966feb95c 4065ea595192 5c6c0011f490 87bd93e1ca3e

删除镜像

#docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
lzc                 0.1                 92da51f3e691        12 minutes ago      199.7 MB
nginx               latest              7b2ec12a5042        3 months ago        109 MB
tomcat              8                   fb269ccd26c4        3 months ago        462.5 MB
redis               latest              40b1f67fd3d4        3 months ago        83.38 MB
hello-world         latest              3535063d9957        3 months ago        1.848 kB
centos              latest              88ec626ba223        4 months ago        199.7 MB

#docker rmi lzc:0.1
Untagged: lzc:0.1
Deleted: 92da51f3e69192df4038e7c0602664350449546212d3f73a22b070971bba89b5
相关标签: docker