美文网首页
Docker基本命令操作

Docker基本命令操作

作者: 小月半会飞 | 来源:发表于2019-03-15 14:16 被阅读0次

    镜和容器的对应关系:
    镜——类
    容器——对象

    一、镜像操作

    1、查看有哪些镜像下载下来的

    docker images
    

    2、搜索某一个镜像

    docker search mysql
    

    3、下载镜像

    自动下载最新版本

    docker pull mysql
    

    自行选择版本
    在docker官网去搜索需要下载的工具,以及版本号(在tags部分)
    官网地址:https://hub.docker.com

    docker pull tomcat:8.5-alpine
    

    4、删除镜像

    根据IMAGE ID也就是镜像id删除
    例:
    查询镜像

    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mysql               latest              91dadee7afee        10 days ago         477MB
    

    删除某一个镜像

    [root@localhost ~]# docker rmi 91dadee7afee
    Untagged: mysql:latest
    Untagged: mysql@sha256:4589ba2850b93d103e60011fe528fc56230516c1efb4d3494c33ff499505356f
    Deleted: sha256:91dadee7afeebe274c51104d572ab6a2dc0ae97473f71afc57fbfd48c0ceb8aa
    Deleted: sha256:82eee4082d8cbbe961ff33564cc655d1b9b4c73d118e9859bfec26a2c5e0714c
    Deleted: sha256:cd9489e5896812af2e519e18470b6efe6ad19e556cefe38df1d9bab7706bdc94
    Deleted: sha256:a7205b2f8740073d175dd4ee3c69d1fe44f2d31529fb947e6ded8899f0f2b52c
    Deleted: sha256:f890db1a51f76670d9752256c6a897af077e608dc83711e756ddba7f22e9150b
    Deleted: sha256:af3357c7a40759832f8e1188d7e73e5e1c2dfb503397ee2b8f61133bfce13b5b
    Deleted: sha256:6780729a47b08db93437f74d430a865d4d0728707d134f540217a9ba773c4376
    Deleted: sha256:1248c21c6b437a9b7528c6a61acc40589b9b373094a609552c91e719cb40df21
    Deleted: sha256:4a9328c2c324474dcb8086184fca8490e7ecf49108df79544dd4dcf3418249ed
    Deleted: sha256:8fb2b4cf6c7ae35084bc310b1895323488db795d86ba52dade834a0a0c1ccd7d
    Deleted: sha256:a807a227b65063853920c7cd77eef1dbd4c79971f5774964fb2c8de13bbb3713
    Deleted: sha256:f1e2c1fc3f1bd72b3bba73afc27a034da08037995fd914a3447b716b01830c17
    Deleted: sha256:6744ca1b11903f4db4d5e26145f6dd20f9a6d321a7f725f1a0a7a45a4174c579
    
    

    确认是否删除成功

    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    

    二、容器操作

    1、查看正在运行的容器

    docker ps
    

    查看所有容器,包括没有启动的

    docker ps -a
    

    2、启动容器

    1)、普通启动

    无法与Linux通信,没有做端口映射

    docker run --name myTomcat -d tomcat:8.5-alpine
    

    返回值是容器的Id

    b3d1907c8c3d085ed3556ca89824d67e2459f6990a00cd78794e9f864d258500
    
    

    --name:自定义容器名,不指定时,docker 会自动生成一个名称
    -d:表示后台运行容器
    image-name:指定运行的镜像名称以及 Tag

    2)、端口映射启动

    docker run --name myTomcat -d -p 8090:8080 tomcat:8.5-alpine
    

    使用命令:docker run --name container-name:tag -d -p 服务器端口:Docker 端口 image-name
    --name:自定义容器名,不指定时,docker 会自动生成一个名称
    -d:表示后台运行容器
    image-name:指定运行的镜像名称以及 Tag
    -p 表示进行服务器与 Docker 容器的端口映射,默认情况下容器中镜像占用的端口是 Docker 容器中的端口与外界是隔绝的,必须进行端口映射才能访问

    3、停止容器

    根据容器的id来停止,使用命令
    docker stop 容器id
    代码如下:

    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    b3d1907c8c3d        tomcat:8.5-alpine   "catalina.sh run"   5 minutes ago       Up 5 minutes        8080/tcp            myTomcat
    [root@localhost ~]# docker stop b3d1907c8c3d 
    b3d1907c8c3d
    

    4、重启容器

    docker start b3d1907c8c3d
    

    5、删除容器

    需要先停止容器,再删除容器

    docker rm b3d1907c8c3d
    

    6、查看日志

    直接用容器名字查看

    docker logs myTomcat
    

    三、运行mysql

    1、下载mysql

    docker pull mysql:5.5
    

    2、运行mysql镜像

    错误运行:

    docker run --name mysql01 -d mysql
    

    正确运行:
    需要用-e指定用户密码
    并且需要端口映射

    docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 -d mysql:5.5
    

    四、运行centos

    1、下载centos

    docker pull centos
    

    2、启动centos

    docker run -it --name mycentos2 -d centos
    

    3、进入centos

    docker exec -it mycentos2 /bin/bash
    

    4、下载可以使用ifconfig命令的插件

    yum install -y net-tools 
    

    5、运行ifconfig

    [root@77bfb721d749 /]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255
            ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)
            RX packets 6254  bytes 9896082 (9.4 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 3475  bytes 191147 (186.6 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    

    6、退出centos

    exit
    

    五、镜像定制

    1、手动定制

    1.先下载centos镜像

    如果有该镜像乐意跳过此步

    [root@docker ~]# docker pull centos
    
    2.启动容器并进行配置

    启动容器,

    [root@docker ~]# docker run -it -d --name test-centos1 centos `
    

    命令注释:-it : 进行交互式操作

    -d : 等同于 -d=true,容器将会在后台运行,不然执行一次命令后,退出后,便是exit状态了。

    --name : 容器启动后的名字,默认不指定,将会随机产生一个名字。或者使用 -name="containers_name"

    centos:使用的镜像名称

    进入容器,安装ssh server,以及配置开机启动

    [root@docker ~]# docker exec -it test-centos1 /bin/bash
    [root@d72250ecaa5e /]# ifconfig
    bash: ifconfig: command not found
    

    *注:命令最后参数 /bin/bash: 指进入容器时执行的命令(command)

    我们检查了下容器,暂时安装以下必用的软件吧 net-tools,openssh-server

    [root@d72250ecaa5e /]# yum install openssh-server net-tools -y
    

    创建ssh 所需的目录,并在根目录创建sshd 启动脚本

    [root@d72250ecaa5e /]# mkdir -pv /var/run/sshd mkdir: created directory '/var/run/sshd'  [root@d72250ecaa5e /]# cat /auto_sshd.sh #!/bin/bash /usr/sbin/sshd -D
    [root@d72250ecaa5e /]# chmod +x /auto_sshd.sh 
    

    修改容器内root 的账户密码
    可以自己随便设一个密码,一定要记住

    [root@d72250ecaa5e /]# echo "root:iloveworld" | chpasswd
    

    生成ssh 主机dsa 密钥(不然ssh 该容器时,会出现错误。)
    遇到输入Enter same passphrase again:时候,直接回车跳过

    [root@d72250ecaa5e /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
    [root@d72250ecaa5e /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
    

    我们加一个history记录的时间功能吧,这样方便后期查看

    echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile
    

    OK,配置基本完毕咯。清理命令历史纪录,之后退出容器。现在可以生成一个新的docker 镜像了。

    3.配置完成后,进行打包成新的镜像
    1)、普通打包镜像
    [root@docker ~]# docker commit test-centos1 centos_sshd
    sha256:6e3330b30dfff5f029f102874e54cfffffbc37dcf2a4eb7304c817148fbc944d
    
    [root@docker ~]# docker images
    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
    centos_sshd                   latest              6e3330b30dff        8 seconds ago       310.1 MB
    docker.io/ubuntu             latest              e4415b714b62        12 days ago         128.1 MB
    

    命令注释:commit: 提交一个具有新配置的容器成为镜像,后面跟容器的name 或者容器Id ,最后是生成新镜像的名字

    2)、设置开机选项打包镜像

    更新:这条命令更方便以后启动,如下:

    [root@docker ~]# docker commit --change='CMD ["/auto_sshd.sh"]' -c "EXPOSE 22" test-centos1 centos_sshd
    sha256:7bb4efd82c4ff1f241cbc57ee45aab1b05d214b1e9fcd51196696c67d480e70b
    

    命令注释: --change : 将后期使用此镜像运行容器时的命令参数、开放的容器端口提前设置好。开启的时候自动运行auto_sshd.sh脚本
    -c "EXPOSE 22" :暴露22端口,默认也是暴露的

    4.验证

    查看镜像,并启动新的容器

    [root@docker ~]# docker images
    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
    centos_sshd                   latest              7bb4efd82c4f        4 minutes ago       310.1 MB
    docker.io/ubuntu             latest              e4415b714b62        12 days ago         128.1 MB
    
    [root@docker ~]# docker run -d -it --name my_centos centos_sshd ec17e553d5c4c60865afeb99df8dfd1f4e7d4ba6e1b0d5516f9127f09d1d6356
    [root@docker ~]# docker ps -a
    CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS           PORTS          NAMES
    ec17e553d5c4        centos_sshd           "/auto_sshd.sh"          6 seconds ago       Up 5 seconds             22/tcp         my_centos
    
    

    进行ssh测试,先查看一下该容器的ip,之后ssh。ok

    [root@docker ~]# docker exec -it my_centos /bin/bash
    [root@docker ~]# ssh root@172.17.0.4  //或者ssh 127.17.0.4
    RSA key fingerprint is 87:88:07:12:ac:0a:90:28:10:e1:9e:eb:1f:d6:c9:9d.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '172.17.0.4' (RSA) to the list of known hosts.
    root@172.17.0.4's password: 
    Last login: Tue Nov 29 16:00:49 2016 from gateway
    
    [root@ec17e553d5c4 ~]# w   
     16:34:17 up 63 days,  7:49,  1 user,  load average: 0.00, 0.02, 0.05 USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    gateway          16:34    1.00s  0.00s  0.00s w [root@ec17e553d5c4 ~]# ping gateway
    PING gateway (172.17.0.1) 56(84) bytes of data. 64 bytes from gateway (172.17.0.1): icmp_seq=1 ttl=64 time=0.048 ms
    

    2.利用Dockerfile文件自动定制

    1、创建Dockerfile文件

    [root@localhost ~]#  mkdir centos7-dockerfile
    [root@localhost ~]#  cd centos7-dockerfile/
    [root@localhost ~]#  cat Dockerfile 
    # The dockerfile has Change add sshd services on Centos7.0
    #centos7:latest image
    FROM centos:latest
    
    MAINTAINER Yifeng,http://www.cnblogs.com/hanyifeng
    
    #Install sshd net-tools
    RUN yum install openssh-server net-tools -y
    RUN mkdir /var/run/sshd
    
    #Set password for root
    RUN echo 'root:iloveworld' | chpasswd
    RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    
    #Set history record
    ENV HISTTIMEFORMAT "%F %T  "
    
    #Fix sshd service:Read from socket failed: Connection reset by peer?
    RUN ssh-keygen -A
    
    #Change timezone CST
    RUN \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    #Open 22 port
    EXPOSE 22
    
    #Auto running sshd service
    CMD ["/usr/sbin/sshd","-D"]
    ``
    ###2.执行build 创建镜像
    

    docker build -t centos_new .

    ###3.查看镜像列表,并创建容器
    输入密码即可
    

    [root@localhost centos7-dockerfile]# docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    centos_new latest 37244727ac6e About a minute ago 283MB
    centos latest 1e1148e4cc2c 3 months ago 202MB
    [root@localhost centos7-dockerfile]# docker run -it -d --name contain_new centos_new
    d99be6d58a1cba6dbcd0d2cd2448a557faf14ee7897bafe1ef60b04875901cd3
    [root@localhost centos7-dockerfile]# docker exec contain_new hostname -i
    172.17.0.2
    [root@localhost centos7-dockerfile]# ssh 127.17.0.2
    root@127.17.0.2's password:

    相关文章

      网友评论

          本文标题:Docker基本命令操作

          本文链接:https://www.haomeiwen.com/subject/jgilmqtx.html