前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系列1 Docker基础命令

系列1 Docker基础命令

作者头像
公众号: 云原生生态圈
发布2021-11-15 18:14:05
2750
发布2021-11-15 18:14:05
举报

课题简述

简单入门docker的基本使用,文本介绍docker命令的基础使用,docker镜像库,网络,存储的一些知识

环境

  • ubuntu16.04
  • python3.6
  • Docker version 1.13.1
  • Docker ID(为了镜像在公共仓库的pull,push)

一、Install Docker

1.1 安装docker-ce

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv \
              --keyserver hkp://ha.pool.sks-keyservers.net:80 \
              --recv-keys 58118E89F3A912897C070ADBF76221572C52609D#append this to /etc/apt/sources.listdeb https://apt.dockerproject.org/repo ubuntu-xenial main
sudo apt-get update
apt-cache policy docker-engine
apt-get upgrade
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
sudo apt-get install docker-engine

1.2 默认安装系统自带的docker

apt-get update
apt-get install docker.io

1.3 配置加速器

vim /etc/docker/daemon.json
{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}

1.4 了解docker安装目录

编号

路径名

意义

1

/var/lib/docker/devicemapper/devicemapper/data

用来存储相关的存储池数据

2

/var/lib/docker/devicemapper/devicemapper/metadata

用来存储相关的元数据

3

/var/lib/docker/devicemapper/metadata/

用来存储 device_id、大小、以及传输_id、初始化信息

4

/var/lib/docker/devicemapper/mnt

用来存储挂载信息

5

/var/lib/docker/container/

用来存储容器信息

6

/var/lib/docker/graph/

用来存储镜像中间件及镜像的元数据信息、以及依赖信息

7

/var/lib/docker/repositores-devicemapper

用来存储镜像基本信息

8

/var/lib/docker/tmp

docker临时目录

9

/var/lib/docker/trust

docker信任目录

10

/var/lib/docker/volumes

docker卷目录

二、Docker基础命令

2.1 命令的分类

子命令分类

子命令

与镜像相关的命令

images,search,pull,push,login,logout,commit,build,rmi(127)

容器生命周期管理

create,exec,kill,pause,restart,rm,run,start,stop,unpause

环境信息相关

info,version

系统维护相关

images,inspect,build,commit,pause/unpause,ps,rm,rmi,run,start/stop/restart,top,kill,...

日志信息相关

events,history,logs

Docker ID 相关

login,logout

与容器相关的命令

run, kill, stop, start, restart, logs, export, import

2.2 命令的基础使用

2.2.1 使用man,help学习docker命令
man docker subcommand
docker help subcommand
docker command --help
2.2.2 Docker镜像的操作
  • 显示镜像信息
# 列出镜像的信息docker images# 自定义表显示镜像的信息docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
  • 查询镜像
    • docker search IMAGE_NAME
    • search images from docker hub
  • 镜像的拉取删除与修改,重命名,创建
# 拉取镜像docker pull busybox# docker ID登录➜  ~ docker login -u bluerdocker   Password: Login Succeeded# 镜像重命名(bluerdocker是我的docker ID)docker tag busybox bluerdocker/busybox:latest# 上传镜像➜  ~ docker push bluerdocker/busyboxThe push refers to a repository [docker.io/bluerdocker/busybox]0271b8eebde3: Mounted from library/busybox latest: digest: sha256:91ef6c1c52b166be02645b8efee30d1ee65362024f7da41c404681561734c465 size: 527# 删除镜像# 删除镜像时,如果存在打标签的镜像,那么只有到最后有一个镜像被删除时,镜像才被删除➜  ~ docker rmi bluerdocker/busyboxUntagged: bluerdocker/busybox:latestUntagged: bluerdocker/busybox@sha256:91ef6c1c52b166be02645b8efee30d1ee65362024f7da41c404681561734c465➜  ~ docker rmi busybox Untagged: busybox:latestUntagged: busybox@sha256:bbc3a03235220b170ba48a157dd097dd1379299370e1ed99ce976df0355d24f0Deleted: sha256:6ad733544a6317992a6fac4eb19fe1df577d4dec7529efec28a5bd0edad0fd30Deleted: sha256:0271b8eebde3fa9a6126b1f2335e170f902731ab4942f9f1914e77016540c7bb# 从已有dockerfile创建镜像(download from docker hub)docker build -t nginx/marion:v1 -m 1024 .➜  dockerfile1 docker imagesREPOSITORY            TAG                 IMAGE ID            CREATED             SIZEnginx/marion          v1                  64220f7e39ab        2 minutes ago       108 MB

还有一些其他的命令

build       Build an image from a Dockerfile
 history     Show the history of an image
 import      Import the contents from a tarball to create a filesystem image
 inspect     Display detailed information on one or more images
 load        Load an image from a tar archive or STDIN
 ls          List images
 prune       Remove unused images
 pull        Pull an image or a repository from a registry
 push        Push an image or a repository to a registry
 rm          Remove one or more images
 save        Save one or more images to a tar archive (streamed to STDOUT by default)
 tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
 
docker image save nginx -o nginx.tar
2.2.3 容器的生命周期管理
Commands:
 attach      # 进入一个正在运行的容器,不建议使用
 commit      # 把一个正在运行的容器打包成一个新的镜像
 cp          # 在容器与本地文件系统之间进行文件/文件夹拷贝
 create      # 创建一个新的容器
 diff        # 检查运行的容器与所使用镜像之间的变化
 exec        # 进入正在运行的容器
 export      # 把一个容器的文件系统归档成一个tar包
 inspect     # 显示一个/多个容器的详细信息
 kill        # 杀掉一个/多个正在运行的容器
 logs        # 查看容器中进程的运行日志
 ls          # 列出容器列表
 pause       # 暂停一个/多个容器中的所有进程
 port        # 显示容器与docker host的端口映射
 prune       # 移除所有所有停掉的容器
 rename      # 重命名容器
 restart     # 重启容器
 rm          # 删除一个或多个容器
 run         # 运行一个容器
 start       # 启动一个或多个容器
 stats       # 显示容器资源的使用信息
 stop        # 停止一个或多个容器
 top         # 显示容器中的进程
 unpause     # 恢复暂停的容器
 update      # 更新容器的配置(cpu,mem,重启的策略等)
 wait        # 阻塞运行直到容器停止,然后打印出它的退出代码
2.2.4 run wordpress on docker
  • Deploy MYSQL
docker pull mysql
  • 挂载卷保存数据文件
mkdir -p /mysql/data
chmod -p 777 /mysql/data
  • MySQL使用过程中的环境变量 Num|Env Variable| Description ---|---|--- 1|MYSQL_ROOT_PASSWORD|root用户的密码 2|MYSQL_DATABASE|创建一个数据库 3|MYSQL_USER,MYSQL_PASSWORD|创建一个用户以及用户密码 4|MYSQL_ALLOW_EMPTY_PASSWORD|允许空密码
  • 创建网络
docker network create --subnet 10.0.0.0/24 --gateway 10.0.0.1 marion
docker network ls➜  ~ docker network ls | grep marion
6244609a83bb        marion              bridge              local
  • 创建MYSQL container
➜  ~ docker run -v /mysql/data:/var/lib/mysql --name mysqldb --restart=always -p 3306:3306 -e MYSQL_DATABASE='wordpress' -e MYSQL_USER='marion' -e MYSQL_PASSWORD='marion' -e MYSQL_ALLOW_EMPTY_PASSWORD='yes' -e MYSQL_ROOT_PASSWORD='marion' --network=marion --ip=10.0.0.2 -d mysql➜  ~ docker ps -a➜  marion docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
3013c407c74b        mysql               "docker-entrypoint..."   4 minutes ago       Up 4 minutes        0.0.0.0:3306->3306/tcp   mysqldb➜  marion docker exec -it 3013c407c74b /bin/bash
root@3013c407c74b:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   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
9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
   link/ether 02:42:0a:00:00:02 brd ff:ff:ff:ff:ff:ff
   inet 10.0.0.2/24 scope global eth0
      valid_lft forever preferred_lft forever
   inet6 fe80::42:aff:fe00:2/64 scope link
      valid_lft forever preferred_lft forever
root@3013c407c74b:/# apt-get install net-tools -y
root@3013c407c74b:/# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.11:45485        0.0.0.0:*               LISTEN      -              
tcp6       0      0 :::3306                 :::*                    LISTEN      -              
udp        0      0 127.0.0.11:48475        0.0.0.0:*                           -              
root@3013c407c74b:/# mysql -u marion -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 MySQL Community Server (GPL)Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;+--------------------+
| Database           |
+--------------------+
| information_schema |
| wordpress          |
+--------------------+
2 rows in set (0.01 sec)mysql> 
  • 3、运行nginx-php
mkdir -p /var/www/htmldocker run --name php7 -p 9000:9000 -p 80:80 -v /var/www/html:/usr/local/nginx/html --restart=always --network=marion --ip=10.0.0.3 -d skiychan/nginx-php7
docker ps
docker exec -it cfb9556b71b3 /bin/bash
cd /usr/local/php/etc
vim php.inidate.timezone =Asia/Shanghai

* 编辑nginx配置文件/usr/local/nginx/conf/nginx.conf

user www www;  #modify
worker_processes auto;  #modify#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;error_log /var/log/nginx_error.log crit;  #add#pid        logs/nginx.pid;pid /var/run/nginx.pid;  #modify
worker_rlimit_nofile 51200;events {
   use epoll;
   worker_connections 51200;
   multi_accept on;
}http {
   include       mime.types;
   default_type  application/octet-stream;   #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
   #                  '$status $body_bytes_sent "$http_referer" '
   #                  '"$http_user_agent" "$http_x_forwarded_for"';   #access_log  logs/access.log  main;   client_max_body_size 100m;  #add
   sendfile        on;
   #tcp_nopush     on;   #keepalive_timeout  0;
   keepalive_timeout  120; #65;   #gzip  on;   server {
       listen       80;
       server_name  localhost;       #charset koi8-r;       #access_log  logs/host.access.log  main;       root   /usr/local/nginx/html;
       index  index.php index.html index.htm;       location / {
           try_files $uri $uri/ /index.php?$args;
       }       #error_page  404              /404.html;       # redirect server error pages to the static page /50x.html
       #
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   html;
       }       location ~ \.php$ {
           root           /usr/local/nginx/html;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
           include        fastcgi_params;
       }
   }   #add
   ##########################vhost#####################################
   include vhost/*.conf;}daemon off;
  • 测试配置文件是否有问题
[root@cfb9556b71b3 sbin]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  • 重新加载配置文件
[root@cfb9556b71b3 sbin]# /usr/local/nginx/sbin/nginx -s reload
[root@cfb9556b71b3 sbin]#

三、Dcokerfile

FROM:指定镜像MAINTAINER:维护者信息COPY:从build context复制到镜像copy src destcopy [“src”,”dest”]src只能是build context中的文件ADD:与copy类似,如果是归档以及压缩的文件,会被自动的解压ENV:设置环境变量,环境变量可被后面的指令使用EXPOSE:指定容器中的进程监听某个端口,VOLUME:将文件或者目录声明为卷WORKDIR:为RUN,CMD,ENTERPOINT,ADD或COPY指令设置镜像中的当前工作目录RUN:在容器内运行指定的命令ENTERPOINT:设置容器启动时运行的命令
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生生态圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 课题简述
    • 环境
    • 一、Install Docker
      • 1.1 安装docker-ce
        • 1.2 默认安装系统自带的docker
          • 1.3 配置加速器
            • 1.4 了解docker安装目录
            • 二、Docker基础命令
              • 2.1 命令的分类
                • 2.2 命令的基础使用
                  • 2.2.1 使用man,help学习docker命令
                  • 2.2.2 Docker镜像的操作
                  • 2.2.3 容器的生命周期管理
                  • 2.2.4 run wordpress on docker
              • 三、Dcokerfile
              相关产品与服务
              云数据库 SQL Server
              腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档