一、docker run 常用参数说明
docker run -p 5000:8080 org/proj:1.0
小p:暴露指定端口
docker run -d -P training/webapp python app.py
大P:暴露所有端口,映射到主机的随机端口上。
-d:后台运行
docker run --name mynginx -d nginx:latest
--name:给容器命名
docker run -ti --add-host db-static:86.75.30.9 ubuntu cat /etc/hosts
--add-host:添加容器内的host-ip的映射
docker run -it --rm ubuntu:16.04 bash
-i:保持STDIN输出
-t:打开终端pseudo-TTY
-it:交互模式启动一个容器
--rm:运行结束后立即删除该容器,--rm 和 -d不能共用
docker run -d --webdemo -p 8899:8080 --privileged=true -v /home/admin/webapp/:/usr/local/tomcat/webapps tomcat:8.0
--:什么意思?等价于“--name”???
--privileged:使Docker拥有访问主机所有设备的权限
-v:绑定数据卷(":"之前是宿主机文件夹,之后是容器需共享的文件夹)
具体参见:
$ docker run --help
如何临时退出一个正在交互的容器的终端,而不终止它?
按Ctrl+p,后按Ctrl+q,如果按Ctrl+c会使容器内的应用进程终止,进而会使容器终止。
如何控制容器占用系统资源(CPU,内存)的份额?
在使用docker create命令创建容器或使用docker run 创建并运行容器的时候,可以使用-c|–cpu-shares[=0]参数来调整同期使用CPU的权重,使用-m|–memory参数来调整容器使用内存的大小。
二、其他常用命令
查看本地镜像
docker images
# 删除所有镜像
docker rmi $(docker images | grep -v RESPOSITORY | awk '{print $3}')
# 显示全部容器
docker ps -a
# 显示当前运行的容器
docker ps
docker start
# 启动一个已经停止的容器
docker start 容器ID
# 重启一个容器
docker restart 容器ID
# 关闭运行中的容器
docker stop 容器ID
# 删除容器
docker rm 容器ID
# 查看所有容器id
docker ps -q
docker ps -a -q
# 删除所有容器
docker rm $(docker ps -a -q)
杀死所有正在运行的容器:
docker kill $(docker ps -a -q)
删除所有停止的容器:
docker rm $(docker ps -a -q)
进入docker容器内部:
docker exec -it 容器ID/name bash
例如:docker exec -it ba076e2c4aa4 bash
修改了容器的文件,也就是改动了容器的存储层,可以通过 docker diff 命令看到具体的改动。
docker diff 容器ID/name
# 导出容器
docker export 容器ID > xxx.tar
# 把 myimage 镜像保存成 tar 文件
docker save myimage | bzip2 -9 -c> /home/save.tar.bz2
docker save myimage:1.1.0 | gzip > myimage.tar.gz
docker save -o test.tar wurstmeister/test:2.12-2.3.0
# 加载 myimage 镜像
bzip2 -d -c < /home/save.tar.bz2 | docker load
docker load < myimage.tar.gz
docker load -i test.tar
查看镜像、容器、数据卷所占用的空间。
docker system df
#查看容器内的标准输出
docker logs <id/name>
#查看docker容器的底层信息,json格式
docker inspect <id/name>
例如:
docker inspect c80b90e2ad19 | grep -i IP
docker inspect 85f7f38785d9 | grep ark.ip
#查看docker所有网络
docker network ls
#查看docker某个网络详情
docker network inspect vlan702
#查看端口映射
docker port <id/name>
#查看容器挂载的数据卷:
docker inspect -f "{{.Mounts}}" <id/name>
#docker容器和宿主机之前拷贝复制文件
从容器到宿主机
docker cp 容器标识:/opt/source /target
从宿主机到容器
docker cp /target 容器标识:/opt/source
三、构建Docker镜像
# 构建容器
docker build -t 镜像名称 . # 后面的. 指的是当前文件夹 (其实是Dockerfile存放的文件夹)
# 建立映像文件。–rm 选项是告诉Docker,在构建完成后删除临时的Container,Dockerfile的每一行指令都会创建一个临时的Container,一般这些临时生成的Container是不需要的
docker build --rm=true -t loen/lamp .
# 查看历史
docker history 镜像ID
# 格式化显示
docker history 镜像ID --format "table{{.ID}}=\n{{.CreatedBy}}" --no-trunc
附:docker run --help
[bargee@barge cluster]$ docker run --help Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container -a, --attach=[] Attach to STDIN, STDOUT or STDERR --add-host=[] Add a custom host-to-IP mapping (host:ip) --blkio-weight Block IO (relative weight), between 10 and 1000 --blkio-weight-device=[] Block IO weight (relative device weight) --cpu-shares CPU shares (relative weight) --cap-add=[] Add Linux capabilities --cap-drop=[] Drop Linux capabilities --cgroup-parent Optional parent cgroup for the container --cidfile Write the container ID to the file --cpu-period Limit CPU CFS (Completely Fair Scheduler) period --cpu-quota Limit CPU CFS (Completely Fair Scheduler) quota --cpuset-cpus CPUs in which to allow execution (0-3, 0,1) --cpuset-mems MEMs in which to allow execution (0-3, 0,1) -d, --detach Run container in background and print container ID --detach-keys Override the key sequence for detaching a container --device=[] Add a host device to the container --device-read-bps=[] Limit read rate (bytes per second) from a device --device-read-iops=[] Limit read rate (IO per second) from a device --device-write-bps=[] Limit write rate (bytes per second) to a device --device-write-iops=[] Limit write rate (IO per second) to a device --disable-content-trust=true Skip image verification --dns=[] Set custom DNS servers --dns-opt=[] Set DNS options --dns-search=[] Set custom DNS search domains -e, --env=[] Set environment variables --entrypoint Overwrite the default ENTRYPOINT of the image --env-file=[] Read in a file of environment variables --expose=[] Expose a port or a range of ports --group-add=[] Add additional groups to join -h, --hostname Container host name --help Print usage -i, --interactive Keep STDIN open even if not attached --ip Container IPv4 address (e.g. 172.30.100.104) --ip6 Container IPv6 address (e.g. 2001:db8::33) --ipc IPC namespace to use --isolation Container isolation level --kernel-memory Kernel memory limit -l, --label=[] Set meta data on a container --label-file=[] Read in a line delimited file of labels --link=[] Add link to another container --log-driver Logging driver for container --log-opt=[] Log driver options -m, --memory Memory limit --mac-address Container MAC address (e.g. 92:d0:c6:0a:29:33) --memory-reservation Memory soft limit --memory-swap Swap limit equal to memory plus swap: '-1' to enable unlimited swap --memory-swappiness=-1 Tune container memory swappiness (0 to 100) --name Assign a name to the container --net=default Connect a container to a network --net-alias=[] Add network-scoped alias for the container --oom-kill-disable Disable OOM Killer --oom-score-adj Tune host's OOM preferences (-1000 to 1000) -P, --publish-all Publish all exposed ports to random ports -p, --publish=[] Publish a container's port(s) to the host --pid PID namespace to use --privileged Give extended privileges to this container --read-only Mount the container's root filesystem as read only --restart=no Restart policy to apply when a container exits --rm Automatically remove the container when it exits --security-opt=[] Security Options --shm-size Size of /dev/shm, default value is 64MB --sig-proxy=true Proxy received signals to the process --stop-signal=SIGTERM Signal to stop a container, SIGTERM by default -t, --tty Allocate a pseudo-TTY --tmpfs=[] Mount a tmpfs directory -u, --user Username or UID (format: <name|uid>[:<group|gid>]) --ulimit=[] Ulimit options --uts UTS namespace to use -v, --volume=[] Bind mount a volume --volume-driver Optional volume driver for the container --volumes-from=[] Mount volumes from the specified container(s) -w, --workdir Working directory inside the container