云服务器ECS使用初体验-阿里云开发者社区

开发者社区> 飞天加速计划> 正文
登录阅读全文

云服务器ECS使用初体验

简介: 云服务器小白第一次尝试在服务器上运行docker,学习一些docker的常用命令

自我介绍

目前就读于西南交通大学计算机与人工智能学院研究生一年级,通过同学了解到“飞天加速计划·高
校学生在家实践”活动

学习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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: