Docker是一种开源且流行的操作系统级虚拟化技术(通常称为“容器化”),主要在Linux和Windows上运行。Docker通过使用容器使创建、部署和运行应用程序变得更加简单。
有了容器,开发人员(和系统管理员)可以将一个应用程序及其运行所需的一切内容打包起来 – 包括代码、运行时、库、环境变量和配置文件,并将其作为一个包一起发布。是的,就是这么棒!
在本文中,我们将向您展示如何在Ubuntu发行版上安装Docker CE(社区版),创建和运行Docker容器。
在Ubuntu中安装Docker CE(社区版)
1.要安装Docker CE,首先需要使用以下命令从系统中删除旧版本的Docker,这些版本被称为docker
、docker.io
或docker-engine
。
$ sudo apt-get remove docker docker-engine docker.io containerd runc
2.接下来,您需要设置Docker存储库,以便使用以下命令从存储库安装和更新Docker。
$ sudo apt-get update $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
3.使用以下命令更新apt软件包索引并安装最新版本的Docker CE。
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: aufs-tools cgroupfs-mount pigz The following NEW packages will be installed: aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli pigz 0 upgraded, 6 newly installed, 0 to remove and 167 not upgraded. Need to get 50.7 MB of archives. After this operation, 243 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 pigz amd64 2.4-1 [57.4 kB] Get:2 https://download.docker.com/linux/ubuntu bionic/stable amd64 containerd.io amd64 1.2.4-1 [19.9 MB] Get:3 http://archive.ubuntu.com/ubuntu bionic/universe amd64 aufs-tools amd64 1:4.9+20170918-1ubuntu1 [104 kB] Get:4 http://archive.ubuntu.com/ubuntu bionic/universe amd64 cgroupfs-mount all 1.4 [6,320 B] Get:5 https://download.docker.com/linux/ubuntu bionic/stable amd64 docker-ce-cli amd64 5:18.09.3~3-0~ubuntu-bionic [13.1 MB] Get:6 https://download.docker.com/linux/ubuntu bionic/stable amd64 docker-ce amd64 5:18.09.3~3-0~ubuntu-bionic [17.4 MB] Fetched 50.7 MB in 7s (7,779 kB/s) ...
4.成功安装Docker CE软件包后,服务应该会自动启动并自动启用以在系统启动时启动,您可以使用以下命令检查其状态。
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-03-06 08:06:42 UTC; 2min 18s ago Docs: https://docs.docker.com Main PID: 5274 (dockerd) Tasks: 8 CGroup: /system.slice/docker.service └─5274 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562587408Z" level=warning msg="Your kernel does not support cgroup rt runtime" Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562767803Z" level=warning msg="Your kernel does not support cgroup blkio weight" Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562966844Z" level=warning msg="Your kernel does not support cgroup blkio weight_device" Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.565298457Z" level=info msg="Loading containers: start." Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.950942467Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a prefer Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.036964493Z" level=info msg="Loading containers: done." Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.156279378Z" level=info msg="Docker daemon" commit=774a1f4 graphdriver(s)=overlay2 version=18.09.3 Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.157145045Z" level=info msg="Daemon has completed initialization" Mar 06 08:06:42 tecmint systemd[1]: Started Docker Application Container Engine. Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.224229999Z" level=info msg="API listen on /var/run/docker.sock"
5. 最后,通过运行hello-world
镜像来验证Docker CE是否已正确安装。
$ sudo docker run hello-world
Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
在Ubuntu中学习基本的Docker命令
6. 要获取有关Docker的信息,请运行以下命令。
$ sudo docker info Kernel Version: 5.0.0-050000-generic Operating System: Ubuntu 18.04.1 LTS OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 1.452GiB Name: tecmint ID: FWSB:IRIF:DYL7:PRB5:Y66E:37MY:ISPO:HZVY:6YJO:2IYL:TO6Y:GNB7 Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false Product License: Community Engine
7. 要获取有关Docker版本的信息,请运行以下命令。
$ sudo docker version Client: Version: 18.09.3 API version: 1.39 Go version: go1.10.8 Git commit: 774a1f4 Built: Thu Feb 28 06:53:11 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 18.09.3 API version: 1.39 (minimum version 1.12) Go version: go1.10.8 Git commit: 774a1f4 Built: Thu Feb 28 05:59:55 2019 OS/Arch: linux/amd64 Experimental: false
8. 要获取所有可用的Docker命令列表,请在终端上运行docker
。
$ docker Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/home/tecmint/.docker") -D, --debug Enable debug mode -H, --host list Daemon socket(s) to connect to -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info") --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "/home/tecmint/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/home/tecmint/.docker/cert.pem") --tlskey string Path to TLS key file (default "/home/tecmint/.docker/key.pem") --tlsverify Use TLS and verify the remote -v, --version Print version information and quit Management Commands: builder Manage builds config Manage Docker configs container Manage containers engine Manage the docker engine image Manage images network Manage networks node Manage Swarm nodes plugin Manage plugins secret Manage Docker secrets service Manage services stack Manage Docker stacks swarm Manage Swarm system Manage Docker trust Manage trust on Docker images volume Manage volumes ....
在Ubuntu中下载Docker镜像
9. 要运行Docker容器,首先需要从Docker Hub下载镜像 – 它从其存储库中提供免费镜像。
例如,要下载名为CentOS 7
的Docker镜像,请执行以下命令。
$ sudo docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 5227 [OK] ansible/centos7-ansible Ansible on Centos7 120 [OK] jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 107 [OK] consol/centos-xfce-vnc Centos container with "headless" VNC session… 81 [OK] imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 50 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 47 tutum/centos Simple CentOS docker image with SSH access 43 gluster/gluster-centos Official GlusterFS Image [ CentOS-7 + Glust… 40 [OK] openshift/base-centos7 A Centos7 derived base image for Source-To-I… 39 centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 37 centos/python-35-centos7 Platform for building and running Python 3.5… 33 kinogmt/centos-ssh CentOS with SSH 26 [OK] openshift/jenkins-2-centos7 A Centos7 based Jenkins v2.x image for use w… 20 centos/php-56-centos7 Platform for building and running PHP 5.6 ap… 19 pivotaldata/centos-gpdb-dev CentOS image for GPDB development. Tag names… 10 openshift/wildfly-101-centos7 A Centos7 based WildFly v10.1 image for use … 6 openshift/jenkins-1-centos7 DEPRECATED: A Centos7 based Jenkins v1.x ima… 4 darksheer/centos Base Centos Image -- Updated hourly 3 [OK] pivotaldata/centos Base centos, freshened up a little with a Do… 2 pivotaldata/centos-mingw Using the mingw toolchain to cross-compile t… 2 pivotaldata/centos-gcc-toolchain CentOS with a toolchain, but unaffiliated wi… 1 openshift/wildfly-81-centos7 A Centos7 based WildFly v8.1 image for use w… 1 blacklabelops/centos CentOS Base Image! Built and Updates Daily! 1 [OK] smartentry/centos centos with smartentry 0 [OK] jameseckersall/sonarr-centos Sonarr on CentOS 7 0 [OK]
10. 根据您的需求确定要运行的镜像后,通过运行以下命令将其下载到本地(在本例中下载并使用CentOS镜像)。
$ docker pull centos Using default tag: latest latest: Pulling from library/centos a02a4930cb5d: Pull complete Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426 Status: Downloaded newer image for centos:latest
11. 要列出主机上所有可用的Docker镜像,请运行以下命令。
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest fce289e99eb9 2 months ago 1.84kB centos latest 1e1148e4cc2c 3 months ago 202MB
12. 如果您不再需要一个Docker镜像,可以使用以下命令将其删除。
$ sudo docker rmi centos Untagged: centos:latest Untagged: centos@sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426 Deleted: sha256:1e1148e4cc2c148c6890a18e3b2d2dde41a6745ceb4e5fe94a923d811bf82ddb Deleted: sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956
在Ubuntu中运行Docker容器
13.为了创建和运行Docker容器,首先需要在下载的CentOS
镜像中运行命令,因此一个基本命令是使用cat命令来检查容器内的发行版本文件,如下所示。
$ docker run centos cat /etc/issue
14.要再次运行容器,首先需要通过运行以下命令获取容器ID或名称,这将显示正在运行和停止的容器列表:
$ sudo docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0ddfa81c5779 centos "cat /etc/issue" About a minute ago Exited (0) About a minute ago elastic_shirley
15.一旦获得容器ID或名称,您可以使用以下命令启动容器:
$ sudo docker start 0ddfa81c5779 OR $ sudo docker start elastic_shirley
这里,字符串0ddfa81c5779
代表容器ID,elastic_shirley
代表容器名称。
16.要停止运行的容器,请运行docker stop
命令,并指定容器ID或名称。
$ sudo docker stop 0ddfa81c5779 OR $ sudo docker stop elastic_shirley
17.一个更好的方法,这样您就不必记住容器ID,是为每个创建的容器定义一个唯一名称,使用--name
选项如下所示。
$ docker run --name myname centos cat /etc/issue
18.为了连接并运行Linux命令到容器中,发出以下命令。
$ docker run -it centos bash [root@6213ec547863 /]# uname -a Linux 6213ec547863 5.0.0-050000-generic #201903032031 SMP Mon Mar 4 01:33:18 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux [root@6213ec547863 /]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
19.要退出并返回到主机,您必须键入exit
命令,如下所示。
$ exit
这就是关于基本容器操作的全部内容。如果您对本文有任何问题或意见,请使用下面的反馈表格与我们联系。
Source:
https://www.tecmint.com/install-docker-and-run-docker-containers-in-ubuntu/