如何使用docker运行命令
Docker Run命令用于启动和运行容器。
学习如何使用"docker运行"命令是任何想要熟悉Docker的开发人员的建议。
使用Docker时,软件开发人员主要使用"docker运行"命令:
- 从给定的Docker图像创建一个容器
- 使用可选名称运行一个容器
- 在前台运行一个容器
- 以独立式模式运行一个容器
- 以交互模式运行一个容器
- 将容器端口发布到主机
- 在容器和主机之间共享数据
- 一旦停止,删除容器
Docker运行命令
命令的语法:
docker run [options] image-name [command] [arg...]
要运行Docker容器,我们可以简单地运行以下命令,假设我们已安装Docker:
docker run image-name
其中:
图像名称可以是本地计算机上的Docker镜像,也可能从未从线注册表中拉出,例如Docker Hub和Quay。
IO。
在以下示例中,我们将从公共图像'Hello-World'运行一个容器,位于Docker Hub上。
$sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...
第一次运行容器时,Docker守护程序将从Docker集线器中拉动图像"Hello-World"。
然后,它从该图像创建一个新的容器,并将输出流传输到终端。
从现在开始,将图像下载到本地计算机。
我们可以通过运行列出所有Docker图像:
$sudo docker image ls
输出:
REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 4e2eef94cd6b 9 days ago 73.9MB nginx latest 4bb46517cac3 2 weeks ago 133MB alpine latest a24bb4013296 3 months ago 5.57MB truongnh1992/go latest 57b4af3567ac 3 months ago 7.41MB hello-world latest bf756fb1ae65 7 months ago 13.3kB
下次运行该图像时,它比第一个图像快,我们可以使用图像ID而不是图像名称。
例如:
$sudo docker run bf756fb1ae65 Hello from Docker! This message shows that your installation appears to be working correctly. ...
注意:从Docker版本1. 13,由于其发布的新语法,我们使用"Docker Container Run"而不是"Docker Run"。
建议使用sudo或者其他解决方法前言docker运行命令,而无需sudo。
使用定义的名称运行一个容器
当我们使用基本语法的"Docker Container运行"的Container时,Docker将为每个容器随机生成名称,如下图所示:
$sudo docker container ls -a
输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 941b67537bbb ubuntu "/bin/bash" 4 seconds ago Exited (0) 3 seconds ago musing_elgamal a7b197b56d2c bf756fb1ae65 "/hello" About a minute ago Exited (0) About a minute ago determined_faraday 0b40e331161e hello-world "/hello" 4 minutes ago Exited (0) 4 minutes ago nervous_sammet
如果要显式为容器分配名称,请使用以下语法运行命令:
$docker container run --name container-name image-name
例如:
$sudo docker container run --name hello-theitroad hello-world
输出:
$sudo docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eb2f0c9cc658 hello-world "/hello" 21 seconds ago Exited (0) 20 seconds ago hello-theitroad ...
在前台运行一个容器
当我们使用Docker容器时,有两种运行它们的模式:添加模式和分离模式。
默认情况下,Docker在前台运行容器。
它意味着容器过程添加到终端会话并显示输出。
如果容器仍在运行,则不会返回命令提示符。
例如:
$sudo docker container run nginx /docker-entrypoint.sh: /docker-entrypoint.d/is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Configuration complete; ready for start up
以独立式模式运行一个容器
如果要在后台进程(分离模式)中运行该容器,请使用"-d""选项:
$sudo docker container run -d nginx 4fd8f2933eafaebcc75ef4fe6d0a961f76d8fdbf64383caff7f422a25c60951f
以交互模式运行一个容器
Docker支持在交互模式下运行容器。
由于此功能,我们可以使用shell在容器中执行命令。
使用'/bin/bash'或者'/bin/sh'的whied west-it
选项以启动交互式模式,例如:
$sudo docker container run -it ubuntu /bin/bash root@d99e70bff763:/# echo$sudo docker container run -it ubuntu /bin/sh # echo/bin/bash$dock container run -p host-port:container-port image/bin/sh
$sudo docker container run -d -p 8080:80 nginx cd85a291dab1ff92fa2ee6275446f758baa8322de2b706f7b581a54825142c5b
端口转发容器
默认情况下,为了访问在容器中运行的进程,我们必须进入它。
如果要从外部访问它,请打开一个端口。
通过发布端口,我们可以使用-p
选项将容器端口映射到主机上的端口,如下所示:
$curl localhost:8080
例如,将Container Nginx的端口80映射到主机上的端口8080,运行:
$docker container run -v host-machine-location:container-storage image
现在,让我们使用'curl'检索来自localhost的内容:8080
$mkdir share-data/ $echo "Hello theitroad readers" > share-data/test.txt $sudo docker container run -it -v $(pwd)/share-data:/home alpine
安装容器的卷
容器中的数据是短暂的,当容器停止时,不再存在。
如果要持久地将数据保持在容器中,则必须将其安装到共享存储卷中。
让我们使用"-V"选项作为安装卷的下面:
/# ls /home/ test.txt /# cat /home/test.txt Hello theitroad readers
例如,让我们将主机上的"共享数据"目录安装到容器中的"/home"中:
$docker container run --rm image
输出:
$sudo docker container run ubuntu $sudo docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ad348fb61463 ubuntu "/bin/bash" 8 seconds ago Exited (0) 6 seconds ago distracted_hoover
一旦停止,删除容器
默认情况下,当容器停止时,其文件系统仍保留在主机上。
他们消耗了大量的存储座。
如果要在退出后自动删除容器,请使用--rm
选项:
$sudo docker container run --rm ubuntu $sudo docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
例如,运行一个没有--rm
选项的Docker容器:
使用- rm
选项时,一个容器停止,它将自动删除。