上一章節,簡單介紹了在
CentOS
下的Docker
的安裝過程,以及運行了一個官方提供的Hello,World
鏡像運行了第一個Docker
。就像上一章中,驗證Docker
是否安裝成功,咱們執行的是docker info
命令。運行鏡像時,執行的是docker run imagesName
。因此學習一個工具,主要仍是學習如何利用自己工具提供的一些命令進行相應的操做。因此本章節,主要來介紹下Docker
的經常使用命令。html
docker提供了查看其全部支持的命令清單,只需運行nginx
docker
或redis
docker help
從提示中能夠看出,Docker
命令是不少的,能夠管理Docker
,有操做鏡像
、容器
等等。對於經常使用的可能就是操做鏡像
和容器
了。因此這裏主要列舉下對於鏡像
、容器
經常使用的一些命令操做,同時也會列舉下一些其餘經常使用的命令。對於某個命令想知道其詳細的參數選項時,可依照此模式進行查看。docker
docker COMMAND --help
如,查看run
的詳細信息shell
docker run --help
列舉的run
的詳細選項及其用法說明(真的不少呀!)json
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container Options: --add-host list Add a custom host-to-IP mapping (host:ip) -a, --attach list Attach to STDIN, STDOUT or STDERR --blkio-weight uint16 Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) --blkio-weight-device list Block IO weight (relative device weight) (default []) --cap-add list Add Linux capabilities --cap-drop list Drop Linux capabilities --cgroup-parent string Optional parent cgroup for the container --cidfile string Write the container ID to the file --cpu-period int Limit CPU CFS (Completely Fair Scheduler) period --cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota --cpu-rt-period int Limit CPU real-time period in microseconds --cpu-rt-runtime int Limit CPU real-time runtime in microseconds -c, --cpu-shares int CPU shares (relative weight) --cpus decimal Number of CPUs --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) --cpuset-mems string MEMs in which to allow execution (0-3, 0,1) -d, --detach Run container in background and print container ID --detach-keys string Override the key sequence for detaching a container --device list Add a host device to the container --device-cgroup-rule list Add a rule to the cgroup allowed devices list --device-read-bps list Limit read rate (bytes per second) from a device (default []) --device-read-iops list Limit read rate (IO per second) from a device (default []) --device-write-bps list Limit write rate (bytes per second) to a device (default []) --device-write-iops list Limit write rate (IO per second) to a device (default []) --disable-content-trust Skip image verification (default true) --dns list Set custom DNS servers --dns-option list Set DNS options --dns-search list Set custom DNS search domains --entrypoint string Overwrite the default ENTRYPOINT of the image -e, --env list Set environment variables --env-file list Read in a file of environment variables --expose list Expose a port or a range of ports --group-add list Add additional groups to join --health-cmd string Command to run to check health --health-interval duration Time between running the check (ms|s|m|h) (default 0s) --health-retries int Consecutive failures needed to report unhealthy --health-start-period duration Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s) --health-timeout duration Maximum time to allow one check to run (ms|s|m|h) (default 0s) --help Print usage -h, --hostname string Container host name --init Run an init inside the container that forwards signals and reaps processes -i, --interactive Keep STDIN open even if not attached --ip string IPv4 address (e.g., 172.30.100.104) --ip6 string IPv6 address (e.g., 2001:db8::33) --ipc string IPC mode to use --isolation string Container isolation technology --kernel-memory bytes Kernel memory limit -l, --label list Set meta data on a container --label-file list Read in a line delimited file of labels --link list Add link to another container --link-local-ip list Container IPv4/IPv6 link-local addresses --log-driver string Logging driver for the container --log-opt list Log driver options --mac-address string Container MAC address (e.g., 92:d0:c6:0a:29:33) -m, --memory bytes Memory limit --memory-reservation bytes Memory soft limit --memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap --memory-swappiness int Tune container memory swappiness (0 to 100) (default -1) --mount mount Attach a filesystem mount to the container --name string Assign a name to the container --network string Connect a container to a network (default "default") --network-alias list Add network-scoped alias for the container --no-healthcheck Disable any container-specified HEALTHCHECK --oom-kill-disable Disable OOM Killer --oom-score-adj int Tune host's OOM preferences (-1000 to 1000) --pid string PID namespace to use --pids-limit int Tune container pids limit (set -1 for unlimited) --privileged Give extended privileges to this container -p, --publish list Publish a container's port(s) to the host -P, --publish-all Publish all exposed ports to random ports --read-only Mount the container's root filesystem as read only --restart string Restart policy to apply when a container exits (default "no") --rm Automatically remove the container when it exits --runtime string Runtime to use for this container --security-opt list Security Options --shm-size bytes Size of /dev/shm --sig-proxy Proxy received signals to the process (default true) --stop-signal string Signal to stop a container (default "SIGTERM") --stop-timeout int Timeout (in seconds) to stop a container --storage-opt list Storage driver options for the container --sysctl map Sysctl options (default map[]) --tmpfs list Mount a tmpfs directory -t, --tty Allocate a pseudo-TTY --ulimit ulimit Ulimit options (default []) -u, --user string Username or UID (format: <name|uid>[:<group|gid>]) --userns string User namespace to use --uts string UTS namespace to use -v, --volume list Bind mount a volume --volume-driver string Optional volume driver for the container --volumes-from list Mount volumes from the specified container(s) -w, --workdir string Working directory inside the container
search
命令。docker search jdk
pull
命令。用法:docker pull [OPTIONS] NAME[:TAG|@DIGEST] docker pull jboss/base-jdk:8
images
命令docker images jboss/base-jdk:8
可查看全部已下載的鏡像:服務器
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 2cb0d9787c4d 2 weeks ago 1.85kB
tag
命令# 好比,想建立拷貝一個鏡像`hello-wrold`,同時命名爲`lqdev.cn/hello-world:1` docker tag hello-world lqdev.cn/hello-world:1
此時查看鏡像列表,就會發現多了一個鏡像了:網絡
[root@xx ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 2cb0d9787c4d 2 weeks ago 1.85kB lqdev.cn/hello-world 1 2cb0d9787c4d 2 weeks ago 1.85kB
build
命令(對於Dockerfile,在下一章節會詳細進行說明的,這裏就不過多介紹了。)# 使用當前目錄下的Dockerfile,同時鏡像命名(`-t`,指tag)爲:lqdev.cn/first:1 docker build -t lqdev.cn/first:1
rmi
命令(這裏須要注意,當鏡像有容器在使用時,是沒法刪除的,須要先刪除容器再來刪除鏡像。)docker rmi jboss/base-jdk:8 或者根據images_id刪除 docker rmi b123d943e165
run
命令。docker run hello-world
運行命令是最經常使用的命令了,這裏其經常使用選項進行列舉說明下app
-a stdin: 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項; -d: 後臺運行容器,並返回容器ID; -i: 以交互模式運行容器,一般與 -t 同時使用; -p: 端口映射,格式爲:主機(宿主)端口:容器端口 -t: 爲容器從新分配一個僞輸入終端,一般與 -i 同時使用; --name="nginx-lb": 爲容器指定一個名稱; --dns 8.8.8.8: 指定容器使用的DNS服務器,默認和宿主一致; --dns-search example.com: 指定容器DNS搜索域名,默認和宿主一致; -h "mars": 指定容器的hostname; -e username="ritchie": 設置環境變量; --env-file=[]: 從指定文件讀入環境變量; --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行; -m :設置容器使用內存最大值; --net="bridge": 指定容器的網絡鏈接類型,支持 bridge/host/none/container: 四種類型; --link=[]: 添加連接到另外一個容器; --expose=[]: 開放一個端口或一組端口;
好比,咱們後臺運行redis
實例,同時指定其宿主端口爲16379
。dom
docker run -p 16379:6379 -d redis:3.2
ps
命令,能夠列舉出當前運行的容器,須要全部容器時,加入-a
選項便可。docker ps -a
此時,可看見全部的容器信息:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ba5b7475423 lqdev.cn/hello-world:1 "/hello" 7 seconds ago Exited (0) 6 seconds ago distracted_goldwasser 02f1c3cc2a31 hello-world "/hello" 20 hours ago Exited (0) 20 hours ago vibrant_ritchie
stop
命令。# docker stop 容器id docker stop 3ba5b7475423
start
命令。# docker start 容器id docker start 3ba5b7475423
restart
命令。# docker restart 容器id docker restart 3ba5b7475423
kill
命令。# docker kill 容器id docker kill 3ba5b7475423
rm
命令(只能刪除已經中止的容器,若須要刪除正在運行的容器,可加入-f
參數選項)# docker rm 容器ID docker rm 3ba5b7475423
redis
的客戶端redis-cli
時,這個時候就須要進入容器了。進入容器有不少中,這裏就exec
進行講解下,其餘的好比attach
不熟悉,你們可自行搜索下。# docker exec -it 容器ID 參數 docker exec -it 3ba5b7475423 redis-cli 參數說明: -d:分離模式: 在後臺運行 -i:即便沒有附加也保持STDIN 打開 -t:分配一個僞終端
此時就能夠看見已經進入到客戶端了,進行相應操做了。
[root@xxx ~]# docker exec -it 3ba5b7475423 redis-cli 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379> set name okong OK 127.0.0.1:6379> keys * 1) "name" 127.0.0.1:6379> get name "okong" 127.0.0.1:6379>
# docker commit [options] 容器id name:tag docker commit 3ba5b7475423 lqdev.cn/redis:1 參數說明: -a:提交的鏡像做者 -c:使用Dockerfile指令來建立鏡像 -m:提交時的說明文字 -p:在commit時,將容器暫停
logs
命令。# docker logs [OPTIONS] 容器ID docker logs -f 3ba5b7475423 參數說明: -f : 跟蹤日誌輸出 --since :顯示某個開始時間的全部日誌 -t : 顯示時間戳 --tail :僅列出最新N條容器日誌
cp
命令。簡單來講就是:
# docker cp 容器名:要拷貝的文件在容器裏面的路徑 要拷貝到宿主機的相應路徑 # docker cp 要拷貝的文件路徑 容器名:要拷貝到容器裏面對應的路徑 docker cp 3ba5b7475423:/opt/a.json /opt docker cp /opt/a.json 3ba5b7475423:/opt
本章節主要是介紹了下
Docker
的一些經常使用命令的說明。文中未列舉的命令,你們可直接使用命令docker command --help
查看其命令說明或者自行谷歌下。熟悉了這些經常使用命令後,下一章節,主要會介紹下Dockerfile
文件的語法及簡單示例。
若文中有錯誤或者遺漏之處,還望指出,共同進步!
499452441
lqdevOps
我的博客:http://blog.lqdev.cn