d4.容器操作基础命令

1. 启动容器用法

docker run [选项] [镜像名] [shell命令] [参数]

#选项:  
-i, --interactive   Keep STDIN open even if not attached,通常和-t一起使用
-t, --tty           分配pseudo-TTY,通常和-i一起使用,注意对应的容器必须运行shell才支持进入
-d, --detach         Run container in background and print container ID,台后运行,默认前台
--name string       Assign a name to the container
--h, --hostname string Container host name 
--rm                 Automatically remove the container when it exits
-p, --publish list   Publish a container's port(s) to the host
-P, --publish-all   Publish all exposed ports to random ports
--dns list           Set custom DNS servers
--entrypoint string Overwrite the default ENTRYPOINT of the image
--restart policy  
--privileged         Give extended privileges to container
-e, --env=[] Set environment variables
--env-file=[]       Read in a line delimited file of environment variables

注意: 容器启动后,如果容器内没有前台运行的进程,将自动退出停止

# 指定容器名称
[root@Ubuntu2204 ~]#docker run --name web1 nginx

# 运行交互式容器并退出
[root@Ubuntu2204 ~]#docker run -it --name web2 nginx bash
root@35a32e21d4a3:/# exit
exit

同时按三个键ctrl+p+q退出后容器不会停止

# 开机自动运行容器
[root@Ubuntu2204 ~]#docker run -d --name nginx --restart=always nginx
[root@Ubuntu2204 ~]#reboot 

2. 显示当前存在容器

docker ps [OPTIONS]
docker container ls [OPTIONS]

Options:
  -a, --all             Show all containers (default shows just running)
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print containers using a Go template
  -n, --last int        Show n last created containers (includes all states) (default -1)
  -l, --latest          Show the latest created container (includes all states)
      --no-trunc        Don't truncate output
  -q, --quiet           Only display container IDs
  -s, --size            Display total file sizes

3. 查看容器内的进程

docker top CONTAINER [ps OPTIONS]

4. 查看容器资源使用情况

docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics

Options:
-a, --all             Show all containers (default shows just running)
    --format string   Pretty-print images using a Go template
    --no-stream       Disable streaming stats and only pull the first result
    --no-trunc       Do not truncate output

5. 查看容器的详细信息

# docker inspect 可以查看docker各种对象的详细信息,包括:镜像,容器,网络等

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Options:
-f, --format string   Format the output using the given Go template
-s, --size           Display total file sizes if the type is container

6. 删除容器

# docker rm 可以删除容器,即使容器正在运行当中,也可以被强制删除掉

docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker container rm [OPTIONS] CONTAINER [CONTAINER...]

#选项:  
-f, --force     Force the removal of a running container (uses SIGKILL)
-v, --volumes   Remove the volumes associated with the container

#删除停止的容器
docker container prune [OPTIONS]
Options:
      --filter filter   Provide filter values (e.g. 'until=<timestamp>')
  -f, --force           Do not prompt for confirmation

# 删除所有容器
docker rm -f `docker ps -a -q`
docker ps -a -q | xargs docker rm -f

7. 容器的启动和停止

docker start|stop|restart|pause|unpause 容器ID

# 批量正常启动或关闭所有容器
docker start $(docker ps -a -q)  
docker stop $(docker ps -a -q) 

8. 给正在运行的容器发信号

# docker kill 可以给容器发信号,默认号SIGKILL,即9信号

docker kill [OPTIONS] CONTAINER [CONTAINER...]

#选项:
-s, --signal string   Signal to send to the container (default "KILL")

9. 进入正在运行的容器

使用exec命令,在运行中的容器启动新进程,可以执行单次命令,以及进入容器 测试环境使用此方式,使用exit退出,但容器还在运行,此为推荐方式

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

常用选项:  
-d, --detach               Detached mode: run command in the background
-e, --env list             Set environment variables
-i, --interactive         Keep STDIN open even if not attached
-t, --tty                 Allocate a pseudo-TTY

#常见用法
docker exec -it 容器ID sh|bash


[root@Ubuntu2204 ~]#docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES
fcd4687e3ba6   nginx     "/docker-entrypoint.…"   19 minutes ago   Up 18 minutes   80/tcp                              nginx2
15baf2043597   nginx     "/docker-entrypoint.…"   30 minutes ago   Up 7 minutes    0.0.0.0:80->80/tcp, :::80->80/tcp   nginx
[root@Ubuntu2204 ~]#docker exec -it fcd4687e3ba6 bash
root@fcd4687e3ba6:/# exit
exit
[root@Ubuntu2204 ~]#docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES
fcd4687e3ba6   nginx     "/docker-entrypoint.…"   19 minutes ago   Up 19 minutes   80/tcp                              nginx2
15baf2043597   nginx     "/docker-entrypoint.…"   31 minutes ago   Up 7 minutes    0.0.0.0:80->80/tcp, :::80->80/tcp   nginx

10. 暴露所有容器端口

容器启动后,默认处于预定义的NAT网络中,所以外部网络的主机无法直接访问容器中网络服务 docker run -P 可以将事先容器预定义的所有端口映射宿主机的网卡的随机端口,默认从32768开始 使用随机端口 时,当停止容器后再启动可能会导致端口发生变化

-P , --publish-all= true | false默认为false

#示例:
docker run -P docker.io/nginx  #映射容器所有暴露端口至随机本地端口

# docker port 可以查看容器的端口映射关系
docker port CONTAINER [PRIVATE_PORT[/PROTO]]

11. 指定端口映射

docker run -p 可以将容器的预定义的指定端口映射到宿主机的相应端口

注意: 多个容器映射到宿主机的端口不能冲突,但容器内使用的端口可以相同

# 容器80端口映射到宿主机本地端口81
docker run  -p 81:80 --name nginx nginx

12. 查看容器的日志

# docker logs 可以查看容器中运行的进程在控制台输出的日志信息

docker logs [OPTIONS] CONTAINER

选项:
--details       Show extra details provided to logs
-f, --follow     Follow log output
--since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
--tail string   Number of lines to show from the end of the logs (default "all")
-t, --timestamps     Show timestamps
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)

13. 传递运行命令

容器需要有一个前台运行的进程才能保持容器的运行,通过传递运行参数是一种方式,另外也可以在构 建镜像的时候指定容器启动时运行的前台命令

容器里的PID为1的守护进程的实现方式

  • 服务类: 如: Nginx,Tomcat,Apache ,但服务不能停
  • 命令类: 如: tail -f /etc/hosts ,主要用于测试环境,注意: 不要tail -f <服务访问日志> 会产生不 必要的磁盘IO

14. 容器内部的hosts文件

容器会自动将容器的ID加入自已的/etc/hosts文件中,并解析成容器的IP

15. 指定容器DNS

容器的dns服务器,默认采用宿主机的dns 地址,可以用下面方式指定其它的DNS地址

  • 将dns地址配置在宿主机
  • 在容器启动时加选项 --dns=x.x.x.x
  • 在/etc/docker/daemon.json 文件中指定

16. 容器内和宿主机之间复制文件

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Options:
  -a, --archive       Archive mode (copy all uid/gid information)
  -L, --follow-link   Always follow symbol link in SRC_PATH

17. 传递环境变量

有些容器运行时,需要传递变量,可以使用 -e <参数> 或 --env-file <参数文件> 实现

变量参考链接: https://hub.docker.com/_/mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值