自我介绍
目前就读于西南交通大学计算机与人工智能学院研究生一年级,通过同学了解到“飞天加速计划·高
校学生在家实践”活动
学习docker并记录学习过程
Docker的常用命令
帮助命令
docker version
docker info //显示docker的系统信息
docker 命令 --help
镜像命令
docker images 查看本机所有的镜像
docker search 搜索命令
docker pull 下载镜像
docker rmi -f 删除镜像
容器命令
有了镜像才可以创建容器
新建容器并启动
docker run [可选参数] image
#可选参数
--name="name"
-d 后台运行
-it 交互式运行
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
容器端口
-p 随机指定端口
#测试,启动并进入容器
root@iZ2vc7zktoz7z9fn3qhptjZ ~]# docker run -it centos /bin/bash
[root@66b736657325 /]#
列出所有运行中的容器
docker ps 查看运行中的容器
#当前运行、
-a #列出运行的容器+历史运行
[root@iZ2vc7zktoz7z9fn3qhptjZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZ2vc7zktoz7z9fn3qhptjZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
66b736657325 centos "/bin/bash" 5 minutes ago Exited (0) 3 minutes ago bold_golick
bc74ee3218c7 hello-world "/hello" About an hour ago Exited (0) About an hour ago wonderful_kepler
退出容器
exit #退出
Ctrl+P+Q #容器不停止退出
删除容器
docker rm 容器id
docker rm -f $(docker pa -aq) #删除所有
启动和停止容器
docker start 容器id
docker restart 容器id
docker stop id
docker kill id
其他常用命令
#查看日志
docker logs
#自己编写一段shell脚本
docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"
[root@iZ2vc7zktoz7z9fn3qhptjZ ~]# docker ps
[root@iZ2vc7zktoz7z9fn3qhptjZ ~]# docker logs -tf --tail 10 ca62595a175a
#查看容器的进程信息
docker top 容器id
#查看容器的元信息
docker inspect id
#进入当前正在运行的容器
#我们的容器都是使用后台方式运行的,需要进入容器,修改一些配置
docker exec -it 容器id bashShell
#测试
[root@iZ2vc7zktoz7z9fn3qhptjZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df33d9b19dfc centos "/bin/bash" 3 hours ago Up 3 hours intelligent_pasteur
[root@iZ2vc7zktoz7z9fn3qhptjZ ~]# docker exec -it df33d9b19dfc /bin/bash
[root@df33d9b19dfc /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:10 pts/0 00:00:00 /bin/bash
root 15 0 0 12:50 pts/1 00:00:00 /bin/bash
root 29 15 0 12:51 pts/1 00:00:00 ps -ef
#方式二
docker attach 容器id
#docker exec #进入容器后开启一个新的终端,可以在里面操作
#docker attach #进入容器正在执行的终端
#从容器内拷贝文件到主机上
docker cp 容器id:
#测试
[root@iZ2vc7zktoz7z9fn3qhptjZ home]# docker attach 31ffda8491d6
[root@31ffda8491d6 /]# cd /home
[root@31ffda8491d6 home]# ls
[root@31ffda8491d6 home]# touch text.java
[root@31ffda8491d6 home]# ls
text.java
[root@31ffda8491d6 home]# exit
exit
[root@iZ2vc7zktoz7z9fn3qhptjZ home]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31ffda8491d6 centos "/bin/bash" About a minute ago Exited (0) 10 seconds ago sleepy_diffie
#将文件拷贝出到主机上
[root@iZ2vc7zktoz7z9fn3qhptjZ home]# docker cp 31ffda8491d6:/home/text.java /home
[root@iZ2vc7zktoz7z9fn3qhptjZ home]# ls
text.java yang.java
收获总结
经过大约一周的docker学习,在学习过程中,遇到过许许多多的问题,最后还是通过网络解决了自己的问题,学计算机这一行,遇到问题是在所难免的,我们只需要认真分析报错信息,结合自己所学的知识或者上网查询一般就可以解决问题。
想到我在学习docker的容器挂载命令时,启动容器并挂载目录后,容器直接停止运行,我在网上找了许多的解决办法,花费了大半天的时间,最后才发现我挂载的宿主机目录下存在一些文件,因为mysql容器在进行挂载的时候,挂载目录必须为空目录,否则容器将会自动停止运行。
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
在挂载的时候宿主机的目录必须不存在或者为空,否则容器会自动停止运行
docker run -p 3310:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7