docker入门实践,我与你一起实战演练

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hl_java/article/details/83621582

查看本地所有的镜像

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

猜你喜欢

转载自blog.csdn.net/hl_java/article/details/83621582