雖然Docker官方推薦將docker運行在Ubuntu系統上,但是因爲在生產環境中大部分用的還是CentOS(或者Redhat),所以這裏也僅記錄在CentOS上安裝Docker的方法。
Docker安裝
方法一:Yum安裝
1、更新yum包
# yum update
2、安裝必要依賴包
# yum install -y yum-utils device-mapper-persistent-data lvm2
3、添加docker社區版yum源
# wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
4、使用yum安裝docker
# yum install -y docker-ce docker-ce-cli containerd.io
注:以上命令爲安裝最新版(latest),如果要安裝老版本,可以使用如下命令:
# yum list docker-ce --showduplicates | sort -r # 列出docker-ce的所有版本
# yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io # 根據上一條命令的結果,選擇對應的版本安裝
方法二:使用安裝腳本安裝
1、更新yum包
# yum update
2、安裝必要依賴包
# yum install -y yum-utils device-mapper-persistent-data lvm2
3、獲取安裝腳本
# curl -fsSL https://get.docker.com -o get-docker.sh
4、執行腳本安裝
# sh get-docker.sh
注:如果要授權給非root用戶使用docker,則需使用“sudo usermod -aG docker your-user”命令將非root用戶添加至docker用戶組中。
方法三:使用RPM包安裝
1、更新yum包
# yum update
2、安裝必要依賴包
# yum install -y yum-utils device-mapper-persistent-data lvm2
3、下載rpm包
# wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/[package_name].rpm
4、安裝rpm包
# yum install /path/to/[package_name].rpm
啓動Docker服務:
[root@centos7 ~]# systemctl start docker
[root@centos7 ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
Docker版本:
[root@centos7 ~]# docker version
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64
Go version: go1.9.4
Git commit: 8633870/1.13.1
Built: Fri Sep 28 19:45:08 2018
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64
Go version: go1.9.4
Git commit: 8633870/1.13.1
Built: Fri Sep 28 19:45:08 2018
OS/Arch: linux/amd64
Experimental: false
Docker從1.13版本之後採用時間線的方式作爲版本號,分爲社區版CE和企業版EE。
社區版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施、容器、插件等。
社區版按照stable和edge兩種方式發佈,每個季度更新stable版本,如17.06,17.09;每個月份更新edge版本,如17.09,17.10。
查看docker信息:
[root@centos7 ~]# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.13.1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: 5eda6f6fd0c2884c2c8e78a6e7119e8d0ecedb77 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
seccomp
WARNING: You're not using the default seccomp profile
Profile: /etc/docker/seccomp.json
Kernel Version: 3.10.0-693.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 2
Total Memory: 3.686 GiB
Name: centos7.contoso.com
ID: ANO7:53VI:M4ZH:G7KZ:JOZI:A7WC:YZSA:C6JK:5NSB:BCX5:6SMH:TU2S
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)
查看Docker相關目錄:
[root@centos7 ~]# rpm -ql docker
/etc/docker
/etc/docker/certs.d
/etc/docker/certs.d/redhat.com
/etc/docker/certs.d/redhat.com/redhat-ca.crt
/etc/docker/certs.d/redhat.io
/etc/docker/certs.d/redhat.io/redhat-ca.crt
/etc/docker/certs.d/registry.access.redhat.com
/etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt
/etc/docker/daemon.json
/etc/docker/seccomp.json
/etc/sysconfig/docker-network
/etc/sysconfig/docker-storage
/etc/sysconfig/docker-storage-setup
/usr/bin/docker-containerd-current
/usr/bin/docker-containerd-shim-current
/usr/bin/docker-ctr-current
/usr/bin/docker-storage-setup
/usr/bin/dockerd-current
/usr/lib/systemd/system/docker-cleanup.service
/usr/lib/systemd/system/docker-cleanup.timer
/usr/lib/systemd/system/docker-storage-setup.service
/usr/lib/systemd/system/docker.service
/usr/lib/udev/rules.d/80-docker.rules
/usr/libexec/docker
/usr/libexec/docker/docker-init-current
/usr/libexec/docker/docker-proxy-current
/usr/libexec/docker/docker-runc-current
/usr/share/bash-completion/completions/docker
/usr/share/doc/docker-1.13.1
/usr/share/doc/docker-1.13.1/AUTHORS
/usr/share/doc/docker-1.13.1/CHANGELOG.md
/usr/share/doc/docker-1.13.1/CONTRIBUTING.md
/usr/share/doc/docker-1.13.1/MAINTAINERS
/usr/share/doc/docker-1.13.1/NOTICE
/usr/share/doc/docker-1.13.1/README-vim-syntax.md
/usr/share/doc/docker-1.13.1/README.md
/usr/share/fish/vendor_completions.d
/usr/share/fish/vendor_completions.d/docker.fish
/usr/share/licenses/docker-1.13.1
/usr/share/licenses/docker-1.13.1/LICENSE
/usr/share/licenses/docker-1.13.1/LICENSE-vim-syntax
/usr/share/man/man1/docker-attach.1.gz
/usr/share/man/man1/docker-build.1.gz
/usr/share/man/man1/docker-commit.1.gz
/usr/share/man/man1/docker-cp.1.gz
/usr/share/man/man1/docker-create.1.gz
/usr/share/man/man1/docker-diff.1.gz
/usr/share/man/man1/docker-events.1.gz
/usr/share/man/man1/docker-exec.1.gz
/usr/share/man/man1/docker-export.1.gz
/usr/share/man/man1/docker-history.1.gz
/usr/share/man/man1/docker-images.1.gz
/usr/share/man/man1/docker-import.1.gz
/usr/share/man/man1/docker-info.1.gz
/usr/share/man/man1/docker-inspect.1.gz
/usr/share/man/man1/docker-kill.1.gz
/usr/share/man/man1/docker-load.1.gz
/usr/share/man/man1/docker-login.1.gz
/usr/share/man/man1/docker-logout.1.gz
/usr/share/man/man1/docker-logs.1.gz
/usr/share/man/man1/docker-network-connect.1.gz
/usr/share/man/man1/docker-network-create.1.gz
/usr/share/man/man1/docker-network-disconnect.1.gz
/usr/share/man/man1/docker-network-inspect.1.gz
/usr/share/man/man1/docker-network-ls.1.gz
/usr/share/man/man1/docker-network-rm.1.gz
/usr/share/man/man1/docker-pause.1.gz
/usr/share/man/man1/docker-port.1.gz
/usr/share/man/man1/docker-ps.1.gz
/usr/share/man/man1/docker-pull.1.gz
/usr/share/man/man1/docker-push.1.gz
/usr/share/man/man1/docker-rename.1.gz
/usr/share/man/man1/docker-restart.1.gz
/usr/share/man/man1/docker-rm.1.gz
/usr/share/man/man1/docker-rmi.1.gz
/usr/share/man/man1/docker-run.1.gz
/usr/share/man/man1/docker-save.1.gz
/usr/share/man/man1/docker-search.1.gz
/usr/share/man/man1/docker-start.1.gz
/usr/share/man/man1/docker-stats.1.gz
/usr/share/man/man1/docker-stop.1.gz
/usr/share/man/man1/docker-storage-setup.1.gz
/usr/share/man/man1/docker-tag.1.gz
/usr/share/man/man1/docker-top.1.gz
/usr/share/man/man1/docker-unpause.1.gz
/usr/share/man/man1/docker-update.1.gz
/usr/share/man/man1/docker-version.1.gz
/usr/share/man/man1/docker-wait.1.gz
/usr/share/man/man1/docker.1.gz
/usr/share/man/man5/Dockerfile.5.gz
/usr/share/man/man5/docker-config-json.5.gz
/usr/share/man/man8/dockerd.8.gz
/usr/share/vim/vimfiles/doc
/usr/share/vim/vimfiles/doc/dockerfile.txt
/usr/share/vim/vimfiles/ftdetect
/usr/share/vim/vimfiles/ftdetect/dockerfile.vim
/usr/share/vim/vimfiles/syntax
/usr/share/vim/vimfiles/syntax/dockerfile.vim
/usr/share/zsh/site-functions
/usr/share/zsh/site-functions/_docker
/var/lib/docker
其中,部分目錄如下:
/etc/docker:Docker後臺服務進程相關配置主目錄,包含certs.d目錄和json文件
/etc/docker/certs.d:Docker證書目錄,在搭建docker私有倉庫時會用到
/etc/sysconfig/docker-network:指定Docker服務的網絡配置選項的文件
/etc/sysconfig/docker-storage:指定Docker服務的存儲配置選項的文件
/etc/sysconfig/docker-storage-setup:指定Docker後端存儲配置選項的文件
/usr/share/doc/docker-1.13.1:存放Docker相關文檔的目錄
/var/lib/docker:Docker容器和鏡像的存放目錄
Docker卸載:
1、停止Docker服務
# systemctl stop docker
# systemctl disable docker
2、卸載docker-ce安裝包
# yum remove docker-ce -y
3、清理docker目錄
# /var/lib/docker
運行第一個Docker:
# docker run hello-world