Docker学习笔记_00 Docker常用命令

命令示例:

docker search oracle
#---------------------------------------------------------------------------------------------------------
NAME                                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
oraclelinux                         Oracle Linux is an open-source operating s...   404                 [OK]                
frolvlad/alpine-oraclejdk8          The smallest Docker image with OracleJDK 8...   270                                     [OK]
alexeiled/docker-oracle-xe-11g      This is a working (hopefully) Oracle XE 11...   223                                     [OK]
sath89/oracle-12c                   Oracle Standard Edition 12c Release 1 with...   222                                     [OK]
sath89/oracle-xe-11g                Oracle xe 11g with database files mount su...   136                                     [OK]
isuper/java-oracle                  This repository contains all java releases...   55                                      [OK]
jaspeen/oracle-11g                  Docker image for Oracle 11g database            55                                      [OK]
oracle/glassfish                    GlassFish Java EE Application Server on Or...   31                                      [OK]
oracle/openjdk                      Docker images containing OpenJDK Oracle Linux   26                                      [OK]
airdock/oracle-jdk                  Docker Image for Oracle Java SDK (8 and 7)...   23                                      [OK]
wnameless/oracle-xe-11g             Dockerfile of Oracle Database Express Edit...   22                                      [OK]
ingensi/oracle-jdk                  Official Oracle JDK installed on centos.        21                                      [OK]
cogniteev/oracle-java               Oracle JDK 6, 7, 8, and 9 based on Ubuntu ...   20                                      [OK]
n3ziniuka5/ubuntu-oracle-jdk        Ubuntu with Oracle JDK. Check tags for ver...   14                                      [OK]
oracle/nosql                        Oracle NoSQL on a Docker Image with Oracle...   13                                      [OK]
sgrio/java-oracle                   Docker images of Java 7/8 provided by Orac...   7                                       [OK]
andreptb/oracle-java                Debian Jessie based image with Oracle JDK ...   7                                       [OK]
openweb/oracle-tomcat               A fork off of Official tomcat image with O...   7                                       [OK]
flurdy/oracle-java7                 Base image containing Oracle's Java 7 JDK       5                                       [OK]
martinseeler/oracle-server-jre      Oracle's Java 8 as 61 MB Docker container.      4                                       [OK]
davidcaste/debian-oracle-java       Oracle Java 8 (and 7) over Debian Jessie        3                                       [OK]
teradatalabs/centos6-java8-oracle   Docker image of CentOS 6 with Oracle JDK 8...   3                                       
spansari/nodejs-oracledb            nodejs with oracledb installed globally on...   1                                       
publicisworldwide/oracle-core       This is the core image based on Oracle Lin...   1                                       [OK]
sigma/nimbus-lock-oracle                                                            0                                       [OK]
#---------------------------------------------------------------------------------------------------------

也可以去https://hub.docker.com/ 里去搜索,更直观,以及dockfile等内容


docker pull

pull镜像,命令示例:

docker pull java
#---------------------------------------------------------------------------------------------------------
Using default tag: latest
latest: Pulling from library/java
5040bd298390: Pull complete 
fce5728aad85: Pull complete 
76610ec20bf5: Pull complete 
60170fec2151: Pull complete 
e98f73de8f0d: Pull complete 
11f7af24ed9c: Pull complete 
49e2d6393f32: Downloading [============================>                      ]  72.97MB/130.1MB   # 分层Downloading、Extracting images
bb9cdec9c7f3: Verifying Checksum

Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:latest      # 完成
#---------------------------------------------------------------------------------------------------------

# sgrio/java-oracle latest: pointed to sgrio/java-oracle:server_jre_9
docker pull sgrio/java-oracle

# pull java 8 image用以下命令
docker pull sgrio/java-oracle:server_jre_8

docker images

查看本地已经装载的镜像,命令示例:

docker images
#---------------------------------------------------------------------------------------------------------
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
sgrio/java-oracle   server_jre_8        6d10e204fc36        2 weeks ago         292MB
hello-world         latest              f2a91732366c        3 weeks ago         1.85kB
ubuntu              latest              20c44cd7596f        3 weeks ago         123MB
lwieske/java-8      jdk-8u131           0ff57dff9137        5 months ago        590MB
java                latest              d23bdf5b1b1b        11 months ago       643MB
#---------------------------------------------------------------------------------------------------------

docker run

docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG…]

  • docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。
  • docker exec来进入到到该容器中,或者attach重新连接容器的会话
  • 进行交互式操作(例如Shell脚本),须使用-i -t参数同容器进行数据交互
  • docker run时没有指定–name,那么deamon会自动生成一个随机字符串UUID
  • Docker时有自动化的需求,可以将containerID输出到指定的文件中(PIDfile): –cidfile=””
  • Docker的容器是没有特权的,例如不能在容器中再启动一个容器。这是因为默认情况下容器是不能访问任何其它设备的。但是通过”privileged”,容器就拥有了访问任何其它设备的权限。

命令示例:

docker run -it java java -version
#---------------------------------------------------------------------------------------------------------
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2~bpo8+1-b14)
OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)
#---------------------------------------------------------------------------------------------------------

docker run -it sgrio/java-oracle:server_jre_8 java -version
#---------------------------------------------------------------------------------------------------------
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
#---------------------------------------------------------------------------------------------------------

docker run -it java uname
#---------------------------------------------------------------------------------------------------------
Linux
#---------------------------------------------------------------------------------------------------------

docker run -it java ps
#---------------------------------------------------------------------------------------------------------
  PID TTY          TIME CMD
    1 pts/0    00:00:00 ps
#---------------------------------------------------------------------------------------------------------

docker run -it java ip addr
#---------------------------------------------------------------------------------------------------------
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
52: eth0@if53: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever    
#---------------------------------------------------------------------------------------------------------


docker run -it java ip addr
#---------------------------------------------------------------------------------------------------------
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
58: eth0@if59: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever
#---------------------------------------------------------------------------------------------------------       

docker run -it java env
#---------------------------------------------------------------------------------------------------------
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=126a22eb2c97
TERM=xterm
LANG=C.UTF-8
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
JAVA_VERSION=8u111
JAVA_DEBIAN_VERSION=8u111-b14-2~bpo8+1
CA_CERTIFICATES_JAVA_VERSION=20140324
HOME=/root
#---------------------------------------------------------------------------------------------------------

# docker run 里面的命令结束了,container就结束了

批量停止所有运行中的容器

tee stop_all_container.sh <<-'EOF'
sudo docker ps | grep -v CONTAINER | awk '{print $1}'| xargs sudo docker stop
EOF

chmod +x stop_all_container.sh

批量删除容器/镜像

# 指量删除容器脚本
tee rm_all_container.sh <<-'EOF'
sudo docker ps -a | grep -v CONTAINER | awk '{print $1}'| xargs sudo docker rm
EOF

chmod +x rm_all_container.sh

# 按镜像名批量删除
docker images | grep 10.240.4.159/example/hkweb | grep -v REPOSITORY | awk '{print $1,$2}' OFS=":" | xargs docker rmi

# 按镜像ID批量删除
docker images | grep -v vmware | awk '{print $3}'| xargs docker rmi

docker images | grep -v vmware | grep -v REPOSITORY | awk '{print $1,$2}' OFS=":"| xargs docker rmi

# 若有删除不掉的容器,可以使用以下命令查看关联
docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=f67fa10b4180)
文章目录
  1. 1. docker search
  2. 2. docker pull
  3. 3. docker images
  4. 4. docker run
  5. 5. 批量停止所有运行中的容器
  6. 6. 批量删除容器/镜像