archlinux中的第一个容器该怎么创建,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
sudo docker run -i -t base/archlinux /bin/bash #如果需要使用ubuntu镜像 sudo docker run -i -t ubuntu /bin/bash #如果需要使用centOS镜像 sudo docker run -i -t centos /bin/bash #如果需要使用centOS7镜像 sudo docker pull openshift/base-centos7 /bin/bash
不过有可能出现如下异常,出现该异常可以试着更换一下源,或者试一下通过docker pull来先把镜像拉取到本地。
若无异常,则进入我们的第一个容器
命令中的-i保证容器中STDIN开启,-t标志则是让docker为创建容器分配一个伪tty终端。这两个参数是创建交互式容器最基本的参数。如若没有这两个参数,创建的是一个运行于后台的容器。
命令中的/bin/bash则是告诉docker成功过创建一个新的容器后,启动一个bash shell。
其中的archlinux、centos等Linux发行版字样则是告知docker基于什么镜像来创建容器。其他镜像可以到docker下载你需要的镜像,如下图,找到你需要的镜像,右侧的Docker Pull Command栏会跟你说对应的镜像拉取命令。
可以通过先拉取镜像到本地,执行上面的docker run命令如果检测到本地的镜像,docker则不再到Docker Hub Registry查看是否有对应的镜像,如果本地无对应的镜像,则到Docker Hub Registry中查看,如果查找到,则下载到本地:
#拉取archlinux镜像 sudo docker pull base/archlinux
在使用容器之前我们先来熟悉几个常用的命令。
#查看目前有几个容器,多少个暂停,多少个停止,多少个正在运行 [bysu@subaoya ~]$ sudo docker info #######下面就是运行后的一部分结果############ Containers: 1 Running: 0 Paused: 0 Stopped: 1 Images: 1 ######################################## [bysu@subaoya ~]$ sudo docker ps #查看正在运行的容器 CONTAINER ID IMAGE COMMAND CREATED STATUS d092d144e887 base/archlinux "/bin/bash" 35 minutes ago Up 12 minutes PORTS NAMES sad_rosalind [bysu@subaoya ~]$ sudo docker ps -a #查看所有状态的容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2552cacc1928 base/archlinux "/bin/bash" 33 seconds Exite d26 seconds ecstatic_galileo d092d144e887 base/archlinux "/bin/bash" 35 minutes ago Up 12 minutes sad_rosalind [bysu@subaoya ~]$ sudo docker ps -a|grep Up|awk '{print $1}' #查看正在运行的容器名 d092d144e887 #查看所有容器的名字 sudo docker ps -a -q #######下面就是运行结果############ bfacc5ccb74d a56a719eb52a 0fc9b2bc3e84 #删除不在运行的所有容器 sudo docker rm $(sudo docker ps -a -q) #######下面就是运行结果############ bfacc5ccb74d 0fc9b2bc3e84 Error response from daemon: You cannot remove a running container a56a719eb52ae8bb3ecbe22bc1b029f203206b0f7144e74992038bb76c56b6ea. Stop the container before attempting removal or force remove #停止一个正在运行的容器 sudo docker stop a56a719eb52a #######下面就是运行结果############ a56a719eb52a
通过前面的方式创建容器时,可以给容器命名。如果创建时不指定名字,则会随机生成容器名字。
sudo docker run --name my_first_container -i -t base/archlinux /bin/bash
一般地,上述创建容器成功,也直接进入容器,我第一时间想到的是exit(不知道有没其他命令切出容器,如果需要用到的,自行搜索引擎),如此这般之后,就有可能出现刚刚切出的容器已经停止运行。这会导致你后续如果想通过docker exec -it my_first_container bash 或者sudo docker attach my_first_container再次进入容器 my_first_container,会出现异常,需要先通过命令sudo docker start my_first_container,重新启动该容器。以上命令中容器名可以用容器ID替换。
查看主机名
hostname
查看网络接口
ifconfig
ifconfig命令不存在的问题,参考
安装其他软件跟archlinux中是一样的。
守护式容器可以长期运行,没有交互式会话,一般用于作为运行应用程序和服务的载体。其创建命令如下:
sudo docker run --name my_daemon -d base/archlinux /bin/sh -c "while true;do echo hello docker;sleep 1;done"
上述命令中,-d参数告知docker将容器放后台运行。
由于上面创建的容器放在后台,我们作为容器的“创世者”,它是死是活我们多少总有点关心的。
sudo docker ps -a
通过status字段,得知它还活着。竟然得知还活着,那自然而然又想知道ta过得好不好——有没在正常工作了。可以通过查看日志,得知ta的近况如何。
sudo docker logs my_daemon
实时查看日志可以使用下列命令。
sudo docker logs -f my_daemon #实时查看最新日志 sudo docker logs --tail 0 -f my_daemon #实时查看最新日志,加上-t标志为每条日志项加上时间戳,方便调试 sudo docker logs --tail 0 -ft my_daemon
退出请Ctrl+c,用过Linux的应该都知道。
[bysu@subaoya ~]$ sudo docker attach my_daemon
hello docker
hello docker
....
上面标红的代码执行后,无法通过Ctrl+c退出容器。无奈的我只能把xshell给X掉重连。有知道怎么关掉的麻烦告知一下(也许是无法关闭)。
执行docker run命令时通过--log-driver选项来实现。如果通过该选项指定syslog,将容器的所有日志输出重定向到syslog,则会同时禁用docker logs命令,具体命令如下:
sudo docker run --name my_log_daemon --log-driver="syslog">
如果要禁用容器所有的日志,则可用选项none,该选项同样会禁用docker logs命令。
使用sudo docker top my_first_container可以查看容器内的进程
可以通过docker stats命令,动态查看多个容器的CPU,内存,网速,IO,这能快速监控一台主机上的一组容器。
通过docker exec命令在容器内部额外启动新进程。在容器内可以运行的进程有两种类型:后台任务和交互式任务。
容器中运行后台任务
sudo docker exec -d my_first_container touch /etc/createFile
容器中运行交互命令
sudo docker exec -t -i my_first_container /bin/bash
如果容器在创建时就是交互式的,可以直接sudo docker attach命令附到原本的容器上,效果等同上面这条命令。
8.停止守护式容器
sudo docker stop 容器名/容器ID
可通过--restart标志让docker自动重启容器。--restart标志会检查容器退出的代码,并据此来决定是否要重启容器。Docker默认不会重启容器。
总是自动重启容器的命令
sudo docker run --restart=always --name my_daemon -d base/archlinux /bin/sh -c "while true;do echo hello docker;sleep 60;done"
--restart标志被设置为always,无论容器退出的代码是什么,Docker都会自动重启该容器。
如果--restart标志被设置为on-failure,则只有容器退出的代码为非0值时,才会自动重启。同时还可以设置一个可选参数,标志重启次数。
sudo docker run --restart=on-failure:5 --name my_daemon -d base/archlinux /bin/sh -c "while true;do echo hello docker;sleep 60;done"
当该容器退出代码为非0时,Docker会尝试最多5次的重启。
10.深入容器
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。