暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

docker笔记(4)- docker基本操作

运维笔记本 2019-11-19
731

简单使用容器,有下面的命令就够了。

1.启动docker服务

    systemctl start docker.service
    systemctl enable docker.service

    2. 查找镜像

      docker search nginx

      3. 拉取镜像

        docker pull centos  
        docker pull daocloud.io/library/nginx

        4. 查看镜像

          [root@localhost ~]# docker images
          REPOSITORY TAG IMAGE ID CREATED SIZE
          docker.io/hello-world latest f2a91732366c 5 weeks ago 1.848 kB
          daocloud.io/centos 7 196e0ce0c9fb 3 months ago 196.6 MB

          5. 运行一个带标签的镜像

            [root@localhost ~]# docker run -t -i --name mydocker daocloud.io/centos:7 bin/bash 
            [root@fb5b9e9601a1 ]# uname
            Linux
            [root@fb5b9e9601a1 ]# uname -a
            Linux fb5b9e9601a1 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux

            如果没有镜像会先从网络下载,然后再运行

              [root@localhost ~]# docker run --name mydocker -d daocloud.io/centos:7 bin/bash     # -d 放入后台执行
              8d71876eb3c78958c3f87a3b4d7023604d16ddca734e9f2f98cd0c29048eae7f

              6. 查看正在运行的容器 docker ps

                [root@localhost ~]# docker ps
                CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                edd796847a66 daocloud.io/ubuntu:14.04 "/bin/bash" 36 minutes ago Up 36 minutes ubuntu

                7. 查看所有容器

                  [root@localhost ~]# docker ps -a
                  CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                  fb02f9cedb52 hello-world "/hello" 41 minutes ago Exited (0) 41 minutes ago furious_williams
                  8d71876eb3c7 daocloud.io/centos:7 "/bin/bash" 51 minutes ago Exited (0) 51 minutes ago mydocker
                  fb5b9e9601a1 daocloud.io/centos:7 "/bin/bash" About an hour ago Exited (0) About an hour ago new_container
                  d028e1886484 hello-world "/hello" 18 hours ago Exited (0) 18 hours ago modest_bose

                  8. 停止所有容器

                    docker kill $(docker ps -a -q)

                    9. 删除已停止的容器

                      [root@localhost ~]# docker rm mydocker
                      mydocker
                      [root@localhost ~]# docker rm fb02f9cedb52
                      fb02f9cedb52
                      [root@localhost ~]# docker rm fb5b9e9601a1
                      fb5b9e9601a1
                      [root@localhost ~]# docker ps -a
                      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                      d028e1886484 hello-world "/hello" 19 hours ago Exited (0) 19 hours ago modest_bose

                      10. 删除所有已停止的容器

                        docker rm $(docker ps -a -q)

                        11. 进入容器 docker attach

                          [root@localhost ~]# docker run -itd --name mycentos daocloud.io/centos:7 
                          24dc0e0140a392168f2157189d0410754448540079ea751008f087a01b204d32
                          [root@localhost ~]#
                          [root@localhost ~]# docker ps -a
                          CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                          24dc0e0140a3 daocloud.io/centos:7 "/bin/bash" 5 seconds ago Up 4 seconds mycentos
                          d028e1886484 hello-world "/hello" 19 hours ago Exited (0) 19 hours ago modest_bose
                          [root@localhost ~]# docker attach mycentos
                          [root@24dc0e0140a3 ]#

                          12. 进入容器docker exec (推荐)

                            [root@localhost ~]# docker exec -it ubuntu bash
                            root@edd796847a66:/#
                            root@edd796847a66:/#
                            root@edd796847a66:/# pwd
                            /
                            root@edd796847a66:/# ls
                            a.txt bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
                            root@edd796847a66:/# whoami
                            root
                            root@edd796847a66:/# exit
                            exit

                            13. 宿主机和容器进行文件拷贝

                              [root@localhost ~]# docker attach ubuntu
                              root@edd796847a66:/#
                              root@edd796847a66:/# vi a.txt
                              root@edd796847a66:/#
                              root@edd796847a66:/# ls -l
                              total 24
                              -rw-r--r--. 1 root root 9 Dec 26 08:56 a.txt
                              drwxr-xr-x. 2 root root 4096 Dec 7 23:04 bin
                              drwxr-xr-x. 2 root root 6 Apr 10 2014 boot
                              root@edd796847a66:/#
                              root@edd796847a66:/# pwd
                              /
                              root@edd796847a66:/#
                              [root@localhost ~]#
                              [root@localhost ~]# docker cp ubuntu:/a.txt .
                              [root@localhost ~]# ls -l
                              total 1376
                              -rw-r--r--. 1 root root 9 Dec 26 16:56 a.txt
                              [root@localhost ~]# cat a.txt
                              asfasdf

                              14.容器重命名

                                [root@bogon ~]# docker ps
                                CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                                e8b3cfa6491e ubuntu "bash" 5 seconds ago Up 3 seconds suspicious_lewin
                                f0557d6ec248 ubuntu "bash" 18 minutes ago Up 18 minutes loving_noyce
                                [root@bogon ~]# docker rename suspicious_lewin test1
                                [root@bogon ~]# docker rename loving_noyce test2
                                [root@bogon ~]#
                                [root@bogon ~]#
                                [root@bogon ~]# docker ps
                                CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                                e8b3cfa6491e ubuntu "bash" 35 seconds ago Up 34 seconds test1
                                f0557d6ec248 ubuntu "bash" 19 minutes ago Up 19 minutes test2
                                [root@bogon ~]#

                                15.容器互联(link方式)

                                  # 创建一个mysql容器
                                  docker run -d -e MYSQL_ROOT_PASSWORD=password --name mysqldb1 mysql:5.6


                                  # 创建一个web容器
                                  docker run -d -p 8000:80 --name php1 --link mysqldb1:mysqldb abiosoft/caddy:php
                                  # mysqldb是mysqldb1 这个容器的一个别名
                                  # abiosoft/caddy:php 镜像

                                  --link name:alias,其中name是要链接的容器名称,alias是这个连接的名称,可以多次使用,php服务器可以连接多个数据库

                                    # 进入容器ping数据库容器
                                    [root@bogon ~]# docker exec -it php1 sh
                                    /srv #
                                    /srv # cat etc/hosts
                                    127.0.0.1 localhost
                                    ::1 localhost ip6-localhost ip6-loopback
                                    fe00::0 ip6-localnet
                                    ff00::0 ip6-mcastprefix
                                    ff02::1 ip6-allnodes
                                    ff02::2 ip6-allrouters
                                    172.17.0.4 mysqldb c3967506ef66 mysqldb1
                                    172.17.0.5 b344f7345d44
                                    /srv #
                                    /srv # ping mysqldb1
                                    PING mysqldb1 (172.17.0.4): 56 data bytes
                                    64 bytes from 172.17.0.4: seq=0 ttl=64 time=0.451 ms
                                    64 bytes from 172.17.0.4: seq=1 ttl=64 time=0.199 ms
                                    64 bytes from 172.17.0.4: seq=2 ttl=64 time=0.199 ms
                                    /srv #
                                    /srv # ping mysqldb
                                    PING mysqldb (172.17.0.4): 56 data bytes
                                    64 bytes from 172.17.0.4: seq=0 ttl=64 time=0.225 ms
                                    64 bytes from 172.17.0.4: seq=1 ttl=64 time=0.323 ms
                                    64 bytes from 172.17.0.4: seq=2 ttl=64 time=0.268 ms


                                    环境变量也发生了变化
                                    [root@bogon ~]# docker exec -it php1 env
                                    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                                    HOSTNAME=b344f7345d44
                                    TERM=xterm
                                    MYSQLDB_PORT=tcp://172.17.0.4:3306
                                    MYSQLDB_PORT_3306_TCP=tcp://172.17.0.4:3306
                                    MYSQLDB_PORT_3306_TCP_ADDR=172.17.0.4
                                    MYSQLDB_PORT_3306_TCP_PORT=3306
                                    MYSQLDB_PORT_3306_TCP_PROTO=tcp
                                    MYSQLDB_NAME=/php1/mysqldb
                                    MYSQLDB_ENV_MYSQL_ROOT_PASSWORD=password
                                    MYSQLDB_ENV_GOSU_VERSION=1.7
                                    MYSQLDB_ENV_MYSQL_MAJOR=5.6
                                    MYSQLDB_ENV_MYSQL_VERSION=5.6.38-1debian8
                                    HOME=/root

                                    16. 导出和导入镜像

                                    有时候不希望镜像发布到互联网,而且内网主机无法从仓库拉取镜像,那么可以使用下面的命令把镜像进行导出,然后再导入导出镜像到本地文件系统

                                      [root@host01 ~]# docker save haoxy/oracle > oracle19c.tar
                                      [root@host01 ~]# ls -lh
                                      total 6.3G
                                      -rw-------. 1 root root 1.3K Nov 13 09:12 anaconda-ks.cfg
                                      drwxr-xr-x. 4 root root   64 Nov 13 12:51 oracle
                                      -rw-r--r--. 1 root root 6.3G Nov 19 14:52 oracle19c.tar

                                      或者

                                        [root@host01 ~]# docker save -o oracle19c.tar haoxy/oracle

                                        从本地文件系统导入镜像

                                          docker load -i oracle19c.tar
                                          或者
                                          docker load < oracle19c.tar

                                          17.卷的使用(相当于U盘)

                                            # 运行一个容器  宿主机的/vol目录挂载到容器的/vol下(宿主机和容器的/vol不需要存在)
                                            [root@bogon ~]# docker run -itd -v vol:/vol --name test_ubuntu ubuntu sh
                                            accf11ec48c6ca2ec6fa4663a998cc5b59ab7ede2d08386a1895d7b269d2566b


                                            # 或者 不加挂载点默认容器中的挂载目录就是/vol


                                            docker run -itd -v /vol --name test_ubuntu ubuntu sh


                                            # 或者 指定 容器的挂载目录


                                            docker run -itd -v /vol:/data --name test_ubuntu ubuntu sh


                                            # 进入容器内部
                                            [root@bogon ~]# docker exec -it test_ubuntu sh
                                            # df
                                            Filesystem 1K-blocks Used Available Use% Mounted on
                                            overlay 17811456 4301616 13509840 25% /
                                            tmpfs 65536 0 65536 0% /dev
                                            tmpfs 499848 0 499848 0% /sys/fs/cgroup
                                            /dev/mapper/centos-root 17811456 4301616 13509840 25% /vol
                                            shm 65536 0 65536 0% /dev/shm
                                            tmpfs 499848 0 499848 0% /proc/scsi
                                            tmpfs 499848 0 499848 0% /sys/firmware
                                            # exit


                                            # 在宿主机的容器内创建文件
                                            [root@bogon ~]#
                                            [root@bogon ~]# df -h
                                            Filesystem Size Used Avail Use% Mounted on
                                            /dev/mapper/centos-root 17G 4.2G 13G 25% /
                                            devtmpfs 478M 0 478M 0% /dev
                                            tmpfs 489M 0 489M 0% /dev/shm
                                            tmpfs 489M 13M 476M 3% /run
                                            tmpfs 489M 0 489M 0% /sys/fs/cgroup
                                            /dev/sda1 1014M 125M 890M 13% /boot
                                            tmpfs 98M 0 98M 0% /run/user/0
                                            overlay 17G 4.2G 13G 25% /var/lib/docker/overlay2/6b2c6c0b2299aa68c36ce21d173b92ae5ddf427929e2271adbd7c8691a86411b/merged
                                            shm 64M 0 64M 0% /var/lib/docker/containers/accf11ec48c6ca2ec6fa4663a998cc5b59ab7ede2d08386a1895d7b269d2566b/shm
                                            [root@bogon ~]# cd /vol/
                                            [root@bogon vol]# ll
                                            total 0
                                            [root@bogon vol]# touch test_vol.txt
                                            [root@bogon vol]# echo "Hello World!!" >> test_vol.txt
                                            echo "Hello Worldtouch test_vol.txt" >> test_vol.txt
                                            [root@bogon vol]# cat test_vol.txt
                                            Hello Worldtouch test_vol.txt
                                            # 进入容器可见
                                            [root@bogon vol]# docker exec -it test_ubuntu sh
                                            # df
                                            Filesystem 1K-blocks Used Available Use% Mounted on
                                            overlay 17811456 4301460 13509996 25% /
                                            tmpfs 65536 0 65536 0% /dev
                                            tmpfs 499848 0 499848 0% /sys/fs/cgroup
                                            /dev/mapper/centos-root 17811456 4301460 13509996 25% /vol
                                            shm 65536 0 65536 0% /dev/shm
                                            tmpfs 499848 0 499848 0% /proc/scsi
                                            tmpfs 499848 0 499848 0% /sys/firmware
                                            # cd /vol
                                            # ls -l
                                            total 4
                                            -rw-r--r--. 1 root root 30 Jan 4 12:37 test_vol.txt
                                            # cat test*
                                            Hello Worldtouch test_vol.txt
                                            #
                                            # 创建个文件夹
                                            # mkdir vol
                                            # ls -l
                                            total 4
                                            -rw-r--r--. 1 root root 30 Jan 4 12:37 test_vol.txt
                                            drwxr-xr-x. 2 root root 6 Jan 4 12:37 vol
                                            # exit
                                            # 容器内在挂载点上创建的文件夹在宿主机上也能看到
                                            [root@bogon vol]# ll
                                            total 4
                                            -rw-r--r--. 1 root root 30 Jan 4 20:37 test_vol.txt
                                            drwxr-xr-x. 2 root root 6 Jan 4 20:37 vol
                                            [root@bogon vol]#


                                            # 删除容器,数据不会丢失


                                            [root@bogon vol]# docker kill test_ubuntu
                                            test_ubuntu
                                            [root@bogon vol]#
                                            [root@bogon vol]# docker ps -a
                                            CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                                            accf11ec48c6 ubuntu "sh" 20 minutes ago Exited (137) 6 seconds ago test_ubuntu
                                            [root@bogon vol]# docker rm test_ubuntu
                                            test_ubuntu
                                            [root@bogon vol]# docker ps -a
                                            CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
                                            [root@bogon vol]# ll
                                            total 4
                                            -rw-r--r--. 1 root root 30 Jan 4 20:37 test_vol.txt
                                            drwxr-xr-x. 2 root root 6 Jan 4 20:37 vol


                                            最后修改时间:2019-12-17 13:15:11
                                            文章转载自运维笔记本,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                            评论