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
上一篇: PHP会话(COOKIE和SESSION):注册登陆实操案例
下一篇: 在云服务器上安装docker
推荐阅读