docker学习二--安装及常用命令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yujin2010good/article/details/79292241
基本命令
1、yum安装docker,需要要root权限
yum install docker

2、启动docker

systemctl start docker.service

3、查看docker的状态
systemctl status docker.service 

4、添加开机启动项
systemctl enable doccker.service

5、获取centos镜像,下载的时间和网络有关,可能会时间比较长!
docker pull centos:latest

7、查看镜像(本地已经装载的镜像)
docker images centos

8、运行bash,来跑简单的测试案例!
docker run -i -t centos /bin/bash

9.检查安装是否成功 
$docker version 

10、验证docker是否安装成功

docker info


11、查看docker进程
systemctl |grep docker

12、关闭防火墙
systemctl disables firewall

13、如无网络环境需要安装iptables,这样可以映射端口
yum install iptables-services
systemctl enable iptables
systemctl start iptables

14、启动之后查看ip a,发现分配了一个docker0(网桥)
docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:cc:f6:67:93 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever
  
15、查看log(排错用)
tail -f /var/log/messages|grep docker

16、基础命令
docker search
docker pull java
docker images
docker run -it java java -version      (-it 交互模式)
docker run -it java ps
docker run -it java uname
docker run java ip addr
docker run java env
docker run里面的命令结束了,container就结束了。

docker run [options] IMAGE[:TAG][COMAND][ARG..]
决定容器的运行方式,前台执行还是后台执行
docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。
docker exec来进入到该容器,或者attach重新连接容器的回话。
进行交互操作(例如shell),那么我们必须用-i -t参数同容器进行数据交互
docker run时没有指定--name,那么deamon会自动生成一个随机字符串UUID
docker时有自动化的需求,你可以将containerID输出到制定的文件中(PIDfile):--cidfile=''
docker的容器是没有特权的,例如不能在容器中在启动另一个容器,这是因为默认情况下容器是不能访问任何其他设备的,但是通过“privileged”,容器就拥有了访问任何其他设备的权限。
====================================
实例
root@ip-10-249-100-205 ~]# yum install docker
Loaded plugins: fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base                                                                                                         | 3.6 kB  00:00:00     
epel                                                                                                         | 4.7 kB  00:00:00     
extras                                                                                                       | 3.4 kB  00:00:00     
updates                                                                                                      | 3.4 kB  00:00:00     
(1/5): epel/x86_64/updateinfo                                                                                | 880 kB  00:00:00     
(2/5): epel/x86_64/group_gz                                                                                  | 266 kB  00:00:00     
(3/5): extras/7/x86_64/primary_db                                                                            | 166 kB  00:00:00     
(4/5): epel/x86_64/primary_db                                                                                | 6.2 MB  00:00:00     
(5/5): updates/7/x86_64/primary_db                                                                           | 6.0 MB  00:00:01     
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 .................
[root@ip-10-249-100-205 ~]# systemctl status docker.service 
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: http://docs.docker.com
[root@ip-10-249-100-205 ~]# systemctl start docker.service
[root@ip-10-249-100-205 ~]# systemctl status docker.service 
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-02-08 16:01:18 CST; 2s ago
     Docs: http://docs.docker.com
 Main PID: 3066 (dockerd-current)
   CGroup: /system.slice/docker.service
           ├─3066 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=do...
           └─3073 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker...


Feb 08 16:01:17 ip-10-249-100-205 dockerd-current[3066]: time="2018-02-08T16:01:17.910795663+08:00" level=warning msg="mount...ound"
Feb 08 16:01:17 ip-10-249-100-205 dockerd-current[3066]: time="2018-02-08T16:01:17.911051246+08:00" level=info msg="Loading ...art."
Feb 08 16:01:17 ip-10-249-100-205 dockerd-current[3066]: time="2018-02-08T16:01:17.949714902+08:00" level=warning msg="Running mo...
Feb 08 16:01:17 ip-10-249-100-205 dockerd-current[3066]: time="2018-02-08T16:01:17.993634012+08:00" level=info msg="Firewall...alse"
Feb 08 16:01:18 ip-10-249-100-205 dockerd-current[3066]: time="2018-02-08T16:01:18.211764057+08:00" level=info msg="Default ...ress"
Feb 08 16:01:18 ip-10-249-100-205 dockerd-current[3066]: time="2018-02-08T16:01:18.346131674+08:00" level=info msg="Loading ...one."
Feb 08 16:01:18 ip-10-249-100-205 dockerd-current[3066]: time="2018-02-08T16:01:18.346247481+08:00" level=info msg="Daemon h...tion"
Feb 08 16:01:18 ip-10-249-100-205 dockerd-current[3066]: time="2018-02-08T16:01:18.346270371+08:00" level=info msg="Docker d....12.6
Feb 08 16:01:18 ip-10-249-100-205 dockerd-current[3066]: time="2018-02-08T16:01:18.353981494+08:00" level=info msg="API list...sock"
Feb 08 16:01:18 ip-10-249-100-205 systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.
[root@ip-10-249-100-205 ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@ip-10-249-100-205 ~]# systemctl |grep docker
  sys-devices-virtual-net-docker0.device                                                           loaded active plugged   /sys/devices/virtual/net/docker0
  sys-subsystem-net-devices-docker0.device                                                         loaded active plugged   /sys/subsystem/net/devices/docker0
● docker-storage-setup.service                                                                     loaded failed failed    Docker Storage Setup
  docker.service                                                                                   loaded active running   Docker Application Container Engine
  docker-cleanup.timer                                                                             loaded active waiting   Run docker-cleanup every hour
[root@ip-10-249-100-205 ~]# docker version 
Client:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
 Go version:      go1.8.3
 Git commit:      3e8e77d/1.12.6
 Built:           Tue Jan 30 09:17:00 2018
 OS/Arch:         linux/amd64


Server:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
 Go version:      go1.8.3
 Git commit:      3e8e77d/1.12.6
 Built:           Tue Jan 30 09:17:00 2018
 OS/Arch:         linux/amd64
[root@ip-10-249-100-205 ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.6
Storage Driver: devicemapper
 Pool Name: docker-253:0-201736978-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 11.8 MB
 Data Space Total: 107.4 GB
 Data Space Available: 47.4 GB
 Metadata Space Used: 581.6 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: true
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.107-RHEL7 (2015-10-14)
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
 Volume: local
 Network: null host bridge overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Security Options: seccomp
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 4
Total Memory: 7.64 GiB
Name: ip-10-249-100-205
ID: PR4W:F4PU:Q6CN:7WDF:KSRH:BA2D:HYQR:UMDB:OCWT:FE6B:LXKV:MWBK
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
 127.0.0.0/8
Registries: docker.io (secure)
[root@ip-10-249-100-205 ~]# 
[root@ip-10-249-100-205 ~]# tail -f /var/log/messages|grep docker
Feb  8 16:01:18 ip-10-249-100-205 nm-dispatcher: Dispatching action 'up' for docker0
Feb  8 16:01:18 ip-10-249-100-205 dockerd-current: time="2018-02-08T16:01:18.346131674+08:00" level=info msg="Loading containers: done."
Feb  8 16:01:18 ip-10-249-100-205 dockerd-current: time="2018-02-08T16:01:18.346247481+08:00" level=info msg="Daemon has completed initialization"
Feb  8 16:01:18 ip-10-249-100-205 dockerd-current: time="2018-02-08T16:01:18.346270371+08:00" level=info msg="Docker daemon" commit="3e8e77d/1.12.6" graphdriver=devicemapper version=1.12.6
Feb  8 16:01:18 ip-10-249-100-205 dockerd-current: time="2018-02-08T16:01:18.353981494+08:00" level=info msg="API listen on /var/run/docker.sock"
[root@ip-10-249-100-205 ~]# docker search java
INDEX       NAME                                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/node                                         Node.js is a JavaScript-based platform for...   5078      [OK]       
docker.io   docker.io/tomcat                                       Apache Tomcat is an open source implementa...   1713      [OK]       
docker.io   docker.io/java                                         Java is a concurrent, class-based, and obj...   1633      [OK]       
docker.io   docker.io/openjdk                                      OpenJDK is an open-source implementation o...   822       [OK]       
docker.io   docker.io/ghost                                        Ghost is a free and open source blogging p...   704       [OK]       
docker.io   docker.io/anapsix/alpine-java                          Oracle Java 8 (and 7) with GLIBC 2.23 over...   280                  [OK]
docker.io   docker.io/jetty                                        Jetty provides a Web server and javax.serv...   225       [OK]       
docker.io   docker.io/isuper/java-oracle                           This repository contains all java releases...   55                   [OK]
docker.io   docker.io/lwieske/java-8                               Oracle Java 8 Container - Full + Slim - Ba...   37                   [OK]
docker.io   docker.io/groovy                                       Apache Groovy is a multi-faceted language ...   27        [OK]       
docker.io   docker.io/cloudbees/jnlp-slave-with-java-build-tools   Extends cloudbees/java-build-tools docker ...   15                   [OK]
docker.io   docker.io/zabbix/zabbix-java-gateway                   Zabbix Java Gateway                             9                    [OK]
docker.io   docker.io/blacklabelops/java                           Oracle Java Base Images. Alpine and CentOS...   8                    [OK]
docker.io   docker.io/frekele/java                                 docker run --rm --name java frekele/java        7                    [OK]
docker.io   docker.io/1science/java                                Java Docker images based on Alpine Linux        6                    [OK]
docker.io   docker.io/davidcaste/alpine-java-unlimited-jce         Oracle Java 8 (and 7) with GLIBC 2.21 over...   6                    [OK]
docker.io   docker.io/fabric8/s2i-java                             S2I Builder Image for plain Java applications   3                    
docker.io   docker.io/dwolla/java                                  Dwolla’s custom Java image                      1                    [OK]
docker.io   docker.io/appuio/s2i-gradle-java                       S2I Builder with Gradle and Java                0                    [OK]
docker.io   docker.io/appuio/s2i-maven-java                        S2I Builder with Maven and Java                 0                    [OK]
docker.io   docker.io/appuio/s2i-play-java                         Simple S2I Builder Image for Play and Java      0                    [OK]
docker.io   docker.io/cfje/java-buildpack                          Java Buildpack CI Image                         0                    
docker.io   docker.io/cfje/java-test-applications                  Java Test Applications CI Image                 0                    
docker.io   docker.io/pcfcodesigning/code-signing-java-phantom     Base Java image with PhantomJS 2.1.1            0                    
docker.io   docker.io/thingswise/java-docker                       Java + dcd                                      0                    [OK]
[root@ip-10-249-100-205 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/java      latest              d23bdf5b1b1b        12 months ago       643.1 MB
[root@ip-10-249-100-205 ~]# 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)
[root@ip-10-249-100-205 ~]# docker run -it java ps
  PID TTY          TIME CMD
    1 ?        00:00:00 ps
[root@ip-10-249-100-205 ~]# docker run -it java uname
Linux
[root@ip-10-249-100-205 ~]# docker run java ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
10: eth0@if11: <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
    inet6 fe80::42:acff:fe11:2/64 scope link tentative 
       valid_lft forever preferred_lft forever
[root@ip-10-249-100-205 ~]# docker run java env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=0d4a117ad942
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
[root@ip-10-249-100-205 ~]#
============================================
17、容器生命周期相关指令
docker create/start/stop/pause/unpause
create只是创建一个容器不启动
docker create -it --name=myjava java java -version
docker start myjava

下载一个mysql镜像,并设置好用户名密码
docker create --name mysqlsrv1 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql
docker start mysqlsrv1
docker ps
安装一个客户端,可以登录

docker exec -it mysqlsrv1 /bin/bash 进入容器交互模式
root@1549052941a1:/# cat /var/log/mysql/error.log 
root@1549052941a1:/# env
HOSTNAME=1549052941a1
MYSQL_VERSION=5.7.21-1debian8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
HOME=/root
MYSQL_MAJOR=5.7
GOSU_VERSION=1.7
MYSQL_ROOT_PASSWORD=123456

_=/usr/bin/env

======================

[root@ip-10-249-100-205 ~]# docker create -it --name=myjava java java -version
195b0223db4ae363ae23be392d8498266a3c635b8c0bba7a784c7a3b4c93ad15
[root@ip-10-249-100-205 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
195b0223db4a        java                "java -version"     6 seconds ago       Created                                        myjava
0d4a117ad942        java                "env"               2 minutes ago       Exited (0) 2 minutes ago                       lonely_boyd
f9770dd1783e        java                "ip addr"           2 minutes ago       Exited (0) 2 minutes ago                       focused_volhard
15af6702edf0        java                "uname"             2 minutes ago       Exited (0) 2 minutes ago                       prickly_curie
6a80c6413d52        java                "ps"                2 minutes ago       Exited (0) 2 minutes ago                       distracted_noether
5dead85d580b        java                "java -version"     3 minutes ago       Exited (0) 3 minutes ago                       fervent_northcutt
[root@ip-10-249-100-205 ~]# 
[root@ip-10-249-100-205 ~]# docker start myjava
myjava
[root@ip-10-249-100-205 ~]# docker ps  前台执行完,后台就没有了
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@ip-10-249-100-205 ~]# 
[root@ip-10-249-100-205 ~]# docker create --name mysqlsrv1 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql
Unable to find image 'mysql:latest' locally
Trying to pull repository docker.io/library/mysql ... 
latest: Pulling from docker.io/library/mysql
f49cf87b52c1: Pull complete 
78032de49d65: Pull complete 
837546b20bc4: Pull complete 
9b8316af6cc6: Pull complete 
1056cf29b9f1: Pull complete 
86f3913b029a: Pull complete 
f98eea8321ca: Pull complete 
3a8e3ebdeaf5: Pull complete 
4be06ac1c51e: Pull complete 
920c7ffb7747: Pull complete 
Digest: sha256:7cdb08f30a54d109ddded59525937592cb6852ff635a546626a8960d9ec34c30
1549052941a1024c0c1933b911866d46272d2395f385ff7f4e0bfc8b0a306848
[root@ip-10-249-100-205 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@ip-10-249-100-205 ~]# docker start mysqlsrv1
mysqlsrv1
[root@ip-10-249-100-205 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
1549052941a1        mysql               "docker-entrypoint.sh"   2 minutes ago       Up 1 seconds        0.0.0.0:3306->3306/tcp   mysqlsrv1
[root@ip-10-249-100-205 ~]# netstat -tlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      892/sshd            
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN      1858/master         
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      4649/docker-proxy-c 
tcp6       0      0 [::]:http               [::]:*                  LISTEN      23859/java          
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      892/sshd            
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN      1858/master         
tcp6       0      0 [::]:19295              [::]:*                  LISTEN      23859/java          
tcp6       0      0 localhost:10501         [::]:*                  LISTEN      23859/java 
[root@ip-10-249-100-205 ~]# yum install mysql
[root@ip-10-249-100-205 ~]# mysql -uroot -p123456 -h10.249.100.205
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> 

18、进程管理
在Docker容器退出时,默认容器内部的文件系统仍然被保留,以方便调试并保留用户数据。
但是,对于foreground容器,由于其只是在开发调试过程中短期运行,其用户数据并无保留的必要,因而可以在容器启动时设置--rm选项,这样在容器退出时就能够自动清理容器内部的文件系统。
[root@ip-10-249-100-205 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
1549052941a1        mysql               "docker-entrypoint.sh"   23 minutes ago      Up 20 minutes       0.0.0.0:3306->3306/tcp   mysqlsrv1
[root@ip-10-249-100-205 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
1549052941a1        mysql               "docker-entrypoint.sh"   23 minutes ago      Up 20 minutes               0.0.0.0:3306->3306/tcp   mysqlsrv1
195b0223db4a        java                "java -version"          34 minutes ago      Exited (0) 33 minutes ago                            myjava
0d4a117ad942        java                "env"                    36 minutes ago      Exited (0) 36 minutes ago                            lonely_boyd
f9770dd1783e        java                "ip addr"                36 minutes ago      Exited (0) 36 minutes ago                            focused_volhard
15af6702edf0        java                "uname"                  37 minutes ago      Exited (0) 37 minutes ago                            prickly_curie
6a80c6413d52        java                "ps"                     37 minutes ago      Exited (0) 37 minutes ago                            distracted_noether
5dead85d580b        java                "java -version"          37 minutes ago      Exited (0) 37 minutes ago                            fervent_northcutt
以上发现运行的docker和运行过的docker都存在,会暂用磁盘空间
需要加上run -rm
docker run --rm java ps
docker run --rm -it java ps
显然,--rm选项不能与-d同时使用,即只能自动清理foreground容器,不能自动清理detached容器
注意,--rm选项也会清理容器的匿名data volumes。
所以,执行docker run命令带--rm命令选项,等价于在容器退出后,执行docker rm -v。

猜你喜欢

转载自blog.csdn.net/yujin2010good/article/details/79292241
今日推荐